diff -Nru tracker-0.15.1/ChangeLog tracker-0.15.2/ChangeLog --- tracker-0.15.1/ChangeLog 2013-01-24 17:28:59.000000000 +0000 +++ tracker-0.15.2/ChangeLog 2013-02-15 11:39:43.000000000 +0000 @@ -1,3 +1,187 @@ +2013-02-15 Martyn Russell + + Release 0.15.2 + + Merge branch 'fts4-fixes' + +2013-02-14 Martyn Russell + + ontology: Add a comment that tracker:fulltextNoLimit is now deprecated + Could not mark this as deprecated because it's not a class + + libtracker-fts: Fix unit test ontologies, removed tracker:fulltextNoLimit + + functional-tests: Removed tracker:fulltextNoLimit + + libtracker-data: Removed tracker:fulltextNoLimit + + tracker-sparql: Fixed documentation, removed tracker:fulltextNoLimit + + ontology: Remove use of tracker:fulltextNoLimit now it's deprecated + +2013-02-14 Carlos Garnacho + + tests: tweak FTS tests to cope with the word length changes + This has caused some tests to return more results than before, + so add these extra results to the expected output, as the tests + still prove their point. + + fts: Remove min word length limit from configuration + It isn't used anymore, so remove the dangling setting. + +2013-02-11 Martyn Russell + + Merge branch 'fts4' + +2013-02-08 Carlos Garnacho + + Bump database version + This is needed after the fts4 changes + +2013-02-06 Martyn Russell + + libtracker-miner: Fixed GNOME password provider using libsecret + - "user" --> "username" for the attributes lookup + - Was checking for SecretItem != NULL to error up the stack + + Thanks to Stef Walter for the help here. + +2013-02-05 Martyn Russell + + tracker-info: Fixed memory leak where urn wasn't freed. + + tracker-info: Fixed memory leak when using prefixes for shorthand properties + e.g. nie:url instead of fully qualified URLs + + tracker-sparql: Support fts:offsets(?urn) with shorthand properties + e.g. nie:title:0 nid3:contentType:24 nid3:contentType:43 + +2013-02-04 Martyn Russell + + libtracker-data: Use g_hash_table_unref() not _destroy() + + libtracker-data: Use a g_message() for cases where FTS is disabled + +2013-02-04 Carlos Garnacho + + tracker-needle: display snippet where available + + Handle FTS queries more generically + FTS functions and other SQL functions like COUNT() don't + mix well, so handle it more generically by joining with the + FTS table at the outmost level, so those functions are handled + separately. + + Use fts4 external content tables on Tracker FTS + FTS support on Tracker is now implemented using external content + support available in sqlite >= 3.7.9 FTS4. + + FTS tables created this way fetch data from a single table/view, + for this purpose an intermediate view has been created to + interface with the FTS table. As this view is mainly queried by + ID (both when populating the FTS contents, and when querying + throught the FTS table), queries are fast enough on it. + + As FTS indirectly points to the data on the real tables where tracker + data is stored, strings themselves are stored only once in the database, + so there is no impact in database size when compared to the previous + custom FTS code. Performance had little changes too from testing. + + Detect at configure time whether FTS needs compiling + Recent sqlites (>3.7.9) with FTS support compiled have all + what Tracker requires to handle FTS, so only compile it + optionally if no FTS support was detected in the sqlite library. + + Update FTS code + + libtracker-data: Fix FTS initialization + Use a define that actually exists around tracker_fts_init(), which + also checked for the inverted value. + + libtracker-data: Fix fts detection when constructing SQL + It would previously miss the FTS binding, depending on the order + of the clauses. so something like { ?u fts:match 'foo'; a nie:DataObject } + would return results whereas { ?u a nie:DataObject ; fts:match 'foo' } + didn't. + + libtracker-fts: Fix reentrancy issues in the TrackerTokenizer + The internal TrackerParser must be per-cursor, as several cursors + may be opened simultaneously. + + libtracker-data: Implement fts:snippet() + this function takes up to 3 optional parameters after the + object, the first 2 parameters are the starting/ending text + for the match (defaults to ), and the third one + modifies the ellipsis text (defaults to ...) + + libtracker-data: Perform FTS matching in subquery + The outer query will call the functions that require a full row + scan only with the elements returned by the inner query, so + it would perform better with OFFSET and LIMIT + + fts: Respect max-words configuration setting + + libtracker-data: Gather FTS changes to perform a single insert/update per ID + + libtracker-data: remove useless FTS functions + commit/rollback should happen now with the rest of the + operations, and update_init() isn't necessary anymore. + + libtracker-data: Cope with ontology changes in the FTS table + If a new property is with tracker:fulltextIndexed, we need to add + a new column for it in the FTS table. + + libtracker-fts: Add a way to modify FTS table columns + As ALTER TABLE on virtual tables is only able to do renamings, + resort to creating a temporary table, and dump the old values + into the new table, which is then renamed. + + libtracker-fts: Add tracker_offsets() sqlite function + This function takes the offsets() output and the FTS property + names in order to produce the output as expected by Tracker. + the fts:offsets() sparql function has been adapted to use it + underneath + + libtracker-fts: Add the tracker_rank() sqlite function + This is now used in FTS searches to provide the rank based on + the matched columns and their respective property weight. + + libtracker-data: Create several columns for FTS data + there is now one column per ontology property with FTS enabled, + the column name is that of the property. + + libtracker-data: Add tracker_db_interface_sqlite_fts_delete_text() + This function removes from the FTS table the text from a resourceid/propid + pair. + + libtracker-fts: Implement tokenizer FTS module using TrackerParser + + libtracker-fts: Update to FTS4 + The code isn't yet feature complete, but cleans up the tracker + integration with the FTS module, which means that fts3* files + are taken verbatim from sqlite, and are licenced as such. + +2013-02-03 Jens Georg + + tracker-extract: Port to new gupnp-dlna 2.0 API + GUPnP-DLNA 0.9/0.10 changed a lot internally and thus does not deliver a + GstDiscovererInfo anymore but instead has a new API that allows guessing the + profile from an existing GstDiscovererInfo, so most of the additional logic + can be dropped. + + Fixes GB#691847, tracker-extract: Port to new gupnp-dlna API + +2013-02-02 Martyn Russell + + tracker-extract-playlist: Support nie:title for the playlist + Fixed GB#692409, New: playlist extractor should index playlist title if + available + +2013-02-01 Martyn Russell + + tracker-needle: Find documents (e.g. PDFs) when searching for creators/publishers + Fixes GB#692603, Search can not find pdf files using author names + 2013-01-24 Martyn Russell Release 0.15.1 diff -Nru tracker-0.15.1/NEWS tracker-0.15.2/NEWS --- tracker-0.15.1/NEWS 2013-01-24 17:26:36.000000000 +0000 +++ tracker-0.15.2/NEWS 2013-02-15 11:28:16.000000000 +0000 @@ -1,3 +1,40 @@ +NEW in 0.15.2 - 2013-02-11 +========================== + +The changes are: + + * Build: Required SQLite 3.7.9 (was 3.7.0) for FTS4 support + * New Feature: Full Text Search (FTS) v4 support: + New SPARQL function fts:snippet(?u) + - Snippets provide context around a matched query. + New SPARQL function fts:offsets(?u): + - Offsets provide an index where a matched query is found in context + See tracker-needle for basic use. + * Fixes: GB#691847, tracker-extract: Port to new gupnp-dlna API + * Fixes: GB#692409, playlist extractor should index playlist title if available + * Fixes: GB#692603, Search can not find pdf files using author names + * Ontology: Deprecated tracker:fulltextNoLimit and removed use in all other ontologies + * libtracker-fts: Removed tracker_fts_config_min_word_length() and config option + * libtracker-miner: Fixed GNOME password provider, libsecret expects "user" not "username" + * tracker-info: Fixed memory leak where urn wasn't freed. + * tracker-info: Fixed memory leak when using prefixes for shorthand properties + +Translations: + + * None + +Notes: + + The database version has been incremented, this will force a + reindex for any existing Tracker installation. + + Due to the deprecation of tracker:fulltextNoLimit and removal of + libtracker-fts's config option to set the minimum word length, we + now index ALL small words and rely on stop words to filter + redundant data. We still have the maximum word length checks in + place. + + NEW in 0.15.1 - 2013-01-24 ========================== diff -Nru tracker-0.15.1/config.h.in tracker-0.15.2/config.h.in --- tracker-0.15.1/config.h.in 2013-01-24 17:25:39.000000000 +0000 +++ tracker-0.15.2/config.h.in 2013-02-15 11:28:42.000000000 +0000 @@ -37,6 +37,9 @@ /* Guarantee existence of certain metadata */ #undef GUARANTEE_METADATA +/* Defined if Sqlite has FTS4 compiled in */ +#undef HAVE_BUILTIN_FTS + /* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework. */ #undef HAVE_CFLOCALECOPYCURRENT diff -Nru tracker-0.15.1/configure tracker-0.15.2/configure --- tracker-0.15.1/configure 2013-01-24 17:25:28.000000000 +0000 +++ tracker-0.15.2/configure 2013-02-15 11:28:42.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for tracker 0.15.1. +# Generated by GNU Autoconf 2.69 for tracker 0.15.2. # # Report bugs to . # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='tracker' PACKAGE_TARNAME='tracker' -PACKAGE_VERSION='0.15.1' -PACKAGE_STRING='tracker 0.15.1' +PACKAGE_VERSION='0.15.2' +PACKAGE_STRING='tracker 0.15.2' PACKAGE_BUGREPORT='http://bugzilla.gnome.org/' PACKAGE_URL='http://www.tracker-project.org' @@ -798,6 +798,8 @@ DBUS_SERVICES_DIR HAVE_TRACKER_FTS_FALSE HAVE_TRACKER_FTS_TRUE +HAVE_BUILTIN_FTS_FALSE +HAVE_BUILTIN_FTS_TRUE SQLITE3_LIBS SQLITE3_CFLAGS DISABLE_JOURNAL_FALSE @@ -1832,7 +1834,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures tracker 0.15.1 to adapt to many kinds of systems. +\`configure' configures tracker 0.15.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1902,7 +1904,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of tracker 0.15.1:";; + short | recursive ) echo "Configuration of tracker 0.15.2:";; esac cat <<\_ACEOF @@ -2321,7 +2323,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -tracker configure 0.15.1 +tracker configure 0.15.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2857,7 +2859,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by tracker $as_me 0.15.1, which was +It was created by tracker $as_me 0.15.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3679,7 +3681,7 @@ # Define the identity of the package. PACKAGE='tracker' - VERSION='0.15.1' + VERSION='0.15.2' # Some tools Automake needs. @@ -4901,10 +4903,10 @@ TRACKER_MAJOR_VERSION=0 TRACKER_MINOR_VERSION=15 -TRACKER_MICRO_VERSION=1 +TRACKER_MICRO_VERSION=2 TRACKER_INTERFACE_AGE=0 -TRACKER_BINARY_AGE=1501 -TRACKER_VERSION=0.15.1 +TRACKER_BINARY_AGE=1502 +TRACKER_VERSION=0.15.2 TRACKER_API_VERSION=0.16 TRACKER_BINARY_VERSION=0.16.0 @@ -4929,20 +4931,20 @@ $as_echo "#define TRACKER_MINOR_VERSION 15" >>confdefs.h -$as_echo "#define TRACKER_MICRO_VERSION 1" >>confdefs.h +$as_echo "#define TRACKER_MICRO_VERSION 2" >>confdefs.h $as_echo "#define TRACKER_INTERFACE_AGE 0" >>confdefs.h -$as_echo "#define TRACKER_BINARY_AGE 1501" >>confdefs.h +$as_echo "#define TRACKER_BINARY_AGE 1502" >>confdefs.h # libtool versioning LT_RELEASE=0.15 -LT_CURRENT=1501 +LT_CURRENT=1502 LT_REVISION=0 -LT_AGE=1501 +LT_AGE=1502 LT_CURRENT_MINUS_AGE=0 @@ -17472,13 +17474,14 @@ REST_REQUIRED=0.6 NETWORK_MANAGER_REQUIRED=0.8 GSTREAMER_REQUIRED=0.10.31 -GUPNP_DLNA_REQUIRED=0.7 +GUPNP_DLNA_REQUIRED=0.9.4 # 3.6.11 for sqlite_backup API # 3.6.16 to fix test failures # 3.6.17 for shared cache mode with virtual tables # 3.7.0 for WAL -SQLITE_REQUIRED=3.7.0 +# 3.7.9 for FTS4 content= support +SQLITE_REQUIRED=3.7.9 # Needed to generate .gir files, # see http://live.gnome.org/GnomeGoals/AddGObjectIntrospectionSupport @@ -23808,10 +23811,71 @@ $as_echo "#define HAVE_TRACKER_FTS 1" >>confdefs.h + + OLD_CFLAGS="$CFLAGS" + OLD_LIBS="$LIBS" + CFLAGS="$SQLITE3_CFLAGS" + LIBS="$SQLITE3_LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether SQLite3 has required FTS features" >&5 +$as_echo_n "checking whether SQLite3 has required FTS features... " >&6; } + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +sqlite3 *db; + int rc; + rc = sqlite3_open(":memory:", &db); + if (rc!=SQLITE_OK) return -1; + rc = sqlite3_exec(db, "create table a(text)", 0, 0, 0); + if (rc!=SQLITE_OK) return -1; + rc = sqlite3_exec(db, "create virtual table t using fts4(content='a',text)", 0, 0, 0); + if (rc!=SQLITE_OK) return -1; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + have_builtin_fts4=yes +else + have_builtin_fts4=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_builtin_fts4" >&5 +$as_echo "$have_builtin_fts4" >&6; } + + CFLAGS="$OLD_CFLAGS" + LIBS="$OLD_LIBS" + + if test "x$have_builtin_fts4" = "xyes" ; then + +$as_echo "#define HAVE_BUILTIN_FTS /**/" >>confdefs.h + + fi else $as_echo "#define HAVE_TRACKER_FTS 0" >>confdefs.h + $have_builtin_fts4="disabled" +fi + + if test "$have_builtin_fts4" = "yes"; then + HAVE_BUILTIN_FTS_TRUE= + HAVE_BUILTIN_FTS_FALSE='#' +else + HAVE_BUILTIN_FTS_TRUE='#' + HAVE_BUILTIN_FTS_FALSE= fi if test "$have_tracker_fts" = "yes"; then @@ -26564,12 +26628,12 @@ pkg_cv_GUPNP_DLNA_CFLAGS="$GUPNP_DLNA_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gupnp-dlna-1.1 >= \$GUPNP_DLNA_REQUIRED\""; } >&5 - ($PKG_CONFIG --exists --print-errors "gupnp-dlna-1.1 >= $GUPNP_DLNA_REQUIRED") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gupnp-dlna-2.0 >= \$GUPNP_DLNA_REQUIRED gupnp-dlna-gst-2.0 >= \$GUPNP_DLNA_REQUIRED\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gupnp-dlna-2.0 >= $GUPNP_DLNA_REQUIRED gupnp-dlna-gst-2.0 >= $GUPNP_DLNA_REQUIRED") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_GUPNP_DLNA_CFLAGS=`$PKG_CONFIG --cflags "gupnp-dlna-1.1 >= $GUPNP_DLNA_REQUIRED" 2>/dev/null` + pkg_cv_GUPNP_DLNA_CFLAGS=`$PKG_CONFIG --cflags "gupnp-dlna-2.0 >= $GUPNP_DLNA_REQUIRED gupnp-dlna-gst-2.0 >= $GUPNP_DLNA_REQUIRED" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -26581,12 +26645,12 @@ pkg_cv_GUPNP_DLNA_LIBS="$GUPNP_DLNA_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gupnp-dlna-1.1 >= \$GUPNP_DLNA_REQUIRED\""; } >&5 - ($PKG_CONFIG --exists --print-errors "gupnp-dlna-1.1 >= $GUPNP_DLNA_REQUIRED") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gupnp-dlna-2.0 >= \$GUPNP_DLNA_REQUIRED gupnp-dlna-gst-2.0 >= \$GUPNP_DLNA_REQUIRED\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gupnp-dlna-2.0 >= $GUPNP_DLNA_REQUIRED gupnp-dlna-gst-2.0 >= $GUPNP_DLNA_REQUIRED") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_GUPNP_DLNA_LIBS=`$PKG_CONFIG --libs "gupnp-dlna-1.1 >= $GUPNP_DLNA_REQUIRED" 2>/dev/null` + pkg_cv_GUPNP_DLNA_LIBS=`$PKG_CONFIG --libs "gupnp-dlna-2.0 >= $GUPNP_DLNA_REQUIRED gupnp-dlna-gst-2.0 >= $GUPNP_DLNA_REQUIRED" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -26607,9 +26671,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GUPNP_DLNA_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gupnp-dlna-1.1 >= $GUPNP_DLNA_REQUIRED" 2>&1` + GUPNP_DLNA_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gupnp-dlna-2.0 >= $GUPNP_DLNA_REQUIRED gupnp-dlna-gst-2.0 >= $GUPNP_DLNA_REQUIRED" 2>&1` else - GUPNP_DLNA_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gupnp-dlna-1.1 >= $GUPNP_DLNA_REQUIRED" 2>&1` + GUPNP_DLNA_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gupnp-dlna-2.0 >= $GUPNP_DLNA_REQUIRED gupnp-dlna-gst-2.0 >= $GUPNP_DLNA_REQUIRED" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GUPNP_DLNA_PKG_ERRORS" >&5 @@ -28186,6 +28250,10 @@ as_fn_error $? "conditional \"DISABLE_JOURNAL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_BUILTIN_FTS_TRUE}" && test -z "${HAVE_BUILTIN_FTS_FALSE}"; then + as_fn_error $? "conditional \"HAVE_BUILTIN_FTS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_TRACKER_FTS_TRUE}" && test -z "${HAVE_TRACKER_FTS_FALSE}"; then as_fn_error $? "conditional \"HAVE_TRACKER_FTS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -28795,7 +28863,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by tracker $as_me 0.15.1, which was +This file was extended by tracker $as_me 0.15.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -28862,7 +28930,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -tracker config.status 0.15.1 +tracker config.status 0.15.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -31220,7 +31288,7 @@ Applications: Build with Journal support: $have_tracker_journal - Build with SQLite FTS support: $have_tracker_fts + Build with SQLite FTS support: $have_tracker_fts (built-in FTS: $have_builtin_fts4) Build tracker-preferences: $have_tracker_preferences Build tracker-explorer: $have_tracker_explorer diff -Nru tracker-0.15.1/configure.ac tracker-0.15.2/configure.ac --- tracker-0.15.1/configure.ac 2013-01-24 17:25:23.000000000 +0000 +++ tracker-0.15.2/configure.ac 2013-02-15 11:12:37.000000000 +0000 @@ -13,7 +13,7 @@ # set TRACKER_BINARY_AGE and TRACKER_INTERFACE_AGE to 0. m4_define([tracker_major_version], [0]) m4_define([tracker_minor_version], [15]) -m4_define([tracker_micro_version], [1]) +m4_define([tracker_micro_version], [2]) m4_define([tracker_interface_age], [0]) m4_define([tracker_binary_age], [m4_eval(100 * tracker_minor_version + tracker_micro_version)]) @@ -197,13 +197,14 @@ REST_REQUIRED=0.6 NETWORK_MANAGER_REQUIRED=0.8 GSTREAMER_REQUIRED=0.10.31 -GUPNP_DLNA_REQUIRED=0.7 +GUPNP_DLNA_REQUIRED=0.9.4 # 3.6.11 for sqlite_backup API # 3.6.16 to fix test failures # 3.6.17 for shared cache mode with virtual tables # 3.7.0 for WAL -SQLITE_REQUIRED=3.7.0 +# 3.7.9 for FTS4 content= support +SQLITE_REQUIRED=3.7.9 # Needed to generate .gir files, # see http://live.gnome.org/GnomeGoals/AddGObjectIntrospectionSupport @@ -715,10 +716,38 @@ if test "x$have_tracker_fts" = "xyes"; then AC_DEFINE(HAVE_TRACKER_FTS, [1], [Define to 1 if tracker FTS is compiled]) + + OLD_CFLAGS="$CFLAGS" + OLD_LIBS="$LIBS" + CFLAGS="$SQLITE3_CFLAGS" + LIBS="$SQLITE3_LIBS" + + AC_MSG_CHECKING(whether SQLite3 has required FTS features) + AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[sqlite3 *db; + int rc; + rc = sqlite3_open(":memory:", &db); + if (rc!=SQLITE_OK) return -1; + rc = sqlite3_exec(db, "create table a(text)", 0, 0, 0); + if (rc!=SQLITE_OK) return -1; + rc = sqlite3_exec(db, "create virtual table t using fts4(content='a',text)", 0, 0, 0); + if (rc!=SQLITE_OK) return -1;]])], + [have_builtin_fts4=yes], + [have_builtin_fts4=no]) + AC_MSG_RESULT($have_builtin_fts4) + + CFLAGS="$OLD_CFLAGS" + LIBS="$OLD_LIBS" + + if test "x$have_builtin_fts4" = "xyes" ; then + AC_DEFINE(HAVE_BUILTIN_FTS, [], [Defined if Sqlite has FTS4 compiled in]) + fi else AC_DEFINE(HAVE_TRACKER_FTS, [0], [Define to 0 if tracker FTS is not compiled]) + $have_builtin_fts4="disabled" fi +AM_CONDITIONAL(HAVE_BUILTIN_FTS, test "$have_builtin_fts4" = "yes") AM_CONDITIONAL(HAVE_TRACKER_FTS, test "$have_tracker_fts" = "yes") #################################################################### @@ -1789,7 +1818,7 @@ ;; "xgupnp-dlna") PKG_CHECK_MODULES(GUPNP_DLNA, - [gupnp-dlna-1.1 >= $GUPNP_DLNA_REQUIRED], + [gupnp-dlna-2.0 >= $GUPNP_DLNA_REQUIRED gupnp-dlna-gst-2.0 >= $GUPNP_DLNA_REQUIRED], [have_gupnp_dlna=yes], [have_gupnp_dlna=no]) AC_SUBST(GUPNP_DLNA_CFLAGS) @@ -2451,7 +2480,7 @@ Applications: Build with Journal support: $have_tracker_journal - Build with SQLite FTS support: $have_tracker_fts + Build with SQLite FTS support: $have_tracker_fts (built-in FTS: $have_builtin_fts4) Build tracker-preferences: $have_tracker_preferences Build tracker-explorer: $have_tracker_explorer diff -Nru tracker-0.15.1/data/gschemas/org.freedesktop.Tracker.FTS.gschema.xml.in tracker-0.15.2/data/gschemas/org.freedesktop.Tracker.FTS.gschema.xml.in --- tracker-0.15.1/data/gschemas/org.freedesktop.Tracker.FTS.gschema.xml.in 2012-08-07 19:05:10.000000000 +0000 +++ tracker-0.15.2/data/gschemas/org.freedesktop.Tracker.FTS.gschema.xml.in 2013-02-15 09:58:12.000000000 +0000 @@ -20,13 +20,6 @@ - - 3 - - <_summary>Minimum length of a word to be indexed - <_description>Words with less characters than this will be ignored by the indexer. - - 30 diff -Nru tracker-0.15.1/data/ontologies/11-rdf.ontology tracker-0.15.2/data/ontologies/11-rdf.ontology --- tracker-0.15.1/data/ontologies/11-rdf.ontology 2011-08-03 12:53:16.000000000 +0000 +++ tracker-0.15.2/data/ontologies/11-rdf.ontology 2013-02-15 09:58:12.000000000 +0000 @@ -97,6 +97,7 @@ tracker:fulltextNoLimit a rdf:Property ; nrl:maxCardinality 1 ; + rdfs:comment "tracker:fulltextNoLimit is deprecated, no word length limits are imposed on FTS" ; rdfs:domain rdf:Property ; rdfs:range xsd:boolean . diff -Nru tracker-0.15.1/data/ontologies/30-nie.ontology tracker-0.15.2/data/ontologies/30-nie.ontology --- tracker-0.15.1/data/ontologies/30-nie.ontology 2011-08-03 12:53:16.000000000 +0000 +++ tracker-0.15.2/data/ontologies/30-nie.ontology 2013-02-15 09:58:12.000000000 +0000 @@ -35,7 +35,6 @@ rdfs:domain nie:InformationElement ; rdfs:range xsd:string ; tracker:fulltextIndexed true ; - tracker:fulltextNoLimit true ; tracker:weight 10 ; tracker:writeback true . @@ -67,7 +66,6 @@ rdfs:domain nie:InformationElement ; rdfs:range xsd:string ; tracker:fulltextIndexed true ; - tracker:fulltextNoLimit true ; tracker:weight 5 . nie:mimeType a rdf:Property ; diff -Nru tracker-0.15.1/data/ontologies/32-nco.ontology tracker-0.15.2/data/ontologies/32-nco.ontology --- tracker-0.15.1/data/ontologies/32-nco.ontology 2011-12-07 11:29:56.000000000 +0000 +++ tracker-0.15.2/data/ontologies/32-nco.ontology 2013-02-15 09:58:12.000000000 +0000 @@ -189,7 +189,6 @@ rdfs:range xsd:string ; tracker:indexed true ; tracker:fulltextIndexed true ; - tracker:fulltextNoLimit true ; tracker:weight 4 . nco:nameGiven a rdf:Property ; @@ -199,7 +198,6 @@ rdfs:domain nco:PersonContact ; rdfs:range xsd:string ; tracker:fulltextIndexed true ; - tracker:fulltextNoLimit true ; tracker:weight 5 . nco:nameAdditional a rdf:Property ; @@ -209,7 +207,6 @@ rdfs:domain nco:PersonContact ; rdfs:range xsd:string ; tracker:fulltextIndexed true ; - tracker:fulltextNoLimit true ; tracker:weight 5 . nco:fullname a rdf:Property ; @@ -220,7 +217,6 @@ rdfs:domain nco:Contact ; rdfs:range xsd:string ; tracker:fulltextIndexed true ; - tracker:fulltextNoLimit true ; tracker:weight 6 . nco:hasContactMedium a rdf:Property ; @@ -310,7 +306,6 @@ rdfs:domain nco:PostalAddress ; rdfs:range xsd:string ; tracker:fulltextIndexed true ; - tracker:fulltextNoLimit true ; tracker:weight 3 . nco:nameHonorificPrefix a rdf:Property ; @@ -360,7 +355,6 @@ rdfs:domain nco:Contact ; rdfs:range xsd:string ; tracker:fulltextIndexed true ; - tracker:fulltextNoLimit true ; tracker:weight 5 . nco:containsContact a rdf:Property ; @@ -377,7 +371,6 @@ rdfs:domain nco:Affiliation ; rdfs:range xsd:string ; tracker:fulltextIndexed true ; - tracker:fulltextNoLimit true ; tracker:weight 4 . nco:imID a rdf:Property ; @@ -501,7 +494,6 @@ rdfs:domain nco:Affiliation ; rdfs:range xsd:string ; tracker:fulltextIndexed true ; - tracker:fulltextNoLimit true ; tracker:weight 10 . nco:voiceMail a rdf:Property ; @@ -525,7 +517,6 @@ rdfs:domain nco:ContactGroup ; rdfs:range xsd:string ; tracker:fulltextIndexed true ; - tracker:fulltextNoLimit true ; tracker:weight 4 . nco:contactMediumComment a rdf:Property ; diff -Nru tracker-0.15.1/data/ontologies/38-nmm.ontology tracker-0.15.2/data/ontologies/38-nmm.ontology --- tracker-0.15.1/data/ontologies/38-nmm.ontology 2012-04-03 14:21:24.000000000 +0000 +++ tracker-0.15.2/data/ontologies/38-nmm.ontology 2013-02-15 09:58:12.000000000 +0000 @@ -71,7 +71,6 @@ rdfs:range xsd:string ; tracker:indexed true ; tracker:fulltextIndexed true ; - tracker:fulltextNoLimit true ; tracker:weight 6 . nmm:musicAlbum a rdf:Property ; @@ -189,7 +188,6 @@ rdfs:range xsd:string ; nao:deprecated true ; tracker:fulltextIndexed true ; - tracker:fulltextNoLimit true ; tracker:weight 6 . nmm:albumDuration a rdf:Property ; diff -Nru tracker-0.15.1/debian/changelog tracker-0.15.2/debian/changelog --- tracker-0.15.1/debian/changelog 2013-01-25 17:40:23.000000000 +0000 +++ tracker-0.15.2/debian/changelog 2013-03-03 16:31:21.000000000 +0000 @@ -1,3 +1,12 @@ +tracker (0.15.2-0ubuntu1~raring1) raring; urgency=medium + + * Re-merge with Raring + * New upstream release. + * debian/control: + - Bump minimum sqlite + + -- Jeremy Bicha Sun, 03 Mar 2013 10:25:50 -0500 + tracker (0.15.1-0ubuntu1~raring1) raring; urgency=low [ Robert Ancell ] @@ -13,53 +22,53 @@ * New git snapshot release * debian/control: - Rename 0.15 packages to 0.16 packages - - Build-depend on libgee-0.8-dev * debian/rules: - use --disable-libsecret instead of --disable-gnome-keyring -- Rico Tzschichholz Fri, 25 Jan 2013 18:40:10 +0100 -tracker (0.14.4-0ubuntu1) raring; urgency=low - - * New upstream release - * debian/libtracker-miner-0.10-0.symbols - - Updated - - -- Robert Ancell Fri, 16 Nov 2012 10:57:25 +1300 +tracker (0.14.5-1ubuntu1) raring; urgency=low -tracker (0.14.1-1ubuntu5) quantal; urgency=low - - * don't recommends tracker-miner-evolution anymore as tracker doesn't build - it and it's incompatible with current evolution version - - -- Didier Roche Wed, 12 Sep 2012 11:20:23 +0200 - -tracker (0.14.1-1ubuntu4) quantal; urgency=low - - * Fix FTBFS: Temporarily disable the evolution plugin; it no longer works - with evolution 3.5 and fixing it is non-trivial but in progress upstream. + * Sync with Debian. Remaining changes: + * debian/control: + - Build-depend on libtiff-dev instead of libtiff4-dev + * debian/patches/01_autostart-in-Unity-also.patch: + - Fix tracker not autostarting in Unity - -- Mathieu Trudel-Lapierre Tue, 11 Sep 2012 11:55:22 -0400 + -- Jeremy Bicha Sun, 03 Mar 2013 10:41:32 -0500 -tracker (0.14.1-1ubuntu3) quantal; urgency=low +tracker (0.14.5-1) experimental; urgency=low - * Build-depend on libtiff-dev rather than libtiff4-dev. + * New upstream release. + * Remove 0001-evolution-plugin-include-missing-header.patch, merged + upstream. + * Enable XPS support. + * Build against libgee-0.8. + * tracker-gui no longer installs any icons in $pkgdatadir, update the + .install file accordingly. + * Enforce strict inter-package dependencies via shlibs.local. + * Rename an internal symbol in libtracker-miner. + * For configure switches with auto detection, explicitly enable or disable + the feature for reliable build results in tainted build environments. - -- Colin Watson Mon, 10 Sep 2012 11:27:44 +0100 + -- Michael Biebl Thu, 07 Feb 2013 09:25:21 +0100 -tracker (0.14.1-1ubuntu2) quantal; urgency=low +tracker (0.14.1-3) unstable; urgency=low - * Rebuild against evolution 3.4 + * Use xz compression for binary packages. + * Disable Evolution email data miner. It is currently non-functional and + unlikely to be fixed in time for wheezy. (Closes: #666176) - -- Jeremy Bicha Fri, 25 May 2012 08:17:32 -0400 + -- Michael Biebl Mon, 08 Oct 2012 22:17:39 +0200 -tracker (0.14.1-1ubuntu1) quantal; urgency=low +tracker (0.14.1-2) unstable; urgency=low - * Sync with Debian. Remaining change: - * debian/patches/01_autostart-in-Unity-also.patch: - - Fix tracker not autostarting in Unity (LP: #948832) + * debian/patches/0001-evolution-plugin-include-missing-header.patch: Include + missing mail/e-mail-backend.h header. Otherwise evolution fails to load + the Tracker evolution plugin due to undefined symbols. (Closes: #678444) + * Drop explicit Build-Depends on gir1.2-glib-2.0. - -- Jeremy Bicha Fri, 04 May 2012 16:46:53 -0400 + -- Michael Biebl Thu, 21 Jun 2012 23:21:41 +0200 tracker (0.14.1-1) unstable; urgency=low diff -Nru tracker-0.15.1/debian/control tracker-0.15.2/debian/control --- tracker-0.15.1/debian/control 2013-01-25 17:40:01.000000000 +0000 +++ tracker-0.15.2/debian/control 2013-03-03 16:31:21.000000000 +0000 @@ -12,7 +12,7 @@ libdbus-1-dev (>= 1.3.1), libgstreamer1.0-dev (>= 0.10.31), libgstreamer-plugins-base1.0-dev (>= 0.10.31), - libsqlite3-dev (>= 3.7.0), + libsqlite3-dev (>= 3.7.9), libpoppler-glib-dev (>= 0.16.0), libgsf-1-dev (>= 1.13), libexif-dev (>= 0.6), @@ -24,10 +24,9 @@ libtotem-plparser-dev, zlib1g-dev, libexempi-dev (>= 2.1.0), - evolution-dev (>= 2.32.0), - evolution-data-server-dev (>= 2.32.0), - libevolution, - libcamel1.2-dev (>= 2.32.0), +# evolution-dev (>= 2.32.0), +# evolution-data-server-dev (>= 2.32.0), +# libcamel1.2-dev (>= 2.32.0), libxml2-dev (>= 2.6), libupower-glib-dev (>= 0.9.0), libnautilus-extension-dev (>= 3.0), @@ -43,9 +42,9 @@ dia, libunistring-dev, libgif-dev, - libgirepository1.0-dev (>= 0.10), - gobject-introspection (>= 0.10), - gir1.2-glib-2.0 + libgxps-dev, + libgirepository1.0-dev (>= 0.10.7-1~), + gobject-introspection (>= 0.10) Standards-Version: 3.9.4 Vcs-Git: git://git.debian.org/git/users/biebl/tracker.git Vcs-Browser: http://git.debian.org/?p=users/biebl/tracker.git;a=summary @@ -61,6 +60,7 @@ Recommends: tracker-utils, tracker-gui, tracker-miner-fs, +# tracker-miner-evolution Breaks: rygel-tracker (<< 0.5) Description: metadata database, indexer and search tool Tracker is an advanced framework for first class objects with associated diff -Nru tracker-0.15.1/debian/gbp.conf tracker-0.15.2/debian/gbp.conf --- tracker-0.15.1/debian/gbp.conf 2013-01-16 00:33:42.000000000 +0000 +++ tracker-0.15.2/debian/gbp.conf 2013-03-03 16:31:21.000000000 +0000 @@ -1,3 +1,3 @@ [DEFAULT] -debian-branch = master +debian-branch = experimental pristine-tar = True diff -Nru tracker-0.15.1/debian/libtracker-miner-0.16-0.symbols tracker-0.15.2/debian/libtracker-miner-0.16-0.symbols --- tracker-0.15.1/debian/libtracker-miner-0.16-0.symbols 2013-01-16 07:49:14.000000000 +0000 +++ tracker-0.15.2/debian/libtracker-miner-0.16-0.symbols 2013-03-03 16:31:21.000000000 +0000 @@ -16,7 +16,7 @@ tracker_file_notifier_new@Base 0.14.0 tracker_file_notifier_start@Base 0.14.0 tracker_file_notifier_stop@Base 0.14.0 - tracker_file_system_forget_files@Base 0.14.4 + tracker_file_system_forget_files@Base 0.14.5 tracker_file_system_get_file@Base 0.14.0 tracker_file_system_get_property@Base 0.14.0 tracker_file_system_get_type@Base 0.14.0 diff -Nru tracker-0.15.1/debian/rules tracker-0.15.2/debian/rules --- tracker-0.15.1/debian/rules 2013-01-16 08:33:43.000000000 +0000 +++ tracker-0.15.2/debian/rules 2013-03-03 16:31:21.000000000 +0000 @@ -7,7 +7,10 @@ override_dh_auto_configure: dh_auto_configure -- \ - --disable-unit-tests \ + --with-unicode-support=libunistring \ + --with-enca \ + --enable-introspection \ + --enable-generic-media-extractor=gstreamer \ --enable-tracker-fts \ --enable-upower \ --enable-tracker-explorer \ @@ -27,12 +30,21 @@ --enable-libvorbis \ --enable-libflac \ --enable-playlist \ + --enable-libgxps \ + --enable-gtk-doc \ + --disable-unit-tests \ --disable-network-manager \ --disable-libsecret \ --disable-miner-rss \ --disable-miner-flickr \ --disable-miner-evolution \ - --enable-gtk-doc \ + --disable-miner-thunderbird \ + --disable-miner-firefox \ + --disable-hal \ + --disable-taglib \ + --disable-libosinfo \ + --disable-libcue \ + --disable-qt # Enforce tight shlibs dependencies override_dh_makeshlibs: @@ -47,3 +59,6 @@ override_dh_strip: dh_strip --dbg-package=tracker-dbg + +override_dh_builddeb: + dh_builddeb -- -Zxz diff -Nru tracker-0.15.1/debian/shlibs.local tracker-0.15.2/debian/shlibs.local --- tracker-0.15.1/debian/shlibs.local 2013-01-16 07:50:16.000000000 +0000 +++ tracker-0.15.2/debian/shlibs.local 2013-03-03 16:31:21.000000000 +0000 @@ -1,2 +1,5 @@ libtracker-common 0 libtracker-sparql-0.16-0 (= ${binary:Version}) libtracker-data 0 libtracker-sparql-0.16-0 (= ${binary:Version}) +libtracker-extract-0.16 0 libtracker-extract-0.16-0 (= ${binary:Version}) +libtracker-miner-0.16 0 libtracker-miner-0.16-0 (= ${binary:Version}) +libtracker-sparql-0.16 0 libtracker-sparql-0.16-0 (= ${binary:Version}) diff -Nru tracker-0.15.1/docs/manpages/tracker-sparql.1 tracker-0.15.2/docs/manpages/tracker-sparql.1 --- tracker-0.15.1/docs/manpages/tracker-sparql.1 2012-08-07 19:05:10.000000000 +0000 +++ tracker-0.15.2/docs/manpages/tracker-sparql.1 2013-02-15 09:58:12.000000000 +0000 @@ -99,9 +99,8 @@ http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#PaginatedTextDocument http://www.tracker-project.org/temp/nmm#SynchronizedText -Properties: 5 +Properties: 4 http://www.tracker-project.org/ontologies/tracker#fulltextIndexed - http://www.tracker-project.org/ontologies/tracker#fulltextNoLimit http://www.semanticdesktop.org/ontologies/2007/01/19/nie#plainTextContent http://www.semanticdesktop.org/ontologies/2007/03/22/nmo#plainTextMessageContent http://www.tracker-project.org/temp/scal#textLocation diff -Nru tracker-0.15.1/docs/reference/libtracker-extract/html/ch02.html tracker-0.15.2/docs/reference/libtracker-extract/html/ch02.html --- tracker-0.15.1/docs/reference/libtracker-extract/html/ch02.html 2013-01-24 17:28:57.000000000 +0000 +++ tracker-0.15.2/docs/reference/libtracker-extract/html/ch02.html 2013-02-15 11:39:41.000000000 +0000 @@ -21,7 +21,7 @@

-Core API

+Core API
How to use libtracker-extract — The essentials by example diff -Nru tracker-0.15.1/docs/reference/libtracker-extract/html/ch03.html tracker-0.15.2/docs/reference/libtracker-extract/html/ch03.html --- tracker-0.15.1/docs/reference/libtracker-extract/html/ch03.html 2013-01-24 17:28:57.000000000 +0000 +++ tracker-0.15.2/docs/reference/libtracker-extract/html/ch03.html 2013-02-15 11:39:41.000000000 +0000 @@ -21,7 +21,7 @@

-Common Embedded Support API

+Common Embedded Support API
XMP — Extensible Metadata Platform (XMP) diff -Nru tracker-0.15.1/docs/reference/libtracker-extract/html/index.html tracker-0.15.2/docs/reference/libtracker-extract/html/index.html --- tracker-0.15.1/docs/reference/libtracker-extract/html/index.html 2013-01-24 17:28:57.000000000 +0000 +++ tracker-0.15.2/docs/reference/libtracker-extract/html/index.html 2013-02-15 11:39:41.000000000 +0000 @@ -15,7 +15,7 @@

- for libtracker-extract 0.15.1 + for libtracker-extract 0.15.2 . The latest version of this documentation can be found on-line at diff -Nru tracker-0.15.1/docs/reference/libtracker-extract/html/libtracker-extract-How-to-use-libtracker-extract.html tracker-0.15.2/docs/reference/libtracker-extract/html/libtracker-extract-How-to-use-libtracker-extract.html --- tracker-0.15.1/docs/reference/libtracker-extract/html/libtracker-extract-How-to-use-libtracker-extract.html 2013-01-24 17:28:57.000000000 +0000 +++ tracker-0.15.2/docs/reference/libtracker-extract/html/libtracker-extract-How-to-use-libtracker-extract.html 2013-02-15 11:39:41.000000000 +0000 @@ -63,7 +63,7 @@

-

Example 1. Basic extractor example

+

Example 1. Basic extractor example

An example of how to write an extractor to retrieve PNG embedded metadata. diff -Nru tracker-0.15.1/docs/reference/libtracker-extract/version.xml tracker-0.15.2/docs/reference/libtracker-extract/version.xml --- tracker-0.15.1/docs/reference/libtracker-extract/version.xml 2013-01-24 17:25:36.000000000 +0000 +++ tracker-0.15.2/docs/reference/libtracker-extract/version.xml 2013-02-15 11:28:58.000000000 +0000 @@ -1 +1 @@ -0.15.1 +0.15.2 diff -Nru tracker-0.15.1/docs/reference/libtracker-miner/html/ch02.html tracker-0.15.2/docs/reference/libtracker-miner/html/ch02.html --- tracker-0.15.1/docs/reference/libtracker-miner/html/ch02.html 2013-01-24 17:28:58.000000000 +0000 +++ tracker-0.15.2/docs/reference/libtracker-miner/html/ch02.html 2013-02-15 11:39:41.000000000 +0000 @@ -21,7 +21,7 @@

-Base abstract miner classes

+Base abstract miner classes
TrackerMiner — Abstract base class for data miners diff -Nru tracker-0.15.1/docs/reference/libtracker-miner/html/ch03.html tracker-0.15.2/docs/reference/libtracker-miner/html/ch03.html --- tracker-0.15.1/docs/reference/libtracker-miner/html/ch03.html 2013-01-24 17:28:58.000000000 +0000 +++ tracker-0.15.2/docs/reference/libtracker-miner/html/ch03.html 2013-02-15 11:39:41.000000000 +0000 @@ -21,7 +21,7 @@

-Miner classes for file system

+Miner classes for file system
TrackerMinerFS — Abstract base class for filesystem miners diff -Nru tracker-0.15.1/docs/reference/libtracker-miner/html/ch04.html tracker-0.15.2/docs/reference/libtracker-miner/html/ch04.html --- tracker-0.15.1/docs/reference/libtracker-miner/html/ch04.html 2013-01-24 17:28:58.000000000 +0000 +++ tracker-0.15.2/docs/reference/libtracker-miner/html/ch04.html 2013-02-15 11:39:41.000000000 +0000 @@ -21,7 +21,7 @@

-Managing miners

+Managing miners
TrackerMinerManager — External control and monitoring of miners
diff -Nru tracker-0.15.1/docs/reference/libtracker-miner/html/ch05.html tracker-0.15.2/docs/reference/libtracker-miner/html/ch05.html --- tracker-0.15.1/docs/reference/libtracker-miner/html/ch05.html 2013-01-24 17:28:58.000000000 +0000 +++ tracker-0.15.2/docs/reference/libtracker-miner/html/ch05.html 2013-02-15 11:39:41.000000000 +0000 @@ -21,7 +21,7 @@

-Base abstract providers for network/password/etc control

+Base abstract providers for network/password/etc control
TrackerNetworkProvider — Network status interface for cross platform backends diff -Nru tracker-0.15.1/docs/reference/libtracker-miner/html/ch06.html tracker-0.15.2/docs/reference/libtracker-miner/html/ch06.html --- tracker-0.15.1/docs/reference/libtracker-miner/html/ch06.html 2013-01-24 17:28:58.000000000 +0000 +++ tracker-0.15.2/docs/reference/libtracker-miner/html/ch06.html 2013-02-15 11:39:41.000000000 +0000 @@ -21,7 +21,7 @@

-Utilities

+Utilities
Enumerations — Common enumerations diff -Nru tracker-0.15.1/docs/reference/libtracker-miner/html/index.html tracker-0.15.2/docs/reference/libtracker-miner/html/index.html --- tracker-0.15.1/docs/reference/libtracker-miner/html/index.html 2013-01-24 17:28:58.000000000 +0000 +++ tracker-0.15.2/docs/reference/libtracker-miner/html/index.html 2013-02-15 11:39:41.000000000 +0000 @@ -15,7 +15,7 @@

- for libtracker-miner 0.15.1 + for libtracker-miner 0.15.2 . The latest version of this documentation can be found on-line at diff -Nru tracker-0.15.1/docs/reference/libtracker-miner/version.xml tracker-0.15.2/docs/reference/libtracker-miner/version.xml --- tracker-0.15.1/docs/reference/libtracker-miner/version.xml 2013-01-24 17:25:36.000000000 +0000 +++ tracker-0.15.2/docs/reference/libtracker-miner/version.xml 2013-02-15 11:28:58.000000000 +0000 @@ -1 +1 @@ -0.15.1 +0.15.2 diff -Nru tracker-0.15.1/docs/reference/libtracker-sparql/html/TrackerSparqlConnection.html tracker-0.15.2/docs/reference/libtracker-sparql/html/TrackerSparqlConnection.html --- tracker-0.15.1/docs/reference/libtracker-sparql/html/TrackerSparqlConnection.html 2013-01-24 17:28:57.000000000 +0000 +++ tracker-0.15.2/docs/reference/libtracker-sparql/html/TrackerSparqlConnection.html 2013-02-15 11:39:41.000000000 +0000 @@ -647,7 +647,7 @@

-

Example 1. 

+

Example 1. 

 static void
 async_update_array_callback (GObject      *source_object,
diff -Nru tracker-0.15.1/docs/reference/libtracker-sparql/html/index.html tracker-0.15.2/docs/reference/libtracker-sparql/html/index.html
--- tracker-0.15.1/docs/reference/libtracker-sparql/html/index.html	2013-01-24 17:28:57.000000000 +0000
+++ tracker-0.15.2/docs/reference/libtracker-sparql/html/index.html	2013-02-15 11:39:41.000000000 +0000
@@ -15,7 +15,7 @@
 

- for libtracker-sparql 0.15.1 + for libtracker-sparql 0.15.2 . The latest version of this documentation can be found on-line at diff -Nru tracker-0.15.1/docs/reference/libtracker-sparql/html/libtracker-sparql-Version-Information.html tracker-0.15.2/docs/reference/libtracker-sparql/html/libtracker-sparql-Version-Information.html --- tracker-0.15.1/docs/reference/libtracker-sparql/html/libtracker-sparql-Version-Information.html 2013-01-24 17:28:57.000000000 +0000 +++ tracker-0.15.2/docs/reference/libtracker-sparql/html/libtracker-sparql-Version-Information.html 2013-02-15 11:39:41.000000000 +0000 @@ -160,7 +160,7 @@

-

Example 2. Simple version check example

+

Example 2. Simple version check example

An example of how to make sure you have the version of Tracker installed to run your code. diff -Nru tracker-0.15.1/docs/reference/libtracker-sparql/version.xml tracker-0.15.2/docs/reference/libtracker-sparql/version.xml --- tracker-0.15.1/docs/reference/libtracker-sparql/version.xml 2013-01-24 17:25:36.000000000 +0000 +++ tracker-0.15.2/docs/reference/libtracker-sparql/version.xml 2013-02-15 11:28:58.000000000 +0000 @@ -1 +1 @@ -0.15.1 +0.15.2 diff -Nru tracker-0.15.1/docs/reference/ontology/html/fts-properties.html tracker-0.15.2/docs/reference/ontology/html/fts-properties.html --- tracker-0.15.1/docs/reference/ontology/html/fts-properties.html 2013-01-24 17:28:58.000000000 +0000 +++ tracker-0.15.2/docs/reference/ontology/html/fts-properties.html 2013-02-15 11:39:41.000000000 +0000 @@ -22,7 +22,7 @@

Full-text indexed properties in the ontology

- +
diff -Nru tracker-0.15.1/docs/reference/ontology/html/index.html tracker-0.15.2/docs/reference/ontology/html/index.html --- tracker-0.15.1/docs/reference/ontology/html/index.html 2013-01-24 17:28:58.000000000 +0000 +++ tracker-0.15.2/docs/reference/ontology/html/index.html 2013-02-15 11:39:41.000000000 +0000 @@ -15,7 +15,7 @@
Property Weigth

-Introduction

+Introduction

This ontology extends NIE (Nepomuk Information Element ontology) and NFO (Nepomuk File Ontology) into the domains of multimedia, including Images, Videos, Music and Radio, and includes a couple of properties to support uPnP sharing.

This ontology replaces/complements NID3 and NEXIF. Those ontologies are a direct map of the respective metadata standards, which makes very difficult to map cleanly other standards (like gstreamer metadata, mp4, ogg, and so on). Besides, those ontologies contain a lot of very low level technical information that is useless to the average user of the desktop.

Our approach in NMM is to keep the minimum properties that make sense for the user, and are present in all (or almost all) specific metadata formats. A profesional photographer (or musician) who needs more fine-grained details for its documents, is free to add also nID3 information or other extensions to the ontology.

-Images domain

+Images domain

The core of images in NMM ontology is the class nmm:Photo. It is (through a long hierarchy) a nie:InformationElement, an interpretation of some bytes. It has properties to store the basic information (camera, metering mode, white balance, flash), and inherits from nfo:Image orientation (nfo:orientation) and resolution (nfo:verticalResolution and nfo:horizontalResolution).

Note that for tags, nie:keywords (from nie:InformationElement) can be used, or the NAO ontology.

@@ -66,7 +66,7 @@

-Music domain

+Music domain

Figure 5. Graphical Overview (music domain)

@@ -78,7 +78,7 @@

-Radio domain

+Radio domain

NMM includes classes and properties to represent analog and digital radio stations. There is a class nmm:RadioStation on the nie:InformationElement side of the ontology, representing what the user sees about that station (genre via PTY codes, icon, plus title inherited from nie:InformationElement)

A nmm:RadioStation can have one or more nmm:carrier properties representing the different frequencies (or links when it is digitial) it can be tuned. This property links the station with nfo:MediaStream, but usually it will point to one of the subclasses: nmm:DigitalRadio (if digital) or nmm:AnalogRadio (if analog). An analog station has properties as modulation and frequency, while the digial station has streaming bitrate, encoding or protocol.

Note that nfo:MediaStream refers to a flux of bytes/data, and it is on the nie:DataObject side of the ontology

diff -Nru tracker-0.15.1/docs/reference/ontology/html/rdf-properties.html tracker-0.15.2/docs/reference/ontology/html/rdf-properties.html --- tracker-0.15.1/docs/reference/ontology/html/rdf-properties.html 2013-01-24 17:28:58.000000000 +0000 +++ tracker-0.15.2/docs/reference/ontology/html/rdf-properties.html 2013-02-15 11:39:41.000000000 +0000 @@ -55,6 +55,7 @@

tracker:fulltextNoLimit

+

tracker:fulltextNoLimit is deprecated, no word length limits are imposed on FTS

diff -Nru tracker-0.15.1/docs/reference/ontology/rdf-ontology.xml tracker-0.15.2/docs/reference/ontology/rdf-ontology.xml --- tracker-0.15.1/docs/reference/ontology/rdf-ontology.xml 2013-01-24 16:46:24.000000000 +0000 +++ tracker-0.15.2/docs/reference/ontology/rdf-ontology.xml 2013-02-15 11:38:52.000000000 +0000 @@ -197,6 +197,7 @@ tracker:fulltextNoLimit +tracker:fulltextNoLimit is deprecated, no word length limits are imposed on FTS Type : diff -Nru tracker-0.15.1/docs/reference/ontology/version.xml tracker-0.15.2/docs/reference/ontology/version.xml --- tracker-0.15.1/docs/reference/ontology/version.xml 2013-01-24 17:25:36.000000000 +0000 +++ tracker-0.15.2/docs/reference/ontology/version.xml 2013-02-15 11:28:58.000000000 +0000 @@ -1 +1 @@ -0.15.1 +0.15.2 diff -Nru tracker-0.15.1/src/libtracker-data/tracker-data-manager.c tracker-0.15.2/src/libtracker-data/tracker-data-manager.c --- tracker-0.15.1/src/libtracker-data/tracker-data-manager.c 2012-08-07 19:05:10.000000000 +0000 +++ tracker-0.15.2/src/libtracker-data/tracker-data-manager.c 2013-02-15 09:58:12.000000000 +0000 @@ -1186,39 +1186,6 @@ if (strcmp (object, "true") == 0) { tracker_property_set_fulltext_indexed (property, TRUE); } - } else if (g_strcmp0 (predicate, TRACKER_PREFIX "fulltextNoLimit") == 0) { - TrackerProperty *property; - gboolean is_new; - - property = tracker_ontologies_get_property_by_uri (subject); - if (property == NULL) { - g_critical ("%s: Unknown property %s", ontology_path, subject); - return; - } - - is_new = tracker_property_get_is_new (property); - if (is_new != in_update) { - /* Detect unsupported ontology change (this needs a journal replay) */ - if (in_update == TRUE && is_new == FALSE) { - if (check_unsupported_property_value_change (ontology_path, - "tracker:fulltextNoLimit", - subject, - predicate, - object)) { - handle_unsupported_ontology_change (ontology_path, - tracker_property_get_name (property), - "tracker:fulltextNoLimit", - tracker_property_get_fulltext_no_limit (property) ? "true" : "false", - g_strcmp0 (object, "true") == 0 ? "true" : "false", - error); - } - } - return; - } - - if (strcmp (object, "true") == 0) { - tracker_property_set_fulltext_no_limit (property, TRUE); - } } else if (g_strcmp0 (predicate, TRACKER_PREFIX "defaultValue") == 0) { TrackerProperty *property; @@ -2317,7 +2284,6 @@ "\"tracker:indexed\", " "(SELECT Uri FROM Resource WHERE ID = \"tracker:secondaryIndex\"), " "\"tracker:fulltextIndexed\", " - "\"tracker:fulltextNoLimit\", " "\"tracker:transient\", " "\"tracker:writeback\", " "(SELECT 1 FROM \"rdfs:Resource_rdf:type\" WHERE ID = \"rdf:Property\".ID AND " @@ -2336,7 +2302,7 @@ GValue value = { 0 }; TrackerProperty *property; const gchar *uri, *domain_uri, *range_uri, *secondary_index_uri, *default_value; - gboolean multi_valued, indexed, fulltext_indexed, fulltext_no_limit; + gboolean multi_valued, indexed, fulltext_indexed; gboolean transient, is_inverse_functional_property; gboolean writeback, force_journal; gint id; @@ -2384,16 +2350,6 @@ tracker_db_cursor_get_value (cursor, 8, &value); if (G_VALUE_TYPE (&value) != 0) { - fulltext_no_limit = (g_value_get_int64 (&value) == 1); - g_value_unset (&value); - } else { - /* NULL */ - fulltext_no_limit = FALSE; - } - - tracker_db_cursor_get_value (cursor, 9, &value); - - if (G_VALUE_TYPE (&value) != 0) { transient = (g_value_get_int64 (&value) == 1); g_value_unset (&value); } else { @@ -2402,7 +2358,7 @@ } /* tracker:writeback column */ - tracker_db_cursor_get_value (cursor, 10, &value); + tracker_db_cursor_get_value (cursor, 9, &value); if (G_VALUE_TYPE (&value) != 0) { writeback = (g_value_get_int64 (&value) == 1); @@ -2413,7 +2369,7 @@ } /* NRL_INVERSE_FUNCTIONAL_PROPERTY column */ - tracker_db_cursor_get_value (cursor, 11, &value); + tracker_db_cursor_get_value (cursor, 10, &value); if (G_VALUE_TYPE (&value) != 0) { is_inverse_functional_property = TRUE; @@ -2424,7 +2380,7 @@ } /* tracker:forceJournal column */ - tracker_db_cursor_get_value (cursor, 12, &value); + tracker_db_cursor_get_value (cursor, 11, &value); if (G_VALUE_TYPE (&value) != 0) { force_journal = (g_value_get_int64 (&value) == 1); @@ -2434,7 +2390,7 @@ force_journal = TRUE; } - default_value = tracker_db_cursor_get_string (cursor, 13, NULL); + default_value = tracker_db_cursor_get_string (cursor, 12, NULL); tracker_property_set_is_new_domain_index (property, tracker_ontologies_get_class_by_uri (domain_uri), FALSE); tracker_property_set_is_new (property, FALSE); @@ -2456,7 +2412,6 @@ } tracker_property_set_fulltext_indexed (property, fulltext_indexed); - tracker_property_set_fulltext_no_limit (property, fulltext_no_limit); tracker_property_set_is_inverse_functional_property (property, is_inverse_functional_property); /* super properties are only used in updates, never for queries */ @@ -2487,7 +2442,6 @@ } } - static void insert_uri_in_resource_table (TrackerDBInterface *iface, const gchar *uri, @@ -3583,6 +3537,78 @@ g_free (filename); } +#if HAVE_TRACKER_FTS +static gboolean +ontology_get_fts_properties (gboolean only_new, + GHashTable **fts_properties, + GHashTable **multivalued) +{ + TrackerProperty **properties; + gboolean has_new = FALSE; + GHashTable *hashtable; + guint i, len; + + properties = tracker_ontologies_get_properties (&len); + hashtable = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, + (GDestroyNotify) g_list_free); + + if (multivalued) { + *multivalued = g_hash_table_new (g_str_hash, g_str_equal); + } + + for (i = 0; i < len; i++) { + const gchar *name, *table_name; + GList *list; + + if (!tracker_property_get_fulltext_indexed (properties[i])) { + continue; + } + + has_new |= tracker_property_get_is_new (properties[i]); + + if (multivalued && + tracker_property_get_multiple_values (properties[i])) { + g_hash_table_insert (*multivalued, (gpointer) table_name, + GUINT_TO_POINTER (TRUE)); + } + + table_name = tracker_property_get_table_name (properties[i]); + name = tracker_property_get_name (properties[i]); + list = g_hash_table_lookup (hashtable, table_name); + + if (!list) { + list = g_list_prepend (NULL, (gpointer) name); + g_hash_table_insert (hashtable, (gpointer) table_name, list); + } else { + list = g_list_append (list, (gpointer) name); + } + } + + if (fts_properties) { + *fts_properties = hashtable; + } + + return has_new; +} +#endif + +gboolean +tracker_data_manager_init_fts (TrackerDBInterface *iface, + gboolean create) +{ +#if HAVE_TRACKER_FTS + GHashTable *fts_props, *multivalued; + + ontology_get_fts_properties (FALSE, &fts_props, &multivalued); + tracker_db_interface_sqlite_fts_init (iface, fts_props, + multivalued, create); + g_hash_table_unref (fts_props); + g_hash_table_unref (multivalued); +#else + g_message ("FTS support is disabled"); +#endif +} + gboolean tracker_data_manager_init (TrackerDBManagerFlags flags, const gchar **test_schemas, @@ -3616,6 +3642,12 @@ tracker_data_update_init (); +#ifdef HAVE_TRACKER_FTS + if (!tracker_fts_init ()) { + g_warning ("FTS module loading failed"); + } +#endif + /* First set defaults for return values */ if (first_time) { *first_time = FALSE; @@ -3842,12 +3874,11 @@ return FALSE; } - /* This is a no-op when FTS is disabled */ - tracker_db_interface_sqlite_fts_init (iface, TRUE); - tracker_data_ontology_import_into_db (FALSE, &internal_error); + tracker_data_manager_init_fts (iface, TRUE); + if (internal_error) { g_propagate_error (error, internal_error); @@ -3990,8 +4021,7 @@ } } - /* This is a no-op when FTS is disabled */ - tracker_db_interface_sqlite_fts_init (iface, FALSE); + tracker_data_manager_init_fts (iface, FALSE); } if (check_ontology) { @@ -4282,6 +4312,17 @@ } if (update_nao) { +#if HAVE_TRACKER_FTS + GHashTable *fts_properties, *multivalued; + + if (ontology_get_fts_properties (TRUE, &fts_properties, &multivalued)) { + tracker_db_interface_sqlite_fts_alter_table (iface, fts_properties, multivalued); + } + + g_hash_table_unref (fts_properties); + g_hash_table_unref (multivalued); +#endif + /* Update the nao:lastModified in the database */ stmt = tracker_db_interface_create_statement (iface, TRACKER_DB_STATEMENT_CACHE_TYPE_UPDATE, &n_error, "UPDATE \"rdfs:Resource\" SET \"nao:lastModified\"= ? " diff -Nru tracker-0.15.1/src/libtracker-data/tracker-data-manager.h tracker-0.15.2/src/libtracker-data/tracker-data-manager.h --- tracker-0.15.1/src/libtracker-data/tracker-data-manager.h 2011-09-19 11:01:54.000000000 +0000 +++ tracker-0.15.2/src/libtracker-data/tracker-data-manager.h 2013-02-14 19:30:47.000000000 +0000 @@ -63,6 +63,9 @@ const gchar *busy_operation, GError **error); +gboolean tracker_data_manager_init_fts (TrackerDBInterface *interface, + gboolean create); + G_END_DECLS #endif /* __LIBTRACKER_DATA_MANAGER_H__ */ diff -Nru tracker-0.15.1/src/libtracker-data/tracker-data-update.c tracker-0.15.2/src/libtracker-data/tracker-data-update.c --- tracker-0.15.1/src/libtracker-data/tracker-data-update.c 2012-08-07 19:05:10.000000000 +0000 +++ tracker-0.15.2/src/libtracker-data/tracker-data-update.c 2013-02-14 19:30:47.000000000 +0000 @@ -961,9 +961,10 @@ if (resource_buffer->fts_updated) { TrackerProperty *prop; GValueArray *values; + gboolean create = resource_buffer->create; + GPtrArray *properties, *text; - tracker_db_interface_sqlite_fts_update_init (iface, resource_buffer->id); - + properties = text = NULL; g_hash_table_iter_init (&iter, resource_buffer->predicates); while (g_hash_table_iter_next (&iter, (gpointer*) &prop, (gpointer*) &values)) { if (tracker_property_get_fulltext_indexed (prop)) { @@ -974,18 +975,30 @@ g_string_append (fts, g_value_get_string (g_value_array_get_nth (values, i))); g_string_append_c (fts, ' '); } - tracker_db_interface_sqlite_fts_update_text (iface, - resource_buffer->id, - tracker_data_query_resource_id (tracker_property_get_uri (prop)), - fts->str, - !tracker_property_get_fulltext_no_limit (prop)); - g_string_free (fts, TRUE); - /* Set that we ever updated FTS, so that tracker_db_interface_sqlite_fts_update_commit() - * gets called */ - update_buffer.fts_ever_updated = TRUE; + if (!properties && !text) { + properties = g_ptr_array_new (); + text = g_ptr_array_new_with_free_func ((GDestroyNotify) g_free); + } + + g_ptr_array_add (properties, (gpointer) tracker_property_get_name (prop)); + g_ptr_array_add (text, g_string_free (fts, FALSE)); } } + + if (properties && text) { + g_ptr_array_add (properties, NULL); + g_ptr_array_add (text, NULL); + + tracker_db_interface_sqlite_fts_update_text (iface, + resource_buffer->id, + (gchar **) properties->pdata, + (gchar **) text->pdata, + create); + update_buffer.fts_ever_updated = TRUE; + g_ptr_array_free (properties, TRUE); + g_ptr_array_free (text, TRUE); + } } #endif } @@ -1047,19 +1060,12 @@ static void tracker_data_update_buffer_clear (void) { -#if HAVE_TRACKER_FTS - TrackerDBInterface *iface; - - iface = tracker_db_manager_get_db_interface (); -#endif - g_hash_table_remove_all (update_buffer.resources); g_hash_table_remove_all (update_buffer.resources_by_id); g_hash_table_remove_all (update_buffer.resource_cache); resource_buffer = NULL; #if HAVE_TRACKER_FTS - tracker_db_interface_sqlite_fts_update_rollback (iface); update_buffer.fts_ever_updated = FALSE; #endif @@ -1450,8 +1456,6 @@ /* first fulltext indexed property to be modified * retrieve values of all fulltext indexed properties */ - tracker_db_interface_sqlite_fts_update_init (iface, resource_buffer->id); - properties = tracker_ontologies_get_properties (&n_props); for (i = 0; i < n_props; i++) { @@ -1459,17 +1463,17 @@ if (tracker_property_get_fulltext_indexed (prop) && check_property_domain (prop)) { + const gchar *property_name; gint i; old_values = get_property_values (prop); + property_name = tracker_property_get_name (prop); /* delete old fts entries */ for (i = 0; i < old_values->n_values; i++) { - tracker_db_interface_sqlite_fts_update_text (iface, - resource_buffer->id, - -1, - g_value_get_string (g_value_array_get_nth (old_values, i)), - !tracker_property_get_fulltext_no_limit (prop)); + tracker_db_interface_sqlite_fts_delete_text (iface, + resource_buffer->id, + property_name); } } } @@ -3379,7 +3383,6 @@ #if HAVE_TRACKER_FTS if (update_buffer.fts_ever_updated) { - tracker_db_interface_sqlite_fts_update_commit (iface); update_buffer.fts_ever_updated = FALSE; } #endif diff -Nru tracker-0.15.1/src/libtracker-data/tracker-db-interface-sqlite.c tracker-0.15.2/src/libtracker-data/tracker-db-interface-sqlite.c --- tracker-0.15.1/src/libtracker-data/tracker-db-interface-sqlite.c 2012-08-07 19:05:10.000000000 +0000 +++ tracker-0.15.2/src/libtracker-data/tracker-db-interface-sqlite.c 2013-02-14 19:30:47.000000000 +0000 @@ -86,9 +86,6 @@ gint n_active_cursors; guint ro : 1; -#if HAVE_TRACKER_FTS - TrackerFts *fts; -#endif GCancellable *cancellable; TrackerDBStatementLru select_stmt_lru; @@ -97,6 +94,8 @@ TrackerBusyCallback busy_callback; gpointer busy_user_data; gchar *busy_status; + + gchar *fts_insert_str; }; struct TrackerDBInterfaceClass { @@ -988,58 +987,193 @@ db_interface->function_data = NULL; } -#if HAVE_TRACKER_FTS - if (db_interface->fts) { - tracker_fts_free (db_interface->fts); - } -#endif - if (db_interface->db) { rc = sqlite3_close (db_interface->db); g_warn_if_fail (rc == SQLITE_OK); } } +static gchar ** +_fts_create_properties (GHashTable *properties) +{ + GHashTableIter iter; + GPtrArray *cols; + GList *columns; + gchar *table; + + if (g_hash_table_size (properties) == 0) { + return NULL; + } + + g_hash_table_iter_init (&iter, properties); + cols = g_ptr_array_new (); + + while (g_hash_table_iter_next (&iter, (gpointer *) &table, + (gpointer *) &columns)) { + while (columns) { + g_ptr_array_add (cols, g_strdup (columns->data)); + columns = columns->next; + } + } + + g_ptr_array_add (cols, NULL); + + return (gchar **) g_ptr_array_free (cols, FALSE); +} + void -tracker_db_interface_sqlite_fts_init (TrackerDBInterface *db_interface, - gboolean create) +tracker_db_interface_sqlite_fts_init (TrackerDBInterface *db_interface, + GHashTable *properties, + GHashTable *multivalued, + gboolean create) { #if HAVE_TRACKER_FTS - db_interface->fts = tracker_fts_new (db_interface->db, create); -#else - g_message ("FTS support is disabled"); + GStrv fts_columns = NULL; + + tracker_fts_init_db (db_interface->db); + + if (properties) { + fts_columns = _fts_create_properties (properties); + } + + if (create && + !tracker_fts_create_table (db_interface->db, "fts", + properties, multivalued)) { + g_warning ("FTS tables creation failed"); + } + + if (fts_columns) { + GString *insert, *select; + gint i = 0; + + insert = g_string_new ("INSERT INTO fts (docid"); + select = g_string_new ("SELECT rowid"); + + while (fts_columns[i]) { + g_string_append_printf (insert, ", \"%s\"", + fts_columns[i]); + g_string_append_printf (select, ", \"%s\"", + fts_columns[i]); + i++; + } + + g_string_append (select, " FROM fts_view WHERE rowid=?"); + g_string_append (insert, ") "); + g_string_append (insert, select->str); + + g_string_free (select, TRUE); + db_interface->fts_insert_str = g_string_free (insert, FALSE); + + g_strfreev (fts_columns); + } #endif } #if HAVE_TRACKER_FTS -int -tracker_db_interface_sqlite_fts_update_init (TrackerDBInterface *db_interface, - int id) +void +tracker_db_interface_sqlite_fts_alter_table (TrackerDBInterface *db_interface, + GHashTable *properties, + GHashTable *multivalued) { - return tracker_fts_update_init (db_interface->fts, id); + if (!tracker_fts_alter_table (db_interface->db, "fts", properties, multivalued)) { + g_critical ("Failed to update FTS columns"); + } } -int -tracker_db_interface_sqlite_fts_update_text (TrackerDBInterface *db_interface, - int id, - int column_id, - const char *text, - gboolean limit_word_length) +gboolean +tracker_db_interface_sqlite_fts_update_text (TrackerDBInterface *db_interface, + int id, + const gchar **properties, + const char **text, + gboolean create) { - return tracker_fts_update_text (db_interface->fts, id, column_id, text, limit_word_length); -} + TrackerDBStatement *stmt; + GError *error = NULL; -void -tracker_db_interface_sqlite_fts_update_commit (TrackerDBInterface *db_interface) -{ - return tracker_fts_update_commit (db_interface->fts); + if (!create) { + stmt = tracker_db_interface_create_statement (db_interface, + TRACKER_DB_STATEMENT_CACHE_TYPE_UPDATE, + &error, + "DELETE FROM fts WHERE docid=?"); + tracker_db_statement_bind_int (stmt, 0, id); + + tracker_db_statement_execute (stmt, &error); + g_object_unref (stmt); + + if (error) { + g_warning ("Could not update FTS text: %s", error->message); + g_error_free (error); + return FALSE; + } + } + + stmt = tracker_db_interface_create_statement (db_interface, + TRACKER_DB_STATEMENT_CACHE_TYPE_UPDATE, + &error, db_interface->fts_insert_str); + + if (!stmt || error) { + if (error) { + g_warning ("Could not create FTS insert statement: %s\n", + error->message); + g_error_free (error); + } + return FALSE; + } + + tracker_db_statement_bind_int (stmt, 0, id); + tracker_db_statement_execute (stmt, &error); + g_object_unref (stmt); + + if (error) { + g_warning ("Could not insert FTS text: %s", error->message); + g_error_free (error); + return FALSE; + } + + return TRUE; } -void -tracker_db_interface_sqlite_fts_update_rollback (TrackerDBInterface *db_interface) +gboolean +tracker_db_interface_sqlite_fts_delete_text (TrackerDBInterface *db_interface, + int id, + const gchar *property) { - return tracker_fts_update_rollback (db_interface->fts); + TrackerDBStatement *stmt; + GError *error = NULL; + gchar *query; + + query = g_strdup_printf ("UPDATE fts " + "SET \"%s\" = '' " + "WHERE docid = ?", + property); + + stmt = tracker_db_interface_create_statement (db_interface, + TRACKER_DB_STATEMENT_CACHE_TYPE_UPDATE, + &error, query); + g_free (query); + + if (!stmt || error) { + if (error) { + g_warning ("Could not create FTS update statement: %s\n", + error->message); + g_error_free (error); + } + return FALSE; + } + + tracker_db_statement_bind_int (stmt, 0, id); + tracker_db_statement_execute (stmt, &error); + g_object_unref (stmt); + + if (error) { + g_warning ("Could not execute FTS update: %s", error->message); + g_error_free (error); + return FALSE; + } + + return TRUE; } + #endif void @@ -1087,6 +1221,7 @@ db_interface = TRACKER_DB_INTERFACE (object); close_database (db_interface); + g_free (db_interface->fts_insert_str); g_message ("Closed sqlite3 database:'%s'", db_interface->filename); diff -Nru tracker-0.15.1/src/libtracker-data/tracker-db-interface-sqlite.h tracker-0.15.2/src/libtracker-data/tracker-db-interface-sqlite.h --- tracker-0.15.1/src/libtracker-data/tracker-db-interface-sqlite.h 2012-04-19 09:16:38.000000000 +0000 +++ tracker-0.15.2/src/libtracker-data/tracker-db-interface-sqlite.h 2013-02-14 19:30:47.000000000 +0000 @@ -41,19 +41,26 @@ gint64 tracker_db_interface_sqlite_get_last_insert_id (TrackerDBInterface *interface); void tracker_db_interface_sqlite_enable_shared_cache (void); void tracker_db_interface_sqlite_fts_init (TrackerDBInterface *interface, + GHashTable *properties, + GHashTable *multivalued, gboolean create); void tracker_db_interface_sqlite_reset_collator (TrackerDBInterface *interface); void tracker_db_interface_sqlite_wal_hook (TrackerDBInterface *interface, TrackerDBWalCallback callback); #if HAVE_TRACKER_FTS -int tracker_db_interface_sqlite_fts_update_init (TrackerDBInterface *interface, - int id); +void tracker_db_interface_sqlite_fts_alter_table (TrackerDBInterface *interface, + GHashTable *properties, + GHashTable *multivalued); int tracker_db_interface_sqlite_fts_update_text (TrackerDBInterface *interface, int id, - int column_id, - const char *text, - gboolean limit_word_length); + const gchar **properties, + const char **text, + gboolean create); + +gboolean tracker_db_interface_sqlite_fts_delete_text (TrackerDBInterface *db_interface, + int id, + const gchar *property); void tracker_db_interface_sqlite_fts_update_commit (TrackerDBInterface *interface); void tracker_db_interface_sqlite_fts_update_rollback (TrackerDBInterface *interface); #endif diff -Nru tracker-0.15.1/src/libtracker-data/tracker-db-manager.c tracker-0.15.2/src/libtracker-data/tracker-db-manager.c --- tracker-0.15.1/src/libtracker-data/tracker-db-manager.c 2012-10-24 15:49:50.000000000 +0000 +++ tracker-0.15.2/src/libtracker-data/tracker-db-manager.c 2013-02-14 19:30:47.000000000 +0000 @@ -57,7 +57,7 @@ #define TRACKER_DB_PAGE_SIZE_DONT_SET -1 /* Set current database version we are working with */ -#define TRACKER_DB_VERSION_NOW TRACKER_DB_VERSION_0_9_38 +#define TRACKER_DB_VERSION_NOW TRACKER_DB_VERSION_0_15_2 #define TRACKER_DB_VERSION_FILE "db-version.txt" #define TRACKER_DB_LOCALE_FILE "db-locale.txt" @@ -97,7 +97,8 @@ TRACKER_DB_VERSION_0_9_21, /* Fix for NB#186055 */ TRACKER_DB_VERSION_0_9_24, /* nmo:PhoneMessage class */ TRACKER_DB_VERSION_0_9_34, /* ontology cache */ - TRACKER_DB_VERSION_0_9_38 /* nie:url an inverse functional property */ + TRACKER_DB_VERSION_0_9_38, /* nie:url an inverse functional property */ + TRACKER_DB_VERSION_0_15_2 /* fts4 */ } TrackerDBVersion; typedef struct { @@ -1522,8 +1523,7 @@ return NULL; } - tracker_db_interface_sqlite_fts_init (interface, FALSE); - + tracker_data_manager_init_fts (interface, FALSE); tracker_db_interface_set_max_stmt_cache_size (interface, TRACKER_DB_STATEMENT_CACHE_TYPE_SELECT, diff -Nru tracker-0.15.1/src/libtracker-data/tracker-property.c tracker-0.15.2/src/libtracker-data/tracker-property.c --- tracker-0.15.1/src/libtracker-data/tracker-property.c 2011-12-07 11:29:56.000000000 +0000 +++ tracker-0.15.2/src/libtracker-data/tracker-property.c 2013-02-15 09:58:12.000000000 +0000 @@ -56,7 +56,6 @@ gboolean indexed; TrackerProperty *secondary_index; gboolean fulltext_indexed; - gboolean fulltext_no_limit; gboolean multiple_values; gboolean last_multiple_values; gboolean transient; @@ -474,18 +473,6 @@ } gboolean -tracker_property_get_fulltext_no_limit (TrackerProperty *property) -{ - TrackerPropertyPrivate *priv; - - g_return_val_if_fail (TRACKER_IS_PROPERTY (property), FALSE); - - priv = GET_PRIV (property); - - return priv->fulltext_no_limit; -} - -gboolean tracker_property_get_is_new (TrackerProperty *property) { TrackerPropertyPrivate *priv; @@ -970,19 +957,6 @@ } void -tracker_property_set_fulltext_no_limit (TrackerProperty *property, - gboolean value) -{ - TrackerPropertyPrivate *priv; - - g_return_if_fail (TRACKER_IS_PROPERTY (property)); - - priv = GET_PRIV (property); - - priv->fulltext_no_limit = value; -} - -void tracker_property_set_multiple_values (TrackerProperty *property, gboolean value) { diff -Nru tracker-0.15.1/src/libtracker-data/tracker-property.h tracker-0.15.2/src/libtracker-data/tracker-property.h --- tracker-0.15.1/src/libtracker-data/tracker-property.h 2011-12-07 11:29:56.000000000 +0000 +++ tracker-0.15.2/src/libtracker-data/tracker-property.h 2013-02-15 09:58:12.000000000 +0000 @@ -86,7 +86,6 @@ gboolean tracker_property_get_indexed (TrackerProperty *property); TrackerProperty * tracker_property_get_secondary_index (TrackerProperty *property); gboolean tracker_property_get_fulltext_indexed (TrackerProperty *property); -gboolean tracker_property_get_fulltext_no_limit (TrackerProperty *property); gboolean tracker_property_get_multiple_values (TrackerProperty *property); gboolean tracker_property_get_last_multiple_values(TrackerProperty *property); gboolean tracker_property_get_transient (TrackerProperty *property); @@ -121,8 +120,6 @@ TrackerProperty *value); void tracker_property_set_fulltext_indexed (TrackerProperty *property, gboolean value); -void tracker_property_set_fulltext_no_limit (TrackerProperty *property, - gboolean value); void tracker_property_set_multiple_values (TrackerProperty *property, gboolean value); void tracker_property_set_last_multiple_values(TrackerProperty *property, diff -Nru tracker-0.15.1/src/libtracker-data/tracker-sparql-expression.c tracker-0.15.2/src/libtracker-data/tracker-sparql-expression.c --- tracker-0.15.1/src/libtracker-data/tracker-sparql-expression.c 2013-01-24 16:46:03.000000000 +0000 +++ tracker-0.15.2/src/libtracker-data/tracker-sparql-expression.c 2013-02-15 11:38:31.000000000 +0000 @@ -52,9 +52,9 @@ typedef struct _TrackerSparqlQuery TrackerSparqlQuery; typedef struct _TrackerSparqlQueryClass TrackerSparqlQueryClass; +#define _g_free0(var) (var = (g_free (var), NULL)) #define TRACKER_TYPE_SPARQL_TOKEN_TYPE (tracker_sparql_token_type_get_type ()) -#define _g_free0(var) (var = (g_free (var), NULL)) #define TRACKER_SPARQL_TYPE_VARIABLE (tracker_sparql_variable_get_type ()) #define TRACKER_SPARQL_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TRACKER_SPARQL_TYPE_VARIABLE, TrackerSparqlVariable)) @@ -145,6 +145,7 @@ #define TRACKER_SPARQL_TYPE_VARIABLE_STATE (tracker_sparql_variable_state_get_type ()) #define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL))) +typedef struct _TrackerSparqlPatternPrivate TrackerSparqlPatternPrivate; #define TRACKER_SPARQL_TYPE_LITERAL_BINDING (tracker_sparql_literal_binding_get_type ()) #define TRACKER_SPARQL_LITERAL_BINDING(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TRACKER_SPARQL_TYPE_LITERAL_BINDING, TrackerSparqlLiteralBinding)) @@ -169,6 +170,7 @@ struct _TrackerSparqlExpressionPrivate { TrackerSparqlQuery* query; + gchar* fts_sql; }; typedef enum { @@ -347,6 +349,22 @@ TRACKER_SPARQL_VARIABLE_STATE_OPTIONAL } TrackerSparqlVariableState; +struct _TrackerSparqlPattern { + GObject parent_instance; + TrackerSparqlPatternPrivate * priv; + gchar* current_graph; + TrackerSparqlVariable* fts_subject; + gchar** fts_variables; + gint fts_variables_length1; + gint _fts_variables_size_; + GString* match_str; + gboolean queries_fts_data; +}; + +struct _TrackerSparqlPatternClass { + GObjectClass parent_class; +}; + struct _TrackerSparqlLiteralBinding { TrackerSparqlDataBinding parent_instance; TrackerSparqlLiteralBindingPrivate * priv; @@ -438,6 +456,8 @@ void tracker_sparql_pattern_add_variable_binding (TrackerSparqlPattern* self, GString* sql, TrackerSparqlVariableBinding* binding, TrackerSparqlVariableState variable_state); static void _vala_array_add1 (gchar*** array, int* length, int* size, gchar* value); static void _vala_array_add2 (gchar*** array, int* length, int* size, gchar* value); +static void _vala_array_add3 (gchar*** array, int* length, int* size, gchar* value); +static void _vala_array_add4 (gchar*** array, int* length, int* size, gchar* value); static void tracker_sparql_expression_translate_expression_as_order_condition (TrackerSparqlExpression* self, GString* sql, GError** error); void tracker_sparql_expression_translate_order_condition (TrackerSparqlExpression* self, GString* sql, GError** error); static void tracker_sparql_expression_translate_bound_call (TrackerSparqlExpression* self, GString* sql, GError** error); @@ -486,24 +506,24 @@ TrackerSparqlExpression* tracker_sparql_expression_construct (GType object_type, TrackerSparqlQuery* query) { TrackerSparqlExpression * self = NULL; TrackerSparqlQuery* _tmp0_; -#line 29 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 31 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (query != NULL, NULL); -#line 29 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 31 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" self = (TrackerSparqlExpression*) g_object_new (object_type, NULL); -#line 30 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 32 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = query; -#line 30 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 32 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" self->priv->query = _tmp0_; -#line 29 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 31 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return self; -#line 500 "tracker-sparql-expression.c" +#line 520 "tracker-sparql-expression.c" } TrackerSparqlExpression* tracker_sparql_expression_new (TrackerSparqlQuery* query) { -#line 29 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 31 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return tracker_sparql_expression_construct (TRACKER_SPARQL_TYPE_EXPRESSION, query); -#line 507 "tracker-sparql-expression.c" +#line 527 "tracker-sparql-expression.c" } @@ -513,38 +533,38 @@ gboolean _tmp1_ = FALSE; gboolean _tmp2_; GError * _inner_error_ = NULL; -#line 41 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 43 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, FALSE); -#line 42 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 44 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = self->priv->query; -#line 42 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 44 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = tracker_sparql_query_next (_tmp0_, &_inner_error_); -#line 42 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 44 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = _tmp1_; -#line 42 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 44 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 42 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 44 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 42 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 44 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 42 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 44 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return FALSE; -#line 533 "tracker-sparql-expression.c" +#line 553 "tracker-sparql-expression.c" } else { -#line 42 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 44 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 42 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 44 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 42 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 44 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return FALSE; -#line 541 "tracker-sparql-expression.c" +#line 561 "tracker-sparql-expression.c" } } -#line 42 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 44 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp2_; -#line 42 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 44 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 548 "tracker-sparql-expression.c" +#line 568 "tracker-sparql-expression.c" } @@ -552,17 +572,17 @@ TrackerSparqlTokenType result = 0; TrackerSparqlQuery* _tmp0_; TrackerSparqlTokenType _tmp1_ = 0; -#line 45 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 47 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 46 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 48 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = self->priv->query; -#line 46 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 48 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = tracker_sparql_query_current (_tmp0_); -#line 46 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 48 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp1_; -#line 46 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 48 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 566 "tracker-sparql-expression.c" +#line 586 "tracker-sparql-expression.c" } @@ -570,17 +590,17 @@ TrackerSparqlTokenType result = 0; TrackerSparqlQuery* _tmp0_; TrackerSparqlTokenType _tmp1_ = 0; -#line 49 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 51 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 50 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 52 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = self->priv->query; -#line 50 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 52 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = tracker_sparql_query_last (_tmp0_); -#line 50 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 52 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp1_; -#line 50 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 52 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 584 "tracker-sparql-expression.c" +#line 604 "tracker-sparql-expression.c" } @@ -591,40 +611,40 @@ gboolean _tmp2_ = FALSE; gboolean _tmp3_; GError * _inner_error_ = NULL; -#line 53 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 55 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, FALSE); -#line 54 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 56 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = self->priv->query; -#line 54 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 56 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = type; -#line 54 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 56 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = tracker_sparql_query_accept (_tmp0_, _tmp1_, &_inner_error_); -#line 54 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 56 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = _tmp2_; -#line 54 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 56 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 54 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 56 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 54 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 56 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 54 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 56 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return FALSE; -#line 613 "tracker-sparql-expression.c" +#line 633 "tracker-sparql-expression.c" } else { -#line 54 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 56 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 54 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 56 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 54 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 56 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return FALSE; -#line 621 "tracker-sparql-expression.c" +#line 641 "tracker-sparql-expression.c" } } -#line 54 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 56 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp3_; -#line 54 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 56 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 628 "tracker-sparql-expression.c" +#line 648 "tracker-sparql-expression.c" } @@ -633,21 +653,21 @@ TrackerSparqlQuery* _tmp0_; const gchar* _tmp1_; GError* _tmp2_ = NULL; -#line 57 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 59 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, NULL); -#line 57 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 59 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (msg != NULL, NULL); -#line 58 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 60 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = self->priv->query; -#line 58 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 60 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = msg; -#line 58 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 60 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = tracker_sparql_query_get_error (_tmp0_, _tmp1_); -#line 58 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 60 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp2_; -#line 58 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 60 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 651 "tracker-sparql-expression.c" +#line 671 "tracker-sparql-expression.c" } @@ -658,40 +678,40 @@ gboolean _tmp2_ = FALSE; gboolean _tmp3_; GError * _inner_error_ = NULL; -#line 61 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 63 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, FALSE); -#line 62 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 64 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = self->priv->query; -#line 62 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 64 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = type; -#line 62 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 64 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = tracker_sparql_query_expect (_tmp0_, _tmp1_, &_inner_error_); -#line 62 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 64 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = _tmp2_; -#line 62 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 64 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 62 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 64 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 62 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 64 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 62 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 64 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return FALSE; -#line 680 "tracker-sparql-expression.c" +#line 700 "tracker-sparql-expression.c" } else { -#line 62 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 64 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 62 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 64 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 62 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 64 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return FALSE; -#line 688 "tracker-sparql-expression.c" +#line 708 "tracker-sparql-expression.c" } } -#line 62 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 64 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp3_; -#line 62 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 64 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 695 "tracker-sparql-expression.c" +#line 715 "tracker-sparql-expression.c" } @@ -700,19 +720,19 @@ TrackerSparqlQuery* _tmp0_; gint _tmp1_; gchar* _tmp2_ = NULL; -#line 65 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 67 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, NULL); -#line 66 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 68 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = self->priv->query; -#line 66 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 68 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = strip; -#line 66 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 68 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = tracker_sparql_query_get_last_string (_tmp0_, _tmp1_); -#line 66 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 68 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp2_; -#line 66 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 68 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 716 "tracker-sparql-expression.c" +#line 736 "tracker-sparql-expression.c" } @@ -727,35 +747,35 @@ gchar* _tmp5_; gchar* _tmp6_ = NULL; gchar* _tmp7_; -#line 69 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 71 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, NULL); -#line 69 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 71 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (literal != NULL, NULL); -#line 70 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 72 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = literal; -#line 70 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 72 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = _tmp1_ = g_strsplit (_tmp0_, "'", 0); -#line 70 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 72 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = _tmp2_; -#line 70 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 72 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3__length1 = _vala_array_length (_tmp1_); -#line 70 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 72 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = g_strjoinv ("''", _tmp3_); -#line 70 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 72 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = _tmp4_; -#line 70 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 72 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = g_strdup_printf ("'%s'", _tmp5_); -#line 70 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 72 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = _tmp6_; -#line 70 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 72 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp5_); -#line 70 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 72 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = (_vala_array_free (_tmp3_, _tmp3__length1, (GDestroyNotify) g_free), NULL); -#line 70 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 72 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp7_; -#line 70 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 72 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 759 "tracker-sparql-expression.c" +#line 779 "tracker-sparql-expression.c" } @@ -770,215 +790,215 @@ gboolean _tmp8_; gboolean _tmp10_; gboolean _tmp12_; -#line 73 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 75 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, FALSE); -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = type; -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp4_ == TRACKER_PROPERTY_TYPE_INTEGER) { -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = TRUE; -#line 782 "tracker-sparql-expression.c" +#line 802 "tracker-sparql-expression.c" } else { TrackerPropertyType _tmp5_; -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = type; -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = _tmp5_ == TRACKER_PROPERTY_TYPE_DOUBLE; -#line 789 "tracker-sparql-expression.c" +#line 809 "tracker-sparql-expression.c" } -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = _tmp3_; -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp6_) { -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = TRUE; -#line 797 "tracker-sparql-expression.c" +#line 817 "tracker-sparql-expression.c" } else { TrackerPropertyType _tmp7_; -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = type; -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = _tmp7_ == TRACKER_PROPERTY_TYPE_DATE; -#line 804 "tracker-sparql-expression.c" +#line 824 "tracker-sparql-expression.c" } -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = _tmp2_; -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp8_) { -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = TRUE; -#line 812 "tracker-sparql-expression.c" +#line 832 "tracker-sparql-expression.c" } else { TrackerPropertyType _tmp9_; -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = type; -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = _tmp9_ == TRACKER_PROPERTY_TYPE_DATETIME; -#line 819 "tracker-sparql-expression.c" +#line 839 "tracker-sparql-expression.c" } -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = _tmp1_; -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp10_) { -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = TRUE; -#line 827 "tracker-sparql-expression.c" +#line 847 "tracker-sparql-expression.c" } else { TrackerPropertyType _tmp11_; -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = type; -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = _tmp11_ == TRACKER_PROPERTY_TYPE_UNKNOWN; -#line 834 "tracker-sparql-expression.c" +#line 854 "tracker-sparql-expression.c" } -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = _tmp0_; -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp12_; -#line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 842 "tracker-sparql-expression.c" +#line 862 "tracker-sparql-expression.c" } static void tracker_sparql_expression_append_collate (TrackerSparqlExpression* self, GString* sql) { GString* _tmp0_; -#line 77 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 79 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (self != NULL); -#line 77 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 79 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (sql != NULL); -#line 78 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 80 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = sql; -#line 78 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 80 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append_printf (_tmp0_, " COLLATE %s", TRACKER_COLLATION_NAME); -#line 856 "tracker-sparql-expression.c" +#line 876 "tracker-sparql-expression.c" } static void tracker_sparql_expression_skip_bracketted_expression (TrackerSparqlExpression* self, GError** error) { GError * _inner_error_ = NULL; -#line 81 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 83 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (self != NULL); -#line 82 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 84 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 82 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 84 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 82 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 84 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 82 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 84 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 82 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 84 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 874 "tracker-sparql-expression.c" +#line 894 "tracker-sparql-expression.c" } else { -#line 82 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 84 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 82 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 84 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 82 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 84 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 882 "tracker-sparql-expression.c" +#line 902 "tracker-sparql-expression.c" } } -#line 83 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 85 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" while (TRUE) { -#line 887 "tracker-sparql-expression.c" +#line 907 "tracker-sparql-expression.c" TrackerSparqlTokenType _tmp0_ = 0; -#line 84 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 86 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = tracker_sparql_expression_current (self); -#line 84 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 86 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" switch (_tmp0_) { -#line 84 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 86 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS: -#line 895 "tracker-sparql-expression.c" +#line 915 "tracker-sparql-expression.c" { -#line 87 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 89 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_skip_bracketted_expression (self, &_inner_error_); -#line 87 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 89 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 87 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 89 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 87 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 89 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 87 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 89 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 907 "tracker-sparql-expression.c" +#line 927 "tracker-sparql-expression.c" } else { -#line 87 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 89 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 87 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 89 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 87 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 89 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 915 "tracker-sparql-expression.c" +#line 935 "tracker-sparql-expression.c" } } -#line 88 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 90 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" continue; -#line 920 "tracker-sparql-expression.c" +#line 940 "tracker-sparql-expression.c" } -#line 84 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 86 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS: -#line 84 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 86 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_EOF: -#line 926 "tracker-sparql-expression.c" +#line 946 "tracker-sparql-expression.c" { -#line 91 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 93 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 930 "tracker-sparql-expression.c" +#line 950 "tracker-sparql-expression.c" } default: { -#line 93 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 95 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 93 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 95 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 93 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 95 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 93 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 95 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 93 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 95 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 944 "tracker-sparql-expression.c" +#line 964 "tracker-sparql-expression.c" } else { -#line 93 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 95 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 93 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 95 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 93 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 95 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 952 "tracker-sparql-expression.c" +#line 972 "tracker-sparql-expression.c" } } -#line 94 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 96 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" continue; -#line 957 "tracker-sparql-expression.c" +#line 977 "tracker-sparql-expression.c" } } -#line 96 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 98 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 962 "tracker-sparql-expression.c" +#line 982 "tracker-sparql-expression.c" } -#line 98 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 98 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 98 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 98 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 98 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 974 "tracker-sparql-expression.c" +#line 994 "tracker-sparql-expression.c" } else { -#line 98 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 98 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 98 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 982 "tracker-sparql-expression.c" +#line 1002 "tracker-sparql-expression.c" } } } @@ -986,98 +1006,98 @@ void tracker_sparql_expression_skip_select_variables (TrackerSparqlExpression* self, GError** error) { GError * _inner_error_ = NULL; -#line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (self != NULL); -#line 102 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 104 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" while (TRUE) { -#line 994 "tracker-sparql-expression.c" +#line 1014 "tracker-sparql-expression.c" TrackerSparqlTokenType _tmp0_ = 0; -#line 103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = tracker_sparql_expression_current (self); -#line 103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" switch (_tmp0_) { -#line 103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS: -#line 1002 "tracker-sparql-expression.c" +#line 1022 "tracker-sparql-expression.c" { -#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 107 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_skip_bracketted_expression (self, &_inner_error_); -#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 107 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 107 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 107 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 107 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 1014 "tracker-sparql-expression.c" +#line 1034 "tracker-sparql-expression.c" } else { -#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 107 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 107 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 107 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 1022 "tracker-sparql-expression.c" +#line 1042 "tracker-sparql-expression.c" } } -#line 106 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 108 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" continue; -#line 1027 "tracker-sparql-expression.c" +#line 1047 "tracker-sparql-expression.c" } -#line 103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_FROM: -#line 103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_WHERE: -#line 103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_OPEN_BRACE: -#line 103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_GROUP: -#line 103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_ORDER: -#line 103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_LIMIT: -#line 103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_OFFSET: -#line 103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_EOF: -#line 1045 "tracker-sparql-expression.c" +#line 1065 "tracker-sparql-expression.c" { -#line 115 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 1049 "tracker-sparql-expression.c" +#line 1069 "tracker-sparql-expression.c" } default: { -#line 117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 119 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 119 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 119 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 119 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 119 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 1063 "tracker-sparql-expression.c" +#line 1083 "tracker-sparql-expression.c" } else { -#line 117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 119 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 119 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 119 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 1071 "tracker-sparql-expression.c" +#line 1091 "tracker-sparql-expression.c" } } -#line 118 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" continue; -#line 1076 "tracker-sparql-expression.c" +#line 1096 "tracker-sparql-expression.c" } } -#line 120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 122 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 1081 "tracker-sparql-expression.c" +#line 1101 "tracker-sparql-expression.c" } } @@ -1101,7 +1121,7 @@ _tmp3_ = end; #line 1339 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" if (_tmp3_ == NULL) { -#line 1105 "tracker-sparql-expression.c" +#line 1125 "tracker-sparql-expression.c" glong _tmp4_; #line 1340 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp4_ = maxlen; @@ -1109,7 +1129,7 @@ result = _tmp4_; #line 1340 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" return result; -#line 1113 "tracker-sparql-expression.c" +#line 1133 "tracker-sparql-expression.c" } else { gchar* _tmp5_; gchar* _tmp6_; @@ -1121,7 +1141,7 @@ result = (glong) (_tmp5_ - _tmp6_); #line 1342 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" return result; -#line 1125 "tracker-sparql-expression.c" +#line 1145 "tracker-sparql-expression.c" } } @@ -1146,23 +1166,23 @@ _tmp1_ = offset; #line 1351 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" if (_tmp1_ >= ((glong) 0)) { -#line 1150 "tracker-sparql-expression.c" +#line 1170 "tracker-sparql-expression.c" glong _tmp2_; #line 1351 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp2_ = len; #line 1351 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp0_ = _tmp2_ >= ((glong) 0); -#line 1156 "tracker-sparql-expression.c" +#line 1176 "tracker-sparql-expression.c" } else { #line 1351 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp0_ = FALSE; -#line 1160 "tracker-sparql-expression.c" +#line 1180 "tracker-sparql-expression.c" } #line 1351 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp3_ = _tmp0_; #line 1351 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" if (_tmp3_) { -#line 1166 "tracker-sparql-expression.c" +#line 1186 "tracker-sparql-expression.c" glong _tmp4_; glong _tmp5_; glong _tmp6_ = 0L; @@ -1174,7 +1194,7 @@ _tmp6_ = string_strnlen ((gchar*) self, _tmp4_ + _tmp5_); #line 1353 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" string_length = _tmp6_; -#line 1178 "tracker-sparql-expression.c" +#line 1198 "tracker-sparql-expression.c" } else { gint _tmp7_; gint _tmp8_; @@ -1184,13 +1204,13 @@ _tmp8_ = _tmp7_; #line 1355 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" string_length = (glong) _tmp8_; -#line 1188 "tracker-sparql-expression.c" +#line 1208 "tracker-sparql-expression.c" } #line 1358 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp9_ = offset; #line 1358 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" if (_tmp9_ < ((glong) 0)) { -#line 1194 "tracker-sparql-expression.c" +#line 1214 "tracker-sparql-expression.c" glong _tmp10_; glong _tmp11_; glong _tmp12_; @@ -1204,7 +1224,7 @@ _tmp12_ = offset; #line 1360 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" g_return_val_if_fail (_tmp12_ >= ((glong) 0), NULL); -#line 1208 "tracker-sparql-expression.c" +#line 1228 "tracker-sparql-expression.c" } else { glong _tmp13_; glong _tmp14_; @@ -1214,13 +1234,13 @@ _tmp14_ = string_length; #line 1362 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" g_return_val_if_fail (_tmp13_ <= _tmp14_, NULL); -#line 1218 "tracker-sparql-expression.c" +#line 1238 "tracker-sparql-expression.c" } #line 1364 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp15_ = len; #line 1364 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" if (_tmp15_ < ((glong) 0)) { -#line 1224 "tracker-sparql-expression.c" +#line 1244 "tracker-sparql-expression.c" glong _tmp16_; glong _tmp17_; #line 1365 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" @@ -1229,7 +1249,7 @@ _tmp17_ = offset; #line 1365 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" len = _tmp16_ - _tmp17_; -#line 1233 "tracker-sparql-expression.c" +#line 1253 "tracker-sparql-expression.c" } #line 1367 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp18_ = offset; @@ -1249,31 +1269,31 @@ result = _tmp23_; #line 1368 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" return result; -#line 1253 "tracker-sparql-expression.c" +#line 1273 "tracker-sparql-expression.c" } static gpointer _g_object_ref0 (gpointer self) { -#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return self ? g_object_ref (self) : NULL; -#line 1260 "tracker-sparql-expression.c" +#line 1280 "tracker-sparql-expression.c" } static void _vala_array_add1 (gchar*** array, int* length, int* size, gchar* value) { -#line 202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if ((*length) == (*size)) { -#line 202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" *size = (*size) ? (2 * (*size)) : 4; -#line 202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" *array = g_renew (gchar*, *array, (*size) + 1); -#line 1271 "tracker-sparql-expression.c" +#line 1291 "tracker-sparql-expression.c" } -#line 202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" (*array)[(*length)++] = value; -#line 202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" (*array)[*length] = NULL; -#line 1277 "tracker-sparql-expression.c" +#line 1297 "tracker-sparql-expression.c" } @@ -1284,13 +1304,47 @@ *size = (*size) ? (2 * (*size)) : 4; #line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" *array = g_renew (gchar*, *array, (*size) + 1); -#line 1288 "tracker-sparql-expression.c" +#line 1308 "tracker-sparql-expression.c" } #line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" (*array)[(*length)++] = value; #line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" (*array)[*length] = NULL; -#line 1294 "tracker-sparql-expression.c" +#line 1314 "tracker-sparql-expression.c" +} + + +static void _vala_array_add3 (gchar*** array, int* length, int* size, gchar* value) { +#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if ((*length) == (*size)) { +#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + *size = (*size) ? (2 * (*size)) : 4; +#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + *array = g_renew (gchar*, *array, (*size) + 1); +#line 1325 "tracker-sparql-expression.c" + } +#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + (*array)[(*length)++] = value; +#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + (*array)[*length] = NULL; +#line 1331 "tracker-sparql-expression.c" +} + + +static void _vala_array_add4 (gchar*** array, int* length, int* size, gchar* value) { +#line 222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if ((*length) == (*size)) { +#line 222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + *size = (*size) ? (2 * (*size)) : 4; +#line 222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + *array = g_renew (gchar*, *array, (*size) + 1); +#line 1342 "tracker-sparql-expression.c" + } +#line 222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + (*array)[(*length)++] = value; +#line 222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + (*array)[*length] = NULL; +#line 1348 "tracker-sparql-expression.c" } @@ -1306,30 +1360,33 @@ gboolean _tmp42_; gboolean _tmp46_ = FALSE; gboolean _tmp47_; - gboolean _tmp83_; - TrackerSparqlVariable* _tmp84_; + TrackerSparqlPattern* _tmp83_; + TrackerSparqlPattern* _tmp84_; + TrackerSparqlVariable* _tmp85_; + gboolean _tmp117_; + TrackerSparqlVariable* _tmp118_; GError * _inner_error_ = NULL; -#line 124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 126 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 126 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 125 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 127 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable = NULL; -#line 126 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - expect_close_parens = FALSE; #line 128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + expect_close_parens = FALSE; +#line 130 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = sql; -#line 128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 130 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = _tmp0_->len; -#line 128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 130 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" begin = (glong) _tmp1_; -#line 129 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type = TRACKER_PROPERTY_TYPE_UNKNOWN; -#line 130 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 132 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = tracker_sparql_expression_current (self); -#line 130 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 132 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp2_ == TRACKER_SPARQL_TOKEN_TYPE_VAR) { -#line 1333 "tracker-sparql-expression.c" +#line 1390 "tracker-sparql-expression.c" GString* _tmp3_; TrackerPropertyType _tmp4_ = 0; TrackerPropertyType _tmp5_; @@ -1343,68 +1400,68 @@ TrackerSparqlVariable* _tmp13_; TrackerSparqlVariable* _tmp14_; TrackerSparqlVariableBinding* _tmp15_; -#line 131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = sql; -#line 131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = tracker_sparql_expression_translate_expression (self, _tmp3_, &_inner_error_); -#line 131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = _tmp4_; -#line 131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1363 "tracker-sparql-expression.c" +#line 1420 "tracker-sparql-expression.c" } else { -#line 131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1373 "tracker-sparql-expression.c" +#line 1430 "tracker-sparql-expression.c" } } -#line 131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - type = _tmp5_; #line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + type = _tmp5_; +#line 135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = tracker_sparql_expression_get_context (self); -#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = _tmp6_; -#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = tracker_sparql_expression_get_last_string (self, 0); -#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = _tmp8_; -#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = string_substring (_tmp9_, (glong) 1, (glong) (-1)); -#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = _tmp10_; -#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = tracker_sparql_context_get_variable (_tmp7_, _tmp11_); -#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_ = _g_object_ref0 (_tmp12_); -#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable = _tmp13_; -#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp11_); -#line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (_tmp9_); #line 135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (_tmp9_); +#line 137 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp14_ = variable; -#line 135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 137 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_ = _tmp14_->binding; -#line 135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 137 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp15_ == NULL) { -#line 1408 "tracker-sparql-expression.c" +#line 1465 "tracker-sparql-expression.c" TrackerSparqlVariable* _tmp16_; const gchar* _tmp17_; const gchar* _tmp18_; @@ -1412,84 +1469,84 @@ gchar* _tmp20_; GError* _tmp21_ = NULL; GError* _tmp22_; -#line 136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp16_ = variable; -#line 136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp17_ = tracker_sparql_variable_get_name (_tmp16_); -#line 136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp18_ = _tmp17_; -#line 136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp19_ = g_strdup_printf ("use of undefined variable `%s'", _tmp18_); -#line 136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp20_ = _tmp19_; -#line 136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp21_ = tracker_sparql_expression_get_error (self, _tmp20_); -#line 136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp22_ = _tmp21_; -#line 136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp20_); -#line 136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp22_; -#line 136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1442 "tracker-sparql-expression.c" +#line 1499 "tracker-sparql-expression.c" } else { -#line 136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1452 "tracker-sparql-expression.c" +#line 1509 "tracker-sparql-expression.c" } } } else { gboolean _tmp23_ = FALSE; gboolean _tmp24_; -#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp23_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp24_ = _tmp23_; -#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1472 "tracker-sparql-expression.c" +#line 1529 "tracker-sparql-expression.c" } else { -#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1482 "tracker-sparql-expression.c" +#line 1539 "tracker-sparql-expression.c" } } -#line 138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp24_) { -#line 1487 "tracker-sparql-expression.c" +#line 1544 "tracker-sparql-expression.c" TrackerSparqlTokenType _tmp25_ = 0; -#line 139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp25_ = tracker_sparql_expression_current (self); -#line 139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp25_ == TRACKER_SPARQL_TOKEN_TYPE_SELECT) { -#line 1493 "tracker-sparql-expression.c" +#line 1550 "tracker-sparql-expression.c" GString* _tmp26_; TrackerSparqlPattern* _tmp27_; TrackerSparqlPattern* _tmp28_; @@ -1499,244 +1556,244 @@ GString* _tmp31_; TrackerSparqlSelectContext* _tmp32_; TrackerPropertyType _tmp33_; -#line 142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp26_ = sql; -#line 142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp26_, "("); -#line 143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp27_ = tracker_sparql_expression_get_pattern (self); -#line 143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp28_ = _tmp27_; -#line 143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp29_ = sql; -#line 143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp30_ = tracker_sparql_pattern_translate_select (_tmp28_, _tmp29_, TRUE, TRUE, &_inner_error_); -#line 143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" select_context = _tmp30_; -#line 143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1527 "tracker-sparql-expression.c" +#line 1584 "tracker-sparql-expression.c" } else { -#line 143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1537 "tracker-sparql-expression.c" +#line 1594 "tracker-sparql-expression.c" } } -#line 144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp31_ = sql; -#line 144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp31_, ")"); #line 146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp31_, ")"); +#line 148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tracker_sparql_context_unref0 (select_context); -#line 146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1558 "tracker-sparql-expression.c" +#line 1615 "tracker-sparql-expression.c" } else { -#line 146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tracker_sparql_context_unref0 (select_context); -#line 146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1570 "tracker-sparql-expression.c" +#line 1627 "tracker-sparql-expression.c" } } -#line 147 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp32_ = select_context; -#line 147 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp33_ = _tmp32_->type; -#line 147 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type = _tmp33_; -#line 139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tracker_sparql_context_unref0 (select_context); -#line 1581 "tracker-sparql-expression.c" +#line 1638 "tracker-sparql-expression.c" } else { GString* _tmp34_; TrackerPropertyType _tmp35_ = 0; TrackerPropertyType _tmp36_; gboolean _tmp37_ = FALSE; gboolean _tmp38_; -#line 149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp34_ = sql; -#line 149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp35_ = tracker_sparql_expression_translate_expression (self, _tmp34_, &_inner_error_); -#line 149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp36_ = _tmp35_; -#line 149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1604 "tracker-sparql-expression.c" +#line 1661 "tracker-sparql-expression.c" } else { -#line 149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1614 "tracker-sparql-expression.c" +#line 1671 "tracker-sparql-expression.c" } } -#line 149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type = _tmp36_; -#line 150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp37_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp38_ = _tmp37_; -#line 150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1633 "tracker-sparql-expression.c" +#line 1690 "tracker-sparql-expression.c" } else { -#line 150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1643 "tracker-sparql-expression.c" +#line 1700 "tracker-sparql-expression.c" } } -#line 150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp38_) { -#line 1648 "tracker-sparql-expression.c" +#line 1705 "tracker-sparql-expression.c" } else { -#line 156 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" expect_close_parens = TRUE; -#line 1652 "tracker-sparql-expression.c" +#line 1709 "tracker-sparql-expression.c" } } } else { GString* _tmp39_; TrackerPropertyType _tmp40_ = 0; TrackerPropertyType _tmp41_; -#line 162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp39_ = sql; -#line 162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp40_ = tracker_sparql_expression_translate_expression (self, _tmp39_, &_inner_error_); -#line 162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp41_ = _tmp40_; -#line 162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1675 "tracker-sparql-expression.c" +#line 1732 "tracker-sparql-expression.c" } else { -#line 162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1685 "tracker-sparql-expression.c" +#line 1742 "tracker-sparql-expression.c" } } -#line 162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type = _tmp41_; -#line 1690 "tracker-sparql-expression.c" +#line 1747 "tracker-sparql-expression.c" } } -#line 165 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 167 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp42_ = subquery; -#line 165 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 167 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (!_tmp42_) { -#line 1697 "tracker-sparql-expression.c" +#line 1754 "tracker-sparql-expression.c" GString* _tmp43_; TrackerPropertyType _tmp44_; glong _tmp45_; -#line 166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp43_ = sql; -#line 166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp44_ = type; -#line 166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp45_ = begin; -#line 166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_convert_expression_to_string (_tmp43_, _tmp44_, _tmp45_); -#line 1709 "tracker-sparql-expression.c" +#line 1766 "tracker-sparql-expression.c" } -#line 169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp46_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_AS, &_inner_error_); -#line 169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp47_ = _tmp46_; -#line 169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1725 "tracker-sparql-expression.c" +#line 1782 "tracker-sparql-expression.c" } else { -#line 169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1735 "tracker-sparql-expression.c" +#line 1792 "tracker-sparql-expression.c" } } -#line 169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp47_) { -#line 1740 "tracker-sparql-expression.c" +#line 1797 "tracker-sparql-expression.c" gboolean _tmp48_ = FALSE; gboolean _tmp49_; GString* _tmp64_; @@ -1744,61 +1801,61 @@ const gchar* _tmp66_; const gchar* _tmp67_; gboolean _tmp68_; -#line 170 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp48_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_PN_PREFIX, &_inner_error_); -#line 170 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp49_ = _tmp48_; -#line 170 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 170 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 170 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 170 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 170 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1762 "tracker-sparql-expression.c" +#line 1819 "tracker-sparql-expression.c" } else { -#line 170 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 170 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 170 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 170 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1772 "tracker-sparql-expression.c" +#line 1829 "tracker-sparql-expression.c" } } -#line 170 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp49_) { -#line 1777 "tracker-sparql-expression.c" +#line 1834 "tracker-sparql-expression.c" TrackerSparqlContext* _tmp50_; TrackerSparqlContext* _tmp51_; gchar* _tmp52_ = NULL; gchar* _tmp53_; TrackerSparqlVariable* _tmp54_ = NULL; TrackerSparqlVariable* _tmp55_; -#line 173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 175 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp50_ = tracker_sparql_expression_get_context (self); -#line 173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 175 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp51_ = _tmp50_; -#line 173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 175 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp52_ = tracker_sparql_expression_get_last_string (self, 0); -#line 173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 175 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp53_ = _tmp52_; -#line 173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 175 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp54_ = tracker_sparql_context_get_variable (_tmp51_, _tmp53_); -#line 173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 175 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp55_ = _g_object_ref0 (_tmp54_); -#line 173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 175 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 175 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable = _tmp55_; -#line 173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 175 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp53_); -#line 1802 "tracker-sparql-expression.c" +#line 1859 "tracker-sparql-expression.c" } else { TrackerSparqlContext* _tmp56_; TrackerSparqlContext* _tmp57_; @@ -1808,72 +1865,72 @@ gchar* _tmp61_; TrackerSparqlVariable* _tmp62_ = NULL; TrackerSparqlVariable* _tmp63_; -#line 177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_VAR, &_inner_error_); -#line 177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1824 "tracker-sparql-expression.c" +#line 1881 "tracker-sparql-expression.c" } else { -#line 177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 1834 "tracker-sparql-expression.c" +#line 1891 "tracker-sparql-expression.c" } } -#line 178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp56_ = tracker_sparql_expression_get_context (self); -#line 178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp57_ = _tmp56_; -#line 178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp58_ = tracker_sparql_expression_get_last_string (self, 0); -#line 178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp59_ = _tmp58_; -#line 178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp60_ = string_substring (_tmp59_, (glong) 1, (glong) (-1)); -#line 178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp61_ = _tmp60_; -#line 178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp62_ = tracker_sparql_context_get_variable (_tmp57_, _tmp61_); -#line 178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp63_ = _g_object_ref0 (_tmp62_); -#line 178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable = _tmp63_; -#line 178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp61_); -#line 178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp59_); -#line 1861 "tracker-sparql-expression.c" +#line 1918 "tracker-sparql-expression.c" } -#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 182 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp64_ = sql; -#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 182 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp65_ = variable; -#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 182 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp66_ = tracker_sparql_variable_get_sql_expression (_tmp65_); -#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 182 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp67_ = _tmp66_; -#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append_printf (_tmp64_, " AS %s", _tmp67_); #line 182 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append_printf (_tmp64_, " AS %s", _tmp67_); +#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp68_ = subquery; -#line 182 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp68_) { -#line 1877 "tracker-sparql-expression.c" +#line 1934 "tracker-sparql-expression.c" TrackerSparqlVariableBinding* _tmp69_; TrackerSparqlVariableBinding* binding; TrackerSparqlVariableBinding* _tmp70_; @@ -1889,202 +1946,341 @@ GString* _tmp80_; GString* _tmp81_; TrackerSparqlVariableBinding* _tmp82_; -#line 183 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp69_ = tracker_sparql_variable_binding_new (); -#line 183 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" binding = _tmp69_; -#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp70_ = binding; -#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp71_ = type; -#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" ((TrackerSparqlDataBinding*) _tmp70_)->data_type = _tmp71_; -#line 185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp72_ = binding; -#line 185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp73_ = variable; -#line 185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp72_->variable = _tmp73_; -#line 186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp74_ = binding; -#line 186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp75_ = variable; -#line 186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp76_ = tracker_sparql_variable_get_sql_expression (_tmp75_); -#line 186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp77_ = _tmp76_; -#line 186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_data_binding_set_sql_expression ((TrackerSparqlDataBinding*) _tmp74_, _tmp77_); -#line 187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 189 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp78_ = tracker_sparql_expression_get_pattern (self); -#line 187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 189 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp79_ = _tmp78_; -#line 187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 189 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp80_ = g_string_new (""); -#line 187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 189 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp81_ = _tmp80_; -#line 187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 189 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp82_ = binding; -#line 187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 189 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_pattern_add_variable_binding (_tmp79_, _tmp81_, _tmp82_, TRACKER_SPARQL_VARIABLE_STATE_BOUND); -#line 187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 189 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_string_free0 (_tmp81_); -#line 182 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 1935 "tracker-sparql-expression.c" - } - } -#line 191 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp83_ = expect_close_parens; -#line 191 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_tmp83_) { -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_ != NULL) { -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_propagate_error (error, _inner_error_); -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_object_unref0 (variable); -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 1954 "tracker-sparql-expression.c" - } else { -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_object_unref0 (variable); -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_clear_error (&_inner_error_); -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 1964 "tracker-sparql-expression.c" - } +#line 1992 "tracker-sparql-expression.c" } } -#line 195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp84_ = variable; -#line 195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_tmp84_ != NULL) { -#line 1972 "tracker-sparql-expression.c" - TrackerSparqlContext* _tmp85_; - TrackerSparqlContext* _tmp86_; - GHashTable* _tmp87_; - TrackerSparqlVariable* _tmp88_; - gconstpointer _tmp89_ = NULL; - gint state; - gint _tmp90_; - TrackerSparqlContext* _tmp91_; - TrackerSparqlContext* _tmp92_; - GHashTable* _tmp93_; - TrackerSparqlVariable* _tmp94_; - TrackerSparqlVariable* _tmp95_; - gint _tmp96_; - TrackerSparqlContext* _tmp97_; - TrackerSparqlContext* _tmp98_; - TrackerSparqlContext* _tmp99_; - TrackerSparqlContext* _tmp100_; - gchar** _tmp101_; - gint _tmp101__length1; - TrackerSparqlVariable* _tmp102_; - const gchar* _tmp103_; - const gchar* _tmp104_; - gchar* _tmp105_; -#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp85_ = tracker_sparql_expression_get_context (self); -#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp86_ = _tmp85_; -#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp87_ = _tmp86_->var_set; -#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp88_ = variable; -#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp89_ = g_hash_table_lookup (_tmp87_, _tmp88_); -#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - state = GPOINTER_TO_INT (_tmp89_); +#line 193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp83_ = tracker_sparql_expression_get_pattern (self); +#line 193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp84_ = _tmp83_; +#line 193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp85_ = _tmp84_->fts_subject; +#line 193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_tmp85_ != NULL) { +#line 2003 "tracker-sparql-expression.c" + TrackerSparqlVariable* _tmp86_; + const gchar* _tmp94_; +#line 194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp86_ = variable; +#line 194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_tmp86_ == NULL) { +#line 2010 "tracker-sparql-expression.c" + TrackerSparqlContext* _tmp87_; + TrackerSparqlContext* _tmp88_; + gint _tmp89_; + gchar* _tmp90_ = NULL; + gchar* _tmp91_; + TrackerSparqlVariable* _tmp92_ = NULL; + TrackerSparqlVariable* _tmp93_; #line 197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp90_ = state; + _tmp87_ = tracker_sparql_expression_get_context (self); #line 197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_tmp90_ == 0) { -#line 198 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - state = (gint) TRACKER_SPARQL_VARIABLE_STATE_BOUND; -#line 2014 "tracker-sparql-expression.c" + _tmp88_ = _tmp87_; +#line 197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp89_ = variable_index; +#line 197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp90_ = g_strdup_printf ("var%d", _tmp89_ + 1); +#line 197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp91_ = _tmp90_; +#line 197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp92_ = tracker_sparql_context_get_variable (_tmp88_, _tmp91_); +#line 197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp93_ = _g_object_ref0 (_tmp92_); +#line 197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + variable = _tmp93_; +#line 197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (_tmp91_); +#line 2038 "tracker-sparql-expression.c" } #line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp91_ = tracker_sparql_expression_get_context (self); -#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp92_ = _tmp91_; -#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp93_ = _tmp92_->select_var_set; + _tmp94_ = self->priv->fts_sql; #line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp94_ = variable; -#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp95_ = _g_object_ref0 (_tmp94_); -#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp96_ = state; -#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_hash_table_insert (_tmp93_, _tmp95_, GINT_TO_POINTER (_tmp96_)); -#line 202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp97_ = tracker_sparql_expression_get_context (self); -#line 202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp98_ = _tmp97_; -#line 202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp99_ = tracker_sparql_expression_get_context (self); -#line 202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp100_ = _tmp99_; -#line 202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp101_ = TRACKER_SPARQL_SELECT_CONTEXT (_tmp100_)->variable_names; -#line 202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp101__length1 = TRACKER_SPARQL_SELECT_CONTEXT (_tmp100_)->variable_names_length1; + if (_tmp94_ == NULL) { +#line 2044 "tracker-sparql-expression.c" + TrackerSparqlPattern* _tmp95_; + TrackerSparqlPattern* _tmp96_; + TrackerSparqlPattern* _tmp97_; + TrackerSparqlPattern* _tmp98_; + gchar** _tmp99_; + gint _tmp99__length1; + TrackerSparqlVariable* _tmp100_; + const gchar* _tmp101_; + const gchar* _tmp102_; + gchar* _tmp103_; + GString* _tmp104_; + TrackerSparqlVariable* _tmp105_; + const gchar* _tmp106_; + const gchar* _tmp107_; +#line 201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp95_ = tracker_sparql_expression_get_pattern (self); +#line 201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp96_ = _tmp95_; +#line 201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp97_ = tracker_sparql_expression_get_pattern (self); +#line 201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp98_ = _tmp97_; +#line 201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp99_ = _tmp98_->fts_variables; +#line 201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp99__length1 = _tmp98_->fts_variables_length1; +#line 201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp100_ = variable; +#line 201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp101_ = tracker_sparql_variable_get_sql_expression (_tmp100_); +#line 201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp102_ = _tmp101_; +#line 201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp103_ = g_strdup (_tmp102_); +#line 201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _vala_array_add1 (&_tmp96_->fts_variables, &_tmp96_->fts_variables_length1, &_tmp96_->_fts_variables_size_, _tmp103_); #line 202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp102_ = variable; + _tmp104_ = sql; #line 202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp103_ = tracker_sparql_variable_get_name (_tmp102_); + _tmp105_ = variable; #line 202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp104_ = _tmp103_; + _tmp106_ = tracker_sparql_variable_get_sql_expression (_tmp105_); #line 202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp105_ = g_strdup (_tmp104_); + _tmp107_ = _tmp106_; #line 202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _vala_array_add1 (&TRACKER_SPARQL_SELECT_CONTEXT (_tmp98_)->variable_names, &TRACKER_SPARQL_SELECT_CONTEXT (_tmp98_)->variable_names_length1, &TRACKER_SPARQL_SELECT_CONTEXT (_tmp98_)->_variable_names_size_, _tmp105_); -#line 2052 "tracker-sparql-expression.c" - } else { - TrackerSparqlContext* _tmp106_; - TrackerSparqlContext* _tmp107_; - TrackerSparqlContext* _tmp108_; - TrackerSparqlContext* _tmp109_; - gchar** _tmp110_; - gint _tmp110__length1; - gint _tmp111_; - gchar* _tmp112_ = NULL; + g_string_append_printf (_tmp104_, " AS %s", _tmp107_); +#line 2091 "tracker-sparql-expression.c" + } else { + TrackerSparqlPattern* _tmp108_; + TrackerSparqlPattern* _tmp109_; + TrackerSparqlPattern* _tmp110_; + TrackerSparqlPattern* _tmp111_; + gchar** _tmp112_; + gint _tmp112__length1; + const gchar* _tmp113_; + gchar* _tmp114_; + TrackerSparqlPattern* _tmp115_; + TrackerSparqlPattern* _tmp116_; #line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp106_ = tracker_sparql_expression_get_context (self); + _tmp108_ = tracker_sparql_expression_get_pattern (self); #line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp107_ = _tmp106_; + _tmp109_ = _tmp108_; #line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp108_ = tracker_sparql_expression_get_context (self); + _tmp110_ = tracker_sparql_expression_get_pattern (self); #line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp109_ = _tmp108_; + _tmp111_ = _tmp110_; #line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp110_ = TRACKER_SPARQL_SELECT_CONTEXT (_tmp109_)->variable_names; + _tmp112_ = _tmp111_->fts_variables; #line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp110__length1 = TRACKER_SPARQL_SELECT_CONTEXT (_tmp109_)->variable_names_length1; + _tmp112__length1 = _tmp111_->fts_variables_length1; #line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp111_ = variable_index; + _tmp113_ = self->priv->fts_sql; #line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp112_ = g_strdup_printf ("var%d", _tmp111_ + 1); + _tmp114_ = g_strdup (_tmp113_); #line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _vala_array_add2 (&TRACKER_SPARQL_SELECT_CONTEXT (_tmp107_)->variable_names, &TRACKER_SPARQL_SELECT_CONTEXT (_tmp107_)->variable_names_length1, &TRACKER_SPARQL_SELECT_CONTEXT (_tmp107_)->_variable_names_size_, _tmp112_); -#line 2080 "tracker-sparql-expression.c" + _vala_array_add2 (&_tmp109_->fts_variables, &_tmp109_->fts_variables_length1, &_tmp109_->_fts_variables_size_, _tmp114_); +#line 205 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp115_ = tracker_sparql_expression_get_pattern (self); +#line 205 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp116_ = _tmp115_; +#line 205 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp116_->queries_fts_data = TRUE; +#line 2127 "tracker-sparql-expression.c" + } + } +#line 209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp117_ = expect_close_parens; +#line 209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_tmp117_) { +#line 210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); +#line 210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 2146 "tracker-sparql-expression.c" + } else { +#line 210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 2156 "tracker-sparql-expression.c" + } + } + } +#line 213 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp118_ = variable; +#line 213 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_tmp118_ != NULL) { +#line 2164 "tracker-sparql-expression.c" + TrackerSparqlContext* _tmp119_; + TrackerSparqlContext* _tmp120_; + GHashTable* _tmp121_; + TrackerSparqlVariable* _tmp122_; + gconstpointer _tmp123_ = NULL; + gint state; + gint _tmp124_; + TrackerSparqlContext* _tmp125_; + TrackerSparqlContext* _tmp126_; + GHashTable* _tmp127_; + TrackerSparqlVariable* _tmp128_; + TrackerSparqlVariable* _tmp129_; + gint _tmp130_; + TrackerSparqlContext* _tmp131_; + TrackerSparqlContext* _tmp132_; + TrackerSparqlContext* _tmp133_; + TrackerSparqlContext* _tmp134_; + gchar** _tmp135_; + gint _tmp135__length1; + TrackerSparqlVariable* _tmp136_; + const gchar* _tmp137_; + const gchar* _tmp138_; + gchar* _tmp139_; +#line 214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp119_ = tracker_sparql_expression_get_context (self); +#line 214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp120_ = _tmp119_; +#line 214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp121_ = _tmp120_->var_set; +#line 214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp122_ = variable; +#line 214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp123_ = g_hash_table_lookup (_tmp121_, _tmp122_); +#line 214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + state = GPOINTER_TO_INT (_tmp123_); +#line 215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp124_ = state; +#line 215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_tmp124_ == 0) { +#line 216 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + state = (gint) TRACKER_SPARQL_VARIABLE_STATE_BOUND; +#line 2206 "tracker-sparql-expression.c" + } +#line 218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp125_ = tracker_sparql_expression_get_context (self); +#line 218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp126_ = _tmp125_; +#line 218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp127_ = _tmp126_->select_var_set; +#line 218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp128_ = variable; +#line 218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp129_ = _g_object_ref0 (_tmp128_); +#line 218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp130_ = state; +#line 218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_hash_table_insert (_tmp127_, _tmp129_, GINT_TO_POINTER (_tmp130_)); +#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp131_ = tracker_sparql_expression_get_context (self); +#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp132_ = _tmp131_; +#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp133_ = tracker_sparql_expression_get_context (self); +#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp134_ = _tmp133_; +#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp135_ = TRACKER_SPARQL_SELECT_CONTEXT (_tmp134_)->variable_names; +#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp135__length1 = TRACKER_SPARQL_SELECT_CONTEXT (_tmp134_)->variable_names_length1; +#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp136_ = variable; +#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp137_ = tracker_sparql_variable_get_name (_tmp136_); +#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp138_ = _tmp137_; +#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp139_ = g_strdup (_tmp138_); +#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _vala_array_add3 (&TRACKER_SPARQL_SELECT_CONTEXT (_tmp132_)->variable_names, &TRACKER_SPARQL_SELECT_CONTEXT (_tmp132_)->variable_names_length1, &TRACKER_SPARQL_SELECT_CONTEXT (_tmp132_)->_variable_names_size_, _tmp139_); +#line 2244 "tracker-sparql-expression.c" + } else { + TrackerSparqlContext* _tmp140_; + TrackerSparqlContext* _tmp141_; + TrackerSparqlContext* _tmp142_; + TrackerSparqlContext* _tmp143_; + gchar** _tmp144_; + gint _tmp144__length1; + gint _tmp145_; + gchar* _tmp146_ = NULL; +#line 222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp140_ = tracker_sparql_expression_get_context (self); +#line 222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp141_ = _tmp140_; +#line 222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp142_ = tracker_sparql_expression_get_context (self); +#line 222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp143_ = _tmp142_; +#line 222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp144_ = TRACKER_SPARQL_SELECT_CONTEXT (_tmp143_)->variable_names; +#line 222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp144__length1 = TRACKER_SPARQL_SELECT_CONTEXT (_tmp143_)->variable_names_length1; +#line 222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp145_ = variable_index; +#line 222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp146_ = g_strdup_printf ("var%d", _tmp145_ + 1); +#line 222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _vala_array_add4 (&TRACKER_SPARQL_SELECT_CONTEXT (_tmp141_)->variable_names, &TRACKER_SPARQL_SELECT_CONTEXT (_tmp141_)->variable_names_length1, &TRACKER_SPARQL_SELECT_CONTEXT (_tmp141_)->_variable_names_size_, _tmp146_); +#line 2272 "tracker-sparql-expression.c" } -#line 207 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (self->priv->fts_sql); +#line 225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + self->priv->fts_sql = NULL; +#line 227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = type; -#line 207 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 207 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 2088 "tracker-sparql-expression.c" +#line 2284 "tracker-sparql-expression.c" } @@ -2096,55 +2292,55 @@ TrackerPropertyType _tmp3_ = 0; TrackerPropertyType _tmp4_; GError * _inner_error_ = NULL; -#line 210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (self != NULL); -#line 210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (sql != NULL); -#line 211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 231 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = sql; -#line 211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 231 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = _tmp0_->len; -#line 211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 231 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" begin = (glong) _tmp1_; -#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = sql; -#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = tracker_sparql_expression_translate_expression (self, _tmp2_, &_inner_error_); -#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = _tmp3_; -#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2124 "tracker-sparql-expression.c" +#line 2320 "tracker-sparql-expression.c" } else { -#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2132 "tracker-sparql-expression.c" +#line 2328 "tracker-sparql-expression.c" } } -#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp4_ == TRACKER_PROPERTY_TYPE_RESOURCE) { -#line 2137 "tracker-sparql-expression.c" +#line 2333 "tracker-sparql-expression.c" GString* _tmp5_; GString* _tmp6_; -#line 214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = sql; -#line 214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_insert (_tmp5_, (gssize) begin, "(SELECT Uri FROM Resource WHERE ID = "); -#line 215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = sql; -#line 215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp6_, ")"); -#line 2148 "tracker-sparql-expression.c" +#line 2344 "tracker-sparql-expression.c" } } @@ -2153,148 +2349,148 @@ gboolean _tmp0_ = FALSE; gboolean _tmp1_; GError * _inner_error_ = NULL; -#line 219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 239 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (self != NULL); -#line 219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 239 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (sql != NULL); -#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_ASC, &_inner_error_); -#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = _tmp0_; -#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2173 "tracker-sparql-expression.c" +#line 2369 "tracker-sparql-expression.c" } else { -#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2181 "tracker-sparql-expression.c" +#line 2377 "tracker-sparql-expression.c" } } -#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp1_) { -#line 2186 "tracker-sparql-expression.c" +#line 2382 "tracker-sparql-expression.c" GString* _tmp2_; GString* _tmp3_; -#line 221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = sql; -#line 221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_order_condition (self, _tmp2_, &_inner_error_); -#line 221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2201 "tracker-sparql-expression.c" +#line 2397 "tracker-sparql-expression.c" } else { -#line 221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2209 "tracker-sparql-expression.c" +#line 2405 "tracker-sparql-expression.c" } } -#line 222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = sql; -#line 222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp3_, " ASC"); -#line 2216 "tracker-sparql-expression.c" +#line 2412 "tracker-sparql-expression.c" } else { gboolean _tmp4_ = FALSE; gboolean _tmp5_; -#line 223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_DESC, &_inner_error_); -#line 223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = _tmp4_; -#line 223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2232 "tracker-sparql-expression.c" +#line 2428 "tracker-sparql-expression.c" } else { -#line 223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2240 "tracker-sparql-expression.c" +#line 2436 "tracker-sparql-expression.c" } } -#line 223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp5_) { -#line 2245 "tracker-sparql-expression.c" +#line 2441 "tracker-sparql-expression.c" GString* _tmp6_; GString* _tmp7_; -#line 224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = sql; -#line 224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_order_condition (self, _tmp6_, &_inner_error_); -#line 224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2260 "tracker-sparql-expression.c" +#line 2456 "tracker-sparql-expression.c" } else { -#line 224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2268 "tracker-sparql-expression.c" +#line 2464 "tracker-sparql-expression.c" } } -#line 225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 245 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = sql; -#line 225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 245 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp7_, " DESC"); -#line 2275 "tracker-sparql-expression.c" +#line 2471 "tracker-sparql-expression.c" } else { GString* _tmp8_; -#line 227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = sql; -#line 227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_order_condition (self, _tmp8_, &_inner_error_); -#line 227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2290 "tracker-sparql-expression.c" +#line 2486 "tracker-sparql-expression.c" } else { -#line 227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2298 "tracker-sparql-expression.c" +#line 2494 "tracker-sparql-expression.c" } } } @@ -2307,102 +2503,102 @@ GString* _tmp1_; GString* _tmp2_; GError * _inner_error_ = NULL; -#line 231 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (self != NULL); -#line 231 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (sql != NULL); -#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_BOUND, &_inner_error_); -#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2325 "tracker-sparql-expression.c" +#line 2521 "tracker-sparql-expression.c" } else { -#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2333 "tracker-sparql-expression.c" +#line 2529 "tracker-sparql-expression.c" } } -#line 233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2346 "tracker-sparql-expression.c" +#line 2542 "tracker-sparql-expression.c" } else { -#line 233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2354 "tracker-sparql-expression.c" +#line 2550 "tracker-sparql-expression.c" } } -#line 234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = sql; -#line 234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp0_, "("); -#line 235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = sql; -#line 235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression (self, _tmp1_, &_inner_error_); -#line 235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2373 "tracker-sparql-expression.c" +#line 2569 "tracker-sparql-expression.c" } else { -#line 235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2381 "tracker-sparql-expression.c" +#line 2577 "tracker-sparql-expression.c" } } -#line 236 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = sql; -#line 236 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp2_, " IS NOT NULL)"); -#line 237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2398 "tracker-sparql-expression.c" +#line 2594 "tracker-sparql-expression.c" } else { -#line 237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2406 "tracker-sparql-expression.c" +#line 2602 "tracker-sparql-expression.c" } } } @@ -2420,207 +2616,207 @@ GString* _tmp6_; GString* _tmp7_; GError * _inner_error_ = NULL; -#line 240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_IF, &_inner_error_); -#line 241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 2438 "tracker-sparql-expression.c" +#line 2634 "tracker-sparql-expression.c" } else { -#line 241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 2446 "tracker-sparql-expression.c" +#line 2642 "tracker-sparql-expression.c" } } -#line 242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 2459 "tracker-sparql-expression.c" +#line 2655 "tracker-sparql-expression.c" } else { -#line 242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 2467 "tracker-sparql-expression.c" +#line 2663 "tracker-sparql-expression.c" } } -#line 245 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 265 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = sql; -#line 245 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 265 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp0_, "(CASE "); -#line 246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = sql; -#line 246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression (self, _tmp1_, &_inner_error_); -#line 246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 2486 "tracker-sparql-expression.c" +#line 2682 "tracker-sparql-expression.c" } else { -#line 246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 2494 "tracker-sparql-expression.c" +#line 2690 "tracker-sparql-expression.c" } } -#line 249 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = sql; -#line 249 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp2_, " WHEN 1 THEN "); -#line 250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 270 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 270 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 270 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 270 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 270 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 2511 "tracker-sparql-expression.c" +#line 2707 "tracker-sparql-expression.c" } else { -#line 250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 270 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 270 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 270 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 2519 "tracker-sparql-expression.c" +#line 2715 "tracker-sparql-expression.c" } } -#line 251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = sql; -#line 251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = tracker_sparql_expression_translate_expression (self, _tmp3_, &_inner_error_); -#line 251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type = _tmp4_; -#line 251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 2536 "tracker-sparql-expression.c" +#line 2732 "tracker-sparql-expression.c" } else { -#line 251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 2544 "tracker-sparql-expression.c" +#line 2740 "tracker-sparql-expression.c" } } -#line 254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = sql; -#line 254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp5_, " WHEN 0 THEN "); -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 2561 "tracker-sparql-expression.c" +#line 2757 "tracker-sparql-expression.c" } else { -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 2569 "tracker-sparql-expression.c" +#line 2765 "tracker-sparql-expression.c" } } -#line 256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = sql; -#line 256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression (self, _tmp6_, &_inner_error_); -#line 256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 2584 "tracker-sparql-expression.c" +#line 2780 "tracker-sparql-expression.c" } else { -#line 256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 2592 "tracker-sparql-expression.c" +#line 2788 "tracker-sparql-expression.c" } } -#line 258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = sql; -#line 258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp7_, " ELSE NULL END)"); -#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 2609 "tracker-sparql-expression.c" +#line 2805 "tracker-sparql-expression.c" } else { -#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 2617 "tracker-sparql-expression.c" +#line 2813 "tracker-sparql-expression.c" } } -#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 282 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = type; -#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 282 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 2624 "tracker-sparql-expression.c" +#line 2820 "tracker-sparql-expression.c" } @@ -2639,246 +2835,246 @@ gboolean _tmp11_; GString* _tmp19_; GError * _inner_error_ = NULL; -#line 265 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (self != NULL); -#line 265 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (sql != NULL); -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_REGEX, &_inner_error_); -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2657 "tracker-sparql-expression.c" +#line 2853 "tracker-sparql-expression.c" } else { -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2665 "tracker-sparql-expression.c" +#line 2861 "tracker-sparql-expression.c" } } -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 287 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 287 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 287 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 287 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 287 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2678 "tracker-sparql-expression.c" +#line 2874 "tracker-sparql-expression.c" } else { -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 287 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 287 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 287 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2686 "tracker-sparql-expression.c" +#line 2882 "tracker-sparql-expression.c" } } -#line 268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = sql; -#line 268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp0_, "SparqlRegex("); -#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = sql; -#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp1_, &_inner_error_); -#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2705 "tracker-sparql-expression.c" +#line 2901 "tracker-sparql-expression.c" } else { -#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2713 "tracker-sparql-expression.c" +#line 2909 "tracker-sparql-expression.c" } } -#line 270 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = sql; -#line 270 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp2_, ", "); -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 291 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 291 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 291 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 291 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 291 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2730 "tracker-sparql-expression.c" +#line 2926 "tracker-sparql-expression.c" } else { -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 291 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 291 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 291 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2738 "tracker-sparql-expression.c" +#line 2934 "tracker-sparql-expression.c" } } -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = tracker_sparql_expression_parse_string_literal (self, NULL, &_inner_error_); -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = _tmp3_; -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2753 "tracker-sparql-expression.c" +#line 2949 "tracker-sparql-expression.c" } else { -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2761 "tracker-sparql-expression.c" +#line 2957 "tracker-sparql-expression.c" } } -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = sql; -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = _tmp4_; -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = tracker_sparql_expression_escape_sql_string_literal (self, _tmp6_); -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = _tmp7_; -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp5_, _tmp8_); -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp8_); -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp6_); -#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = sql; -#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp9_, ", "); -#line 277 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 277 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = _tmp10_; -#line 277 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 277 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 277 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 277 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2794 "tracker-sparql-expression.c" +#line 2990 "tracker-sparql-expression.c" } else { -#line 277 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 277 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 277 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2802 "tracker-sparql-expression.c" +#line 2998 "tracker-sparql-expression.c" } } -#line 277 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp11_) { -#line 2807 "tracker-sparql-expression.c" +#line 3003 "tracker-sparql-expression.c" gchar* _tmp12_ = NULL; gchar* _tmp13_; GString* _tmp14_; gchar* _tmp15_; gchar* _tmp16_ = NULL; gchar* _tmp17_; -#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = tracker_sparql_expression_parse_string_literal (self, NULL, &_inner_error_); -#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_ = _tmp12_; -#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2826 "tracker-sparql-expression.c" +#line 3022 "tracker-sparql-expression.c" } else { -#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2834 "tracker-sparql-expression.c" +#line 3030 "tracker-sparql-expression.c" } } -#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp14_ = sql; -#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_ = _tmp13_; -#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp16_ = tracker_sparql_expression_escape_sql_string_literal (self, _tmp15_); -#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp17_ = _tmp16_; -#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp14_, _tmp17_); -#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp17_); -#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp15_); -#line 2851 "tracker-sparql-expression.c" +#line 3047 "tracker-sparql-expression.c" } else { GString* _tmp18_; -#line 282 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp18_ = sql; -#line 282 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp18_, "''"); -#line 2858 "tracker-sparql-expression.c" +#line 3054 "tracker-sparql-expression.c" } -#line 284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 304 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp19_ = sql; -#line 284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 304 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp19_, ")"); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2874 "tracker-sparql-expression.c" +#line 3070 "tracker-sparql-expression.c" } else { -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2882 "tracker-sparql-expression.c" +#line 3078 "tracker-sparql-expression.c" } } } @@ -2891,46 +3087,46 @@ GString* _tmp3_; GString* _tmp4_; GError * _inner_error_ = NULL; -#line 288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (self != NULL); -#line 288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (sql != NULL); -#line 289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = sql; -#line 289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp0_, "("); -#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = tracker_sparql_expression_get_pattern (self); -#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = _tmp1_; -#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = sql; -#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_pattern_translate_exists (_tmp2_, _tmp3_, &_inner_error_); -#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2919 "tracker-sparql-expression.c" +#line 3115 "tracker-sparql-expression.c" } else { -#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 2927 "tracker-sparql-expression.c" +#line 3123 "tracker-sparql-expression.c" } } -#line 291 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = sql; -#line 291 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp4_, ")"); -#line 2934 "tracker-sparql-expression.c" +#line 3130 "tracker-sparql-expression.c" } @@ -2942,152 +3138,152 @@ const gchar* _tmp3_; GString* _tmp4_; TrackerPropertyType _tmp5_; -#line 294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (sql != NULL); -#line 294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (expression != NULL); -#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = sql; -#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = _tmp0_->len; -#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" begin = (glong) _tmp1_; -#line 296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = sql; -#line 296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = expression; -#line 296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp2_, _tmp3_); -#line 297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = sql; -#line 297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = type; -#line 297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_convert_expression_to_string (_tmp4_, _tmp5_, begin); -#line 2968 "tracker-sparql-expression.c" +#line 3164 "tracker-sparql-expression.c" } static void tracker_sparql_expression_convert_expression_to_string (GString* sql, TrackerPropertyType type, glong begin) { TrackerPropertyType _tmp0_; -#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (sql != NULL); -#line 301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = type; -#line 301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" switch (_tmp0_) { -#line 301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_PROPERTY_TYPE_STRING: -#line 301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_PROPERTY_TYPE_INTEGER: -#line 2984 "tracker-sparql-expression.c" +#line 3180 "tracker-sparql-expression.c" { -#line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 327 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 2988 "tracker-sparql-expression.c" +#line 3184 "tracker-sparql-expression.c" } -#line 301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_PROPERTY_TYPE_RESOURCE: -#line 2992 "tracker-sparql-expression.c" +#line 3188 "tracker-sparql-expression.c" { GString* _tmp1_; glong _tmp2_; GString* _tmp3_; -#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = sql; -#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = begin; -#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_insert (_tmp1_, (gssize) _tmp2_, "(SELECT Uri FROM Resource WHERE ID = "); -#line 311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 331 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = sql; -#line 311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 331 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp3_, ")"); -#line 312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 332 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 3009 "tracker-sparql-expression.c" +#line 3205 "tracker-sparql-expression.c" } -#line 301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_PROPERTY_TYPE_BOOLEAN: -#line 3013 "tracker-sparql-expression.c" +#line 3209 "tracker-sparql-expression.c" { GString* _tmp4_; glong _tmp5_; GString* _tmp6_; -#line 315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = sql; -#line 315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = begin; -#line 315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_insert (_tmp4_, (gssize) _tmp5_, "CASE "); -#line 316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = sql; -#line 316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp6_, " WHEN 1 THEN 'true' WHEN 0 THEN 'false' ELSE NULL END"); -#line 317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 337 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 3030 "tracker-sparql-expression.c" +#line 3226 "tracker-sparql-expression.c" } -#line 301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_PROPERTY_TYPE_DATE: -#line 3034 "tracker-sparql-expression.c" +#line 3230 "tracker-sparql-expression.c" { GString* _tmp7_; glong _tmp8_; GString* _tmp9_; -#line 320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 340 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = sql; -#line 320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 340 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = begin; -#line 320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 340 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_insert (_tmp7_, (gssize) _tmp8_, "strftime (\"%Y-%m-%d\", "); -#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 341 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = sql; -#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 341 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp9_, ", \"unixepoch\")"); -#line 322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 3051 "tracker-sparql-expression.c" +#line 3247 "tracker-sparql-expression.c" } -#line 301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_PROPERTY_TYPE_DATETIME: -#line 3055 "tracker-sparql-expression.c" +#line 3251 "tracker-sparql-expression.c" { GString* _tmp10_; glong _tmp11_; GString* _tmp12_; -#line 325 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = sql; -#line 325 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = begin; -#line 325 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_insert (_tmp10_, (gssize) _tmp11_, "SparqlFormatTime ("); -#line 326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 346 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = sql; -#line 326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 346 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp12_, ")"); -#line 327 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 347 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 3072 "tracker-sparql-expression.c" +#line 3268 "tracker-sparql-expression.c" } default: { GString* _tmp13_; glong _tmp14_; GString* _tmp15_; -#line 330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_ = sql; -#line 330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp14_ = begin; -#line 330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_insert (_tmp13_, (gssize) _tmp14_, "CAST ("); -#line 331 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_ = sql; -#line 331 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp15_, " AS TEXT)"); -#line 332 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 3091 "tracker-sparql-expression.c" +#line 3287 "tracker-sparql-expression.c" } } } @@ -3096,21 +3292,21 @@ static void tracker_sparql_expression_translate_expression_as_string (TrackerSparqlExpression* self, GString* sql, GError** error) { TrackerSparqlTokenType _tmp0_ = 0; GError * _inner_error_ = NULL; -#line 336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (self != NULL); -#line 336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (sql != NULL); -#line 337 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 357 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = tracker_sparql_expression_current (self); -#line 337 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 357 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" switch (_tmp0_) { -#line 337 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 357 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_IRI_REF: -#line 337 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 357 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_PN_PREFIX: -#line 337 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 357 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_COLON: -#line 3114 "tracker-sparql-expression.c" +#line 3310 "tracker-sparql-expression.c" { TrackerSparqlLiteralBinding* _tmp1_; TrackerSparqlLiteralBinding* binding; @@ -3123,79 +3319,79 @@ TrackerSparqlLiteralBinding* _tmp7_; gboolean _tmp8_ = FALSE; gboolean _tmp9_; -#line 342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = tracker_sparql_literal_binding_new (); -#line 342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" binding = _tmp1_; -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = tracker_sparql_expression_get_pattern (self); -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = _tmp2_; -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = tracker_sparql_pattern_parse_var_or_term (_tmp3_, NULL, &_tmp4_, &_inner_error_); -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" is_var = _tmp4_; -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = _tmp5_; -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3151 "tracker-sparql-expression.c" +#line 3347 "tracker-sparql-expression.c" } else { -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3161 "tracker-sparql-expression.c" +#line 3357 "tracker-sparql-expression.c" } } -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = binding; -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp7_->literal); -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_->literal = _tmp6_; -#line 345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = _tmp8_; -#line 345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3184 "tracker-sparql-expression.c" +#line 3380 "tracker-sparql-expression.c" } else { -#line 345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3194 "tracker-sparql-expression.c" +#line 3390 "tracker-sparql-expression.c" } } -#line 345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp9_) { -#line 3199 "tracker-sparql-expression.c" +#line 3395 "tracker-sparql-expression.c" GString* _tmp10_; gssize _tmp11_; glong begin; @@ -3207,103 +3403,103 @@ GString* _tmp16_; TrackerPropertyType _tmp17_; glong _tmp18_; -#line 347 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = sql; -#line 347 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = _tmp10_->len; -#line 347 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" begin = (glong) _tmp11_; -#line 348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = sql; -#line 348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_ = binding; -#line 348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp14_ = _tmp13_->literal; -#line 348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_ = tracker_sparql_expression_translate_function (self, _tmp12_, _tmp14_, &_inner_error_); -#line 348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type = _tmp15_; -#line 348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3237 "tracker-sparql-expression.c" +#line 3433 "tracker-sparql-expression.c" } else { -#line 348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3247 "tracker-sparql-expression.c" +#line 3443 "tracker-sparql-expression.c" } } -#line 349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3262 "tracker-sparql-expression.c" +#line 3458 "tracker-sparql-expression.c" } else { -#line 349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3272 "tracker-sparql-expression.c" +#line 3468 "tracker-sparql-expression.c" } } -#line 350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp16_ = sql; -#line 350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp17_ = type; -#line 350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp18_ = begin; -#line 350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_convert_expression_to_string (_tmp16_, _tmp17_, _tmp18_); -#line 3283 "tracker-sparql-expression.c" +#line 3479 "tracker-sparql-expression.c" } else { GString* _tmp19_; TrackerSparqlQuery* _tmp20_; TrackerSparqlLiteralBinding* _tmp21_; TrackerSparqlLiteralBinding* _tmp22_; -#line 352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 372 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp19_ = sql; -#line 352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 372 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp19_, "?"); -#line 353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp20_ = self->priv->query; -#line 353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp21_ = binding; -#line 353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp22_ = _g_object_ref0 (_tmp21_); -#line 353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp20_->bindings = g_list_append (_tmp20_->bindings, _tmp22_); -#line 3301 "tracker-sparql-expression.c" +#line 3497 "tracker-sparql-expression.c" } -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 3307 "tracker-sparql-expression.c" +#line 3503 "tracker-sparql-expression.c" } default: { @@ -3316,48 +3512,48 @@ GString* _tmp27_; TrackerPropertyType _tmp28_; glong _tmp29_; -#line 357 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp23_ = sql; -#line 357 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp24_ = _tmp23_->len; -#line 357 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" begin = (glong) _tmp24_; -#line 358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp25_ = sql; -#line 358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp26_ = tracker_sparql_expression_translate_expression (self, _tmp25_, &_inner_error_); -#line 358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type = _tmp26_; -#line 358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3340 "tracker-sparql-expression.c" +#line 3536 "tracker-sparql-expression.c" } else { -#line 358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3348 "tracker-sparql-expression.c" +#line 3544 "tracker-sparql-expression.c" } } -#line 359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp27_ = sql; -#line 359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp28_ = type; -#line 359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp29_ = begin; -#line 359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_convert_expression_to_string (_tmp27_, _tmp28_, _tmp29_); -#line 360 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 3361 "tracker-sparql-expression.c" +#line 3557 "tracker-sparql-expression.c" } } } @@ -3366,94 +3562,94 @@ static void tracker_sparql_expression_translate_str (TrackerSparqlExpression* self, GString* sql, GError** error) { GString* _tmp0_; GError * _inner_error_ = NULL; -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (self != NULL); -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (sql != NULL); -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_STR, &_inner_error_); -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3384 "tracker-sparql-expression.c" +#line 3580 "tracker-sparql-expression.c" } else { -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3392 "tracker-sparql-expression.c" +#line 3588 "tracker-sparql-expression.c" } } -#line 366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3405 "tracker-sparql-expression.c" +#line 3601 "tracker-sparql-expression.c" } else { -#line 366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3413 "tracker-sparql-expression.c" +#line 3609 "tracker-sparql-expression.c" } } -#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = sql; -#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp0_, &_inner_error_); -#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3428 "tracker-sparql-expression.c" +#line 3624 "tracker-sparql-expression.c" } else { -#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3436 "tracker-sparql-expression.c" +#line 3632 "tracker-sparql-expression.c" } } -#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3449 "tracker-sparql-expression.c" +#line 3645 "tracker-sparql-expression.c" } else { -#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3457 "tracker-sparql-expression.c" +#line 3653 "tracker-sparql-expression.c" } } } @@ -3471,128 +3667,128 @@ TrackerSparqlLiteralBinding* _tmp18_; TrackerSparqlLiteralBinding* _tmp19_; GError * _inner_error_ = NULL; -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (self != NULL); -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (sql != NULL); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_ISURI, &_inner_error_); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = _tmp0_; -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3491 "tracker-sparql-expression.c" +#line 3687 "tracker-sparql-expression.c" } else { -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3499 "tracker-sparql-expression.c" +#line 3695 "tracker-sparql-expression.c" } } -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (!_tmp1_) { -#line 375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_ISIRI, &_inner_error_); -#line 375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3514 "tracker-sparql-expression.c" +#line 3710 "tracker-sparql-expression.c" } else { -#line 375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3522 "tracker-sparql-expression.c" +#line 3718 "tracker-sparql-expression.c" } } } -#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3536 "tracker-sparql-expression.c" +#line 3732 "tracker-sparql-expression.c" } else { -#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3544 "tracker-sparql-expression.c" +#line 3740 "tracker-sparql-expression.c" } } -#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = sql; -#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp2_, "?"); -#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = tracker_sparql_literal_binding_new (); -#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" new_binding = _tmp3_; -#line 382 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = new_binding; -#line 382 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" ((TrackerSparqlDataBinding*) _tmp4_)->data_type = TRACKER_PROPERTY_TYPE_INTEGER; -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = tracker_sparql_expression_current (self); -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp5_ == TRACKER_SPARQL_TOKEN_TYPE_IRI_REF) { -#line 3563 "tracker-sparql-expression.c" +#line 3759 "tracker-sparql-expression.c" TrackerSparqlLiteralBinding* _tmp6_; gchar* _tmp7_; -#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 405 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = new_binding; -#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 405 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = g_strdup ("1"); -#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 405 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp6_->literal); -#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 405 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_->literal = _tmp7_; -#line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (new_binding); -#line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3586 "tracker-sparql-expression.c" +#line 3782 "tracker-sparql-expression.c" } else { -#line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (new_binding); -#line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3596 "tracker-sparql-expression.c" +#line 3792 "tracker-sparql-expression.c" } } } else { @@ -3601,105 +3797,105 @@ TrackerPropertyType _tmp10_ = 0; TrackerPropertyType _tmp11_; TrackerPropertyType _tmp12_; -#line 387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = g_string_new (""); -#line 387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = _tmp8_; -#line 387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = tracker_sparql_expression_translate_expression (self, _tmp9_, &_inner_error_); -#line 387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = _tmp10_; -#line 387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_string_free0 (_tmp9_); -#line 387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = _tmp11_; -#line 387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (new_binding); -#line 387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3627 "tracker-sparql-expression.c" +#line 3823 "tracker-sparql-expression.c" } else { -#line 387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (new_binding); -#line 387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3637 "tracker-sparql-expression.c" +#line 3833 "tracker-sparql-expression.c" } } -#line 387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp12_ == TRACKER_PROPERTY_TYPE_RESOURCE) { -#line 3642 "tracker-sparql-expression.c" +#line 3838 "tracker-sparql-expression.c" TrackerSparqlLiteralBinding* _tmp13_; gchar* _tmp14_; -#line 388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_ = new_binding; -#line 388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp14_ = g_strdup ("1"); -#line 388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp13_->literal); -#line 388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_->literal = _tmp14_; -#line 3653 "tracker-sparql-expression.c" +#line 3849 "tracker-sparql-expression.c" } else { TrackerSparqlLiteralBinding* _tmp15_; gchar* _tmp16_; -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_ = new_binding; -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp16_ = g_strdup ("0"); -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp15_->literal); -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_->literal = _tmp16_; -#line 3665 "tracker-sparql-expression.c" +#line 3861 "tracker-sparql-expression.c" } } -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp17_ = self->priv->query; -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp18_ = new_binding; -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp19_ = _g_object_ref0 (_tmp18_); -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp17_->bindings = g_list_append (_tmp17_->bindings, _tmp19_); -#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (new_binding); -#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3688 "tracker-sparql-expression.c" +#line 3884 "tracker-sparql-expression.c" } else { -#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (new_binding); -#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3698 "tracker-sparql-expression.c" +#line 3894 "tracker-sparql-expression.c" } } -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (new_binding); -#line 3703 "tracker-sparql-expression.c" +#line 3899 "tracker-sparql-expression.c" } @@ -3707,78 +3903,78 @@ gboolean _tmp0_ = FALSE; gboolean _tmp1_; GError * _inner_error_ = NULL; -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (self != NULL); -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_if_fail (sql != NULL); -#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 419 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_DATATYPE, &_inner_error_); -#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 419 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 419 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 419 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 419 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3725 "tracker-sparql-expression.c" +#line 3921 "tracker-sparql-expression.c" } else { -#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 419 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 419 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 419 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3733 "tracker-sparql-expression.c" +#line 3929 "tracker-sparql-expression.c" } } -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3746 "tracker-sparql-expression.c" +#line 3942 "tracker-sparql-expression.c" } else { -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3754 "tracker-sparql-expression.c" +#line 3950 "tracker-sparql-expression.c" } } -#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_VAR, &_inner_error_); -#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = _tmp0_; -#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3769 "tracker-sparql-expression.c" +#line 3965 "tracker-sparql-expression.c" } else { -#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3777 "tracker-sparql-expression.c" +#line 3973 "tracker-sparql-expression.c" } } -#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp1_) { -#line 3782 "tracker-sparql-expression.c" +#line 3978 "tracker-sparql-expression.c" gchar* _tmp2_ = NULL; gchar* _tmp3_; gchar* _tmp4_ = NULL; @@ -3810,37 +4006,37 @@ TrackerSparqlQuery* _tmp38_; TrackerSparqlLiteralBinding* _tmp39_; TrackerSparqlLiteralBinding* _tmp40_; -#line 403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 423 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = tracker_sparql_expression_get_last_string (self, 0); -#line 403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 423 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = _tmp2_; -#line 403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 423 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = string_substring (_tmp3_, (glong) 1, (glong) (-1)); -#line 403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 423 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = _tmp4_; -#line 403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 423 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp3_); -#line 403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 423 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable_name = _tmp5_; -#line 404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = tracker_sparql_expression_get_context (self); -#line 404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = _tmp6_; -#line 404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = variable_name; -#line 404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = tracker_sparql_context_get_variable (_tmp7_, _tmp8_); -#line 404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = _g_object_ref0 (_tmp9_); -#line 404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable = _tmp10_; -#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 426 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = variable; -#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 426 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = _tmp11_->binding; -#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 426 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp12_ == NULL) { -#line 3844 "tracker-sparql-expression.c" +#line 4040 "tracker-sparql-expression.c" TrackerSparqlVariable* _tmp13_; const gchar* _tmp14_; const gchar* _tmp15_; @@ -3848,192 +4044,192 @@ gchar* _tmp17_; GError* _tmp18_ = NULL; GError* _tmp19_; -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_ = variable; -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp14_ = tracker_sparql_variable_get_name (_tmp13_); -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_ = _tmp14_; -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp16_ = g_strdup_printf ("`%s' is not a valid variable", _tmp15_); -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp17_ = _tmp16_; -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp18_ = tracker_sparql_expression_get_error (self, _tmp17_); -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp19_ = _tmp18_; -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp17_); -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp19_; -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (variable_name); -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3880 "tracker-sparql-expression.c" +#line 4076 "tracker-sparql-expression.c" } else { -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (variable_name); -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3892 "tracker-sparql-expression.c" +#line 4088 "tracker-sparql-expression.c" } } -#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp21_ = variable; -#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp22_ = _tmp21_->binding; -#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp23_ = ((TrackerSparqlDataBinding*) _tmp22_)->data_type; -#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp23_ == TRACKER_PROPERTY_TYPE_RESOURCE) { -#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp20_ = TRUE; -#line 3905 "tracker-sparql-expression.c" +#line 4101 "tracker-sparql-expression.c" } else { TrackerSparqlVariable* _tmp24_; TrackerSparqlVariableBinding* _tmp25_; TrackerClass* _tmp26_; -#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp24_ = variable; -#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp25_ = _tmp24_->binding; -#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp26_ = _tmp25_->type; -#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp20_ = _tmp26_ == NULL; -#line 3918 "tracker-sparql-expression.c" +#line 4114 "tracker-sparql-expression.c" } -#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp27_ = _tmp20_; -#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp27_) { -#line 3924 "tracker-sparql-expression.c" +#line 4120 "tracker-sparql-expression.c" GError* _tmp28_ = NULL; -#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp28_ = tracker_sparql_expression_get_error (self, "Invalid FILTER"); -#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp28_; -#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (variable_name); -#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3940 "tracker-sparql-expression.c" +#line 4136 "tracker-sparql-expression.c" } else { -#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (variable_name); -#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 3952 "tracker-sparql-expression.c" +#line 4148 "tracker-sparql-expression.c" } } -#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 434 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp29_ = sql; -#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 434 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp29_, "(SELECT ID FROM Resource WHERE Uri = ?)"); -#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp30_ = tracker_sparql_literal_binding_new (); -#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" new_binding = _tmp30_; -#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp31_ = new_binding; -#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp32_ = variable; -#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp33_ = _tmp32_->binding; -#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp34_ = _tmp33_->type; -#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp35_ = tracker_class_get_uri (_tmp34_); -#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp36_ = _tmp35_; -#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp37_ = g_strdup (_tmp36_); -#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp31_->literal); -#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp31_->literal = _tmp37_; -#line 418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp38_ = self->priv->query; -#line 418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp39_ = new_binding; -#line 418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp40_ = _g_object_ref0 (_tmp39_); -#line 418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp38_->bindings = g_list_append (_tmp38_->bindings, _tmp40_); -#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (new_binding); -#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (variable_name); -#line 3995 "tracker-sparql-expression.c" +#line 4191 "tracker-sparql-expression.c" } else { GError* _tmp41_ = NULL; -#line 421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp41_ = tracker_sparql_expression_get_error (self, "Invalid FILTER"); -#line 421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp41_; -#line 421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 4008 "tracker-sparql-expression.c" +#line 4204 "tracker-sparql-expression.c" } else { -#line 421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 4016 "tracker-sparql-expression.c" +#line 4212 "tracker-sparql-expression.c" } } -#line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 4029 "tracker-sparql-expression.c" +#line 4225 "tracker-sparql-expression.c" } else { -#line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return; -#line 4037 "tracker-sparql-expression.c" +#line 4233 "tracker-sparql-expression.c" } } } @@ -4056,7 +4252,7 @@ result = str; #line 843 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" return result; -#line 4060 "tracker-sparql-expression.c" +#line 4256 "tracker-sparql-expression.c" } @@ -4064,283 +4260,283 @@ TrackerPropertyType result = 0; const gchar* _tmp0_; GError * _inner_error_ = NULL; -#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 447 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 447 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 447 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (uri != NULL, 0); -#line 428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = uri; -#line 428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp0_, TRACKER_SPARQL_EXPRESSION_XSD_NS "string") == 0) { -#line 4078 "tracker-sparql-expression.c" +#line 4274 "tracker-sparql-expression.c" GString* _tmp1_; -#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = sql; -#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp1_, &_inner_error_); -#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4092 "tracker-sparql-expression.c" +#line 4288 "tracker-sparql-expression.c" } else { -#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4100 "tracker-sparql-expression.c" +#line 4296 "tracker-sparql-expression.c" } } -#line 432 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_STRING; -#line 432 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 4107 "tracker-sparql-expression.c" +#line 4303 "tracker-sparql-expression.c" } else { const gchar* _tmp2_; -#line 433 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 453 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = uri; -#line 433 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 453 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp2_, TRACKER_SPARQL_EXPRESSION_XSD_NS "integer") == 0) { -#line 4114 "tracker-sparql-expression.c" +#line 4310 "tracker-sparql-expression.c" GString* _tmp3_; GString* _tmp4_; GString* _tmp5_; -#line 435 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = sql; -#line 435 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp3_, "CAST ("); -#line 436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = sql; -#line 436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp4_, &_inner_error_); -#line 436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4134 "tracker-sparql-expression.c" +#line 4330 "tracker-sparql-expression.c" } else { -#line 436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4142 "tracker-sparql-expression.c" +#line 4338 "tracker-sparql-expression.c" } } -#line 437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 457 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = sql; -#line 437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 457 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp5_, " AS INTEGER)"); -#line 439 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 459 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_INTEGER; -#line 439 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 459 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 4153 "tracker-sparql-expression.c" +#line 4349 "tracker-sparql-expression.c" } else { const gchar* _tmp6_; -#line 440 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 460 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = uri; -#line 440 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 460 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp6_, TRACKER_SPARQL_EXPRESSION_XSD_NS "double") == 0) { -#line 4160 "tracker-sparql-expression.c" +#line 4356 "tracker-sparql-expression.c" GString* _tmp7_; GString* _tmp8_; GString* _tmp9_; -#line 442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = sql; -#line 442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp7_, "CAST ("); -#line 443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = sql; -#line 443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp8_, &_inner_error_); -#line 443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4180 "tracker-sparql-expression.c" +#line 4376 "tracker-sparql-expression.c" } else { -#line 443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4188 "tracker-sparql-expression.c" +#line 4384 "tracker-sparql-expression.c" } } -#line 444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 464 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = sql; -#line 444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 464 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp9_, " AS REAL)"); -#line 446 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 466 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_DOUBLE; -#line 446 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 466 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 4199 "tracker-sparql-expression.c" +#line 4395 "tracker-sparql-expression.c" } else { const gchar* _tmp10_; -#line 447 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 467 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = uri; -#line 447 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 467 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp10_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "case-fold") == 0) { -#line 4206 "tracker-sparql-expression.c" +#line 4402 "tracker-sparql-expression.c" GString* _tmp11_; GString* _tmp12_; GString* _tmp13_; -#line 449 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 469 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = sql; -#line 449 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 469 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp11_, "SparqlCaseFold ("); -#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = sql; -#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp12_, &_inner_error_); -#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4226 "tracker-sparql-expression.c" +#line 4422 "tracker-sparql-expression.c" } else { -#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4234 "tracker-sparql-expression.c" +#line 4430 "tracker-sparql-expression.c" } } -#line 451 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_ = sql; -#line 451 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp13_, ")"); -#line 452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 472 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_STRING; -#line 452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 472 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 4245 "tracker-sparql-expression.c" +#line 4441 "tracker-sparql-expression.c" } else { const gchar* _tmp14_; -#line 453 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp14_ = uri; -#line 453 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp14_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "ascii-lower-case") == 0) { -#line 4252 "tracker-sparql-expression.c" +#line 4448 "tracker-sparql-expression.c" GString* _tmp15_; GString* _tmp16_; GString* _tmp17_; -#line 455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 475 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_ = sql; -#line 455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 475 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp15_, "lower ("); -#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp16_ = sql; -#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp16_, &_inner_error_); -#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4272 "tracker-sparql-expression.c" +#line 4468 "tracker-sparql-expression.c" } else { -#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4280 "tracker-sparql-expression.c" +#line 4476 "tracker-sparql-expression.c" } } -#line 457 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp17_ = sql; -#line 457 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp17_, ")"); -#line 458 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_STRING; -#line 458 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 4291 "tracker-sparql-expression.c" +#line 4487 "tracker-sparql-expression.c" } else { const gchar* _tmp18_; -#line 459 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 479 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp18_ = uri; -#line 459 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 479 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp18_, TRACKER_SPARQL_EXPRESSION_FN_NS "lower-case") == 0) { -#line 4298 "tracker-sparql-expression.c" +#line 4494 "tracker-sparql-expression.c" GString* _tmp19_; GString* _tmp20_; GString* _tmp21_; -#line 461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 481 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp19_ = sql; -#line 461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 481 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp19_, "SparqlLowerCase ("); -#line 462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp20_ = sql; -#line 462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp20_, &_inner_error_); -#line 462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4318 "tracker-sparql-expression.c" +#line 4514 "tracker-sparql-expression.c" } else { -#line 462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4326 "tracker-sparql-expression.c" +#line 4522 "tracker-sparql-expression.c" } } -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 483 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp21_ = sql; -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 483 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp21_, ")"); -#line 464 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_STRING; -#line 464 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 4337 "tracker-sparql-expression.c" +#line 4533 "tracker-sparql-expression.c" } else { const gchar* _tmp22_; -#line 465 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 485 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp22_ = uri; -#line 465 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 485 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp22_, TRACKER_SPARQL_EXPRESSION_FN_NS "contains") == 0) { -#line 4344 "tracker-sparql-expression.c" +#line 4540 "tracker-sparql-expression.c" GString* _tmp23_; GString* _tmp24_; GString* _tmp25_; @@ -4356,131 +4552,131 @@ TrackerSparqlLiteralBinding* _tmp34_; TrackerSparqlLiteralBinding* _tmp35_; GString* _tmp36_; -#line 467 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp23_ = sql; -#line 467 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp23_, "("); -#line 468 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp24_ = sql; -#line 468 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp24_, &_inner_error_); -#line 468 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 468 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 468 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 468 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4376 "tracker-sparql-expression.c" +#line 4572 "tracker-sparql-expression.c" } else { -#line 468 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 468 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 468 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4384 "tracker-sparql-expression.c" +#line 4580 "tracker-sparql-expression.c" } } -#line 469 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 489 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp25_ = sql; -#line 469 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 489 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp25_, " GLOB "); -#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4401 "tracker-sparql-expression.c" +#line 4597 "tracker-sparql-expression.c" } else { -#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4409 "tracker-sparql-expression.c" +#line 4605 "tracker-sparql-expression.c" } } -#line 472 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp26_ = sql; -#line 472 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp26_, "?"); -#line 473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 493 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp27_ = tracker_sparql_literal_binding_new (); -#line 473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 493 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" binding = _tmp27_; -#line 474 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp28_ = tracker_sparql_expression_parse_string_literal (self, NULL, &_inner_error_); -#line 474 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp29_ = _tmp28_; -#line 474 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 474 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 474 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 474 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 474 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4434 "tracker-sparql-expression.c" +#line 4630 "tracker-sparql-expression.c" } else { -#line 474 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 474 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 474 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 474 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4444 "tracker-sparql-expression.c" +#line 4640 "tracker-sparql-expression.c" } } -#line 474 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp30_ = binding; -#line 474 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp31_ = _tmp29_; -#line 474 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp32_ = g_strdup_printf ("*%s*", _tmp31_); -#line 474 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp30_->literal); -#line 474 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp30_->literal = _tmp32_; -#line 474 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp31_); -#line 475 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp33_ = self->priv->query; -#line 475 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp34_ = binding; -#line 475 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp35_ = _g_object_ref0 (_tmp34_); -#line 475 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp33_->bindings = g_list_append (_tmp33_->bindings, _tmp35_); -#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp36_ = sql; -#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp36_, ")"); -#line 479 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 479 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 479 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 4477 "tracker-sparql-expression.c" +#line 4673 "tracker-sparql-expression.c" } else { const gchar* _tmp37_; -#line 480 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp37_ = uri; -#line 480 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp37_, TRACKER_SPARQL_EXPRESSION_FN_NS "starts-with") == 0) { -#line 4484 "tracker-sparql-expression.c" +#line 4680 "tracker-sparql-expression.c" GString* _tmp38_; GString* _tmp39_; gchar* _tmp40_ = NULL; @@ -4505,157 +4701,157 @@ TrackerSparqlQuery* _tmp57_; TrackerSparqlLiteralBinding* _tmp58_; TrackerSparqlLiteralBinding* _tmp59_; -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 504 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp38_ = sql; -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 504 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp38_, &_inner_error_); -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 504 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 504 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 504 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 504 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4521 "tracker-sparql-expression.c" +#line 4717 "tracker-sparql-expression.c" } else { -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 504 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 504 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 504 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4529 "tracker-sparql-expression.c" +#line 4725 "tracker-sparql-expression.c" } } -#line 485 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 505 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp39_ = sql; -#line 485 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 505 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp39_, " BETWEEN "); -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4546 "tracker-sparql-expression.c" +#line 4742 "tracker-sparql-expression.c" } else { -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4554 "tracker-sparql-expression.c" +#line 4750 "tracker-sparql-expression.c" } } -#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp40_ = tracker_sparql_expression_parse_string_literal (self, NULL, &_inner_error_); -#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" prefix = _tmp40_; -#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4569 "tracker-sparql-expression.c" +#line 4765 "tracker-sparql-expression.c" } else { -#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4577 "tracker-sparql-expression.c" +#line 4773 "tracker-sparql-expression.c" } } -#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 510 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp41_ = sql; -#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 510 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp41_, "?"); -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp42_ = tracker_sparql_literal_binding_new (); -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" binding = _tmp42_; -#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp43_ = binding; -#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp44_ = prefix; -#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp45_ = g_strdup (_tmp44_); -#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp43_->literal); -#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp43_->literal = _tmp45_; -#line 493 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 513 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp46_ = self->priv->query; -#line 493 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 513 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp47_ = binding; -#line 493 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 513 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp48_ = _g_object_ref0 (_tmp47_); -#line 493 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 513 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp46_->bindings = g_list_append (_tmp46_->bindings, _tmp48_); -#line 495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 515 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp49_ = sql; -#line 495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 515 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp49_, " AND "); -#line 497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp50_ = sql; -#line 497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp50_, "?"); -#line 498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp51_ = tracker_sparql_literal_binding_new (); -#line 498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" binding = _tmp51_; -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp52_ = binding; -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp53_ = prefix; -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp54_ = g_unichar_to_string (TRACKER_COLLATION_LAST_CHAR); -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp55_ = _tmp54_; -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp56_ = g_strconcat (_tmp53_, _tmp55_, NULL); -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp52_->literal); -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp52_->literal = _tmp56_; -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp55_); -#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp57_ = self->priv->query; -#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp58_ = binding; -#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp59_ = _g_object_ref0 (_tmp58_); -#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp57_->bindings = g_list_append (_tmp57_->bindings, _tmp59_); -#line 502 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 522 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 502 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 522 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 502 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 522 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (prefix); -#line 502 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 522 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 4652 "tracker-sparql-expression.c" +#line 4848 "tracker-sparql-expression.c" } else { const gchar* _tmp60_; -#line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp60_ = uri; -#line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp60_, TRACKER_SPARQL_EXPRESSION_FN_NS "ends-with") == 0) { -#line 4659 "tracker-sparql-expression.c" +#line 4855 "tracker-sparql-expression.c" GString* _tmp61_; GString* _tmp62_; GString* _tmp63_; @@ -4671,131 +4867,131 @@ TrackerSparqlLiteralBinding* _tmp72_; TrackerSparqlLiteralBinding* _tmp73_; GString* _tmp74_; -#line 505 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 525 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp61_ = sql; -#line 505 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 525 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp61_, "("); -#line 506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp62_ = sql; -#line 506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp62_, &_inner_error_); -#line 506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4691 "tracker-sparql-expression.c" +#line 4887 "tracker-sparql-expression.c" } else { -#line 506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4699 "tracker-sparql-expression.c" +#line 4895 "tracker-sparql-expression.c" } } -#line 507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp63_ = sql; -#line 507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp63_, " GLOB "); -#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4716 "tracker-sparql-expression.c" +#line 4912 "tracker-sparql-expression.c" } else { -#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4724 "tracker-sparql-expression.c" +#line 4920 "tracker-sparql-expression.c" } } -#line 510 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 530 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp64_ = sql; -#line 510 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 530 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp64_, "?"); -#line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 531 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp65_ = tracker_sparql_literal_binding_new (); -#line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 531 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" binding = _tmp65_; -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp66_ = tracker_sparql_expression_parse_string_literal (self, NULL, &_inner_error_); -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp67_ = _tmp66_; -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4749 "tracker-sparql-expression.c" +#line 4945 "tracker-sparql-expression.c" } else { -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4759 "tracker-sparql-expression.c" +#line 4955 "tracker-sparql-expression.c" } } -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp68_ = binding; -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp69_ = _tmp67_; -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp70_ = g_strdup_printf ("*%s", _tmp69_); -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp68_->literal); -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp68_->literal = _tmp70_; -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp69_); -#line 513 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 533 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp71_ = self->priv->query; -#line 513 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 533 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp72_ = binding; -#line 513 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 533 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp73_ = _g_object_ref0 (_tmp72_); -#line 513 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 533 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp71_->bindings = g_list_append (_tmp71_->bindings, _tmp73_); -#line 515 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 535 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp74_ = sql; -#line 515 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 535 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp74_, ")"); -#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 4792 "tracker-sparql-expression.c" +#line 4988 "tracker-sparql-expression.c" } else { const gchar* _tmp75_; -#line 518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp75_ = uri; -#line 518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp75_, TRACKER_SPARQL_EXPRESSION_FN_NS "substring") == 0) { -#line 4799 "tracker-sparql-expression.c" +#line 4995 "tracker-sparql-expression.c" GString* _tmp76_; GString* _tmp77_; GString* _tmp78_; @@ -4803,303 +4999,303 @@ gboolean _tmp80_ = FALSE; gboolean _tmp81_; GString* _tmp84_; -#line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp76_ = sql; -#line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp76_, "substr("); -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp77_ = sql; -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp77_, &_inner_error_); -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4823 "tracker-sparql-expression.c" +#line 5019 "tracker-sparql-expression.c" } else { -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4831 "tracker-sparql-expression.c" +#line 5027 "tracker-sparql-expression.c" } } -#line 522 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp78_ = sql; -#line 522 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp78_, ", "); -#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 543 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 543 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 543 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 543 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 543 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4848 "tracker-sparql-expression.c" +#line 5044 "tracker-sparql-expression.c" } else { -#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 543 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 543 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 543 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4856 "tracker-sparql-expression.c" +#line 5052 "tracker-sparql-expression.c" } } -#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp79_ = sql; -#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp79_, &_inner_error_); -#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4871 "tracker-sparql-expression.c" +#line 5067 "tracker-sparql-expression.c" } else { -#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4879 "tracker-sparql-expression.c" +#line 5075 "tracker-sparql-expression.c" } } -#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp80_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp81_ = _tmp80_; -#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4894 "tracker-sparql-expression.c" +#line 5090 "tracker-sparql-expression.c" } else { -#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4902 "tracker-sparql-expression.c" +#line 5098 "tracker-sparql-expression.c" } } -#line 526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp81_) { -#line 4907 "tracker-sparql-expression.c" +#line 5103 "tracker-sparql-expression.c" GString* _tmp82_; GString* _tmp83_; -#line 527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 547 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp82_ = sql; -#line 527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 547 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp82_, ", "); -#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp83_ = sql; -#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp83_, &_inner_error_); -#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4926 "tracker-sparql-expression.c" +#line 5122 "tracker-sparql-expression.c" } else { -#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4934 "tracker-sparql-expression.c" +#line 5130 "tracker-sparql-expression.c" } } } -#line 531 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp84_ = sql; -#line 531 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp84_, ")"); -#line 533 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_STRING; -#line 533 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 4946 "tracker-sparql-expression.c" +#line 5142 "tracker-sparql-expression.c" } else { const gchar* _tmp85_; -#line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp85_ = uri; -#line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp85_, TRACKER_SPARQL_EXPRESSION_FN_NS "concat") == 0) { -#line 4953 "tracker-sparql-expression.c" +#line 5149 "tracker-sparql-expression.c" GString* _tmp86_; GString* _tmp87_; GString* _tmp88_; -#line 535 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp86_ = sql; -#line 535 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp86_, &_inner_error_); -#line 535 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 535 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 535 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 535 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4969 "tracker-sparql-expression.c" +#line 5165 "tracker-sparql-expression.c" } else { -#line 535 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 535 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 535 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4977 "tracker-sparql-expression.c" +#line 5173 "tracker-sparql-expression.c" } } -#line 536 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 556 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp87_ = sql; -#line 536 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 556 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp87_, "||"); -#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 4994 "tracker-sparql-expression.c" +#line 5190 "tracker-sparql-expression.c" } else { -#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5002 "tracker-sparql-expression.c" +#line 5198 "tracker-sparql-expression.c" } } -#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp88_ = sql; -#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp88_, &_inner_error_); -#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5017 "tracker-sparql-expression.c" +#line 5213 "tracker-sparql-expression.c" } else { -#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5025 "tracker-sparql-expression.c" +#line 5221 "tracker-sparql-expression.c" } } -#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" while (TRUE) { -#line 5030 "tracker-sparql-expression.c" +#line 5226 "tracker-sparql-expression.c" gboolean _tmp89_ = FALSE; gboolean _tmp90_; GString* _tmp91_; GString* _tmp92_; -#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp89_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp90_ = _tmp89_; -#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5047 "tracker-sparql-expression.c" +#line 5243 "tracker-sparql-expression.c" } else { -#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5055 "tracker-sparql-expression.c" +#line 5251 "tracker-sparql-expression.c" } } -#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (!_tmp90_) { -#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 5062 "tracker-sparql-expression.c" +#line 5258 "tracker-sparql-expression.c" } -#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 560 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp91_ = sql; -#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 560 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp91_, "||"); -#line 541 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp92_ = sql; -#line 541 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp92_, &_inner_error_); -#line 541 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 541 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 541 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 541 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5080 "tracker-sparql-expression.c" +#line 5276 "tracker-sparql-expression.c" } else { -#line 541 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 541 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 541 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5088 "tracker-sparql-expression.c" +#line 5284 "tracker-sparql-expression.c" } } } -#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_STRING; -#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 5096 "tracker-sparql-expression.c" +#line 5292 "tracker-sparql-expression.c" } else { const gchar* _tmp93_; -#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 565 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp93_ = uri; -#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 565 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp93_, TRACKER_SPARQL_EXPRESSION_FN_NS "string-join") == 0) { -#line 5103 "tracker-sparql-expression.c" +#line 5299 "tracker-sparql-expression.c" GString* _tmp94_; GString* _tmp95_; GString* _tmp96_; @@ -5107,251 +5303,251 @@ GString* _tmp102_; GString* _tmp103_; GString* _tmp104_; -#line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp94_ = sql; -#line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp94_, "SparqlStringJoin("); -#line 547 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 547 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 547 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 547 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 547 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5125 "tracker-sparql-expression.c" +#line 5321 "tracker-sparql-expression.c" } else { -#line 547 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 547 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 547 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5133 "tracker-sparql-expression.c" +#line 5329 "tracker-sparql-expression.c" } } -#line 549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp95_ = sql; -#line 549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp95_, &_inner_error_); -#line 549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5148 "tracker-sparql-expression.c" +#line 5344 "tracker-sparql-expression.c" } else { -#line 549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5156 "tracker-sparql-expression.c" +#line 5352 "tracker-sparql-expression.c" } } -#line 550 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp96_ = sql; -#line 550 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp96_, ", "); -#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 571 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 571 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 571 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 571 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 571 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5173 "tracker-sparql-expression.c" +#line 5369 "tracker-sparql-expression.c" } else { -#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 571 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 571 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 571 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5181 "tracker-sparql-expression.c" +#line 5377 "tracker-sparql-expression.c" } } -#line 552 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp97_ = sql; -#line 552 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp97_, &_inner_error_); -#line 552 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 552 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 552 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 552 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5196 "tracker-sparql-expression.c" +#line 5392 "tracker-sparql-expression.c" } else { -#line 552 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 552 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 552 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5204 "tracker-sparql-expression.c" +#line 5400 "tracker-sparql-expression.c" } } -#line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" while (TRUE) { -#line 5209 "tracker-sparql-expression.c" +#line 5405 "tracker-sparql-expression.c" gboolean _tmp98_ = FALSE; gboolean _tmp99_; GString* _tmp100_; GString* _tmp101_; -#line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp98_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp99_ = _tmp98_; -#line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5226 "tracker-sparql-expression.c" +#line 5422 "tracker-sparql-expression.c" } else { -#line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5234 "tracker-sparql-expression.c" +#line 5430 "tracker-sparql-expression.c" } } -#line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (!_tmp99_) { -#line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 5241 "tracker-sparql-expression.c" +#line 5437 "tracker-sparql-expression.c" } -#line 554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 574 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp100_ = sql; -#line 554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 574 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp100_, ", "); -#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp101_ = sql; -#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp101_, &_inner_error_); -#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5259 "tracker-sparql-expression.c" +#line 5455 "tracker-sparql-expression.c" } else { -#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5267 "tracker-sparql-expression.c" +#line 5463 "tracker-sparql-expression.c" } } } -#line 558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5281 "tracker-sparql-expression.c" +#line 5477 "tracker-sparql-expression.c" } else { -#line 558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5289 "tracker-sparql-expression.c" +#line 5485 "tracker-sparql-expression.c" } } -#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 579 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp102_ = sql; -#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 579 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp102_, ","); -#line 560 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 560 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 560 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 560 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 560 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5306 "tracker-sparql-expression.c" +#line 5502 "tracker-sparql-expression.c" } else { -#line 560 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 560 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 560 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5314 "tracker-sparql-expression.c" +#line 5510 "tracker-sparql-expression.c" } } -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp103_ = sql; -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression (self, _tmp103_, &_inner_error_); -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5329 "tracker-sparql-expression.c" +#line 5525 "tracker-sparql-expression.c" } else { -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5337 "tracker-sparql-expression.c" +#line 5533 "tracker-sparql-expression.c" } } -#line 562 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp104_ = sql; -#line 562 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp104_, ")"); -#line 564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 584 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_STRING; -#line 564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 584 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 5348 "tracker-sparql-expression.c" +#line 5544 "tracker-sparql-expression.c" } else { const gchar* _tmp105_; -#line 565 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 585 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp105_ = uri; -#line 565 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 585 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp105_, TRACKER_SPARQL_EXPRESSION_FN_NS "year-from-dateTime") == 0) { -#line 5355 "tracker-sparql-expression.c" +#line 5551 "tracker-sparql-expression.c" gchar* _tmp106_ = NULL; gchar* _tmp107_; gchar* _tmp108_ = NULL; @@ -5369,87 +5565,87 @@ gchar* _tmp118_ = NULL; gchar* _tmp119_; GString* _tmp120_; -#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 586 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_VAR, &_inner_error_); -#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 586 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 586 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 586 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 586 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5383 "tracker-sparql-expression.c" +#line 5579 "tracker-sparql-expression.c" } else { -#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 586 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 586 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 586 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5391 "tracker-sparql-expression.c" +#line 5587 "tracker-sparql-expression.c" } } -#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 587 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp106_ = tracker_sparql_expression_get_last_string (self, 0); -#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 587 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp107_ = _tmp106_; -#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 587 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp108_ = string_substring (_tmp107_, (glong) 1, (glong) (-1)); -#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 587 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp109_ = _tmp108_; -#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 587 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp107_); -#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 587 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable_name = _tmp109_; -#line 568 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp110_ = tracker_sparql_expression_get_context (self); -#line 568 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp111_ = _tmp110_; -#line 568 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp112_ = variable_name; -#line 568 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp113_ = tracker_sparql_context_get_variable (_tmp111_, _tmp112_); -#line 568 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp114_ = _g_object_ref0 (_tmp113_); -#line 568 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable = _tmp114_; -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 590 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp115_ = sql; -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 590 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp115_, "strftime (\"%Y\", "); -#line 571 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 591 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp116_ = sql; -#line 571 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 591 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp117_ = variable; -#line 571 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 591 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp118_ = tracker_sparql_variable_get_extra_sql_expression (_tmp117_, "localDate"); -#line 571 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 591 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp119_ = _tmp118_; -#line 571 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 591 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp116_, _tmp119_); -#line 571 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 591 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp119_); -#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp120_ = sql; -#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp120_, " * 24 * 3600, \"unixepoch\")"); -#line 574 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 594 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_INTEGER; -#line 574 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 594 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 574 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 594 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (variable_name); -#line 574 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 594 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 5446 "tracker-sparql-expression.c" +#line 5642 "tracker-sparql-expression.c" } else { const gchar* _tmp121_; -#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 595 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp121_ = uri; -#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 595 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp121_, TRACKER_SPARQL_EXPRESSION_FN_NS "month-from-dateTime") == 0) { -#line 5453 "tracker-sparql-expression.c" +#line 5649 "tracker-sparql-expression.c" gchar* _tmp122_ = NULL; gchar* _tmp123_; gchar* _tmp124_ = NULL; @@ -5467,87 +5663,87 @@ gchar* _tmp134_ = NULL; gchar* _tmp135_; GString* _tmp136_; -#line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_VAR, &_inner_error_); -#line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5481 "tracker-sparql-expression.c" +#line 5677 "tracker-sparql-expression.c" } else { -#line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5489 "tracker-sparql-expression.c" +#line 5685 "tracker-sparql-expression.c" } } -#line 577 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp122_ = tracker_sparql_expression_get_last_string (self, 0); -#line 577 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp123_ = _tmp122_; -#line 577 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp124_ = string_substring (_tmp123_, (glong) 1, (glong) (-1)); -#line 577 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp125_ = _tmp124_; -#line 577 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp123_); -#line 577 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable_name = _tmp125_; -#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp126_ = tracker_sparql_expression_get_context (self); -#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp127_ = _tmp126_; -#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp128_ = variable_name; -#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp129_ = tracker_sparql_context_get_variable (_tmp127_, _tmp128_); -#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp130_ = _g_object_ref0 (_tmp129_); -#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable = _tmp130_; -#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp131_ = sql; -#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp131_, "strftime (\"%m\", "); -#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp132_ = sql; -#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp133_ = variable; -#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp134_ = tracker_sparql_variable_get_extra_sql_expression (_tmp133_, "localDate"); -#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp135_ = _tmp134_; -#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp132_, _tmp135_); -#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp135_); -#line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp136_ = sql; -#line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp136_, " * 24 * 3600, \"unixepoch\")"); -#line 584 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_INTEGER; -#line 584 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 584 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (variable_name); -#line 584 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 5544 "tracker-sparql-expression.c" +#line 5740 "tracker-sparql-expression.c" } else { const gchar* _tmp137_; -#line 585 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 605 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp137_ = uri; -#line 585 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 605 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp137_, TRACKER_SPARQL_EXPRESSION_FN_NS "day-from-dateTime") == 0) { -#line 5551 "tracker-sparql-expression.c" +#line 5747 "tracker-sparql-expression.c" gchar* _tmp138_ = NULL; gchar* _tmp139_; gchar* _tmp140_ = NULL; @@ -5565,87 +5761,87 @@ gchar* _tmp150_ = NULL; gchar* _tmp151_; GString* _tmp152_; -#line 586 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_VAR, &_inner_error_); -#line 586 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 586 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 586 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 586 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5579 "tracker-sparql-expression.c" +#line 5775 "tracker-sparql-expression.c" } else { -#line 586 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 586 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 586 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5587 "tracker-sparql-expression.c" +#line 5783 "tracker-sparql-expression.c" } } -#line 587 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp138_ = tracker_sparql_expression_get_last_string (self, 0); -#line 587 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp139_ = _tmp138_; -#line 587 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp140_ = string_substring (_tmp139_, (glong) 1, (glong) (-1)); -#line 587 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp141_ = _tmp140_; -#line 587 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp139_); -#line 587 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable_name = _tmp141_; -#line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 608 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp142_ = tracker_sparql_expression_get_context (self); -#line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 608 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp143_ = _tmp142_; -#line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 608 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp144_ = variable_name; -#line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 608 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp145_ = tracker_sparql_context_get_variable (_tmp143_, _tmp144_); -#line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 608 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp146_ = _g_object_ref0 (_tmp145_); -#line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 608 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable = _tmp146_; -#line 590 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp147_ = sql; -#line 590 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp147_, "strftime (\"%d\", "); -#line 591 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 611 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp148_ = sql; -#line 591 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 611 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp149_ = variable; -#line 591 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 611 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp150_ = tracker_sparql_variable_get_extra_sql_expression (_tmp149_, "localDate"); -#line 591 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 611 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp151_ = _tmp150_; -#line 591 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 611 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp148_, _tmp151_); -#line 591 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 611 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp151_); -#line 592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 612 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp152_ = sql; -#line 592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 612 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp152_, " * 24 * 3600, \"unixepoch\")"); -#line 594 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 614 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_INTEGER; -#line 594 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 614 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 594 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 614 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (variable_name); -#line 594 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 614 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 5642 "tracker-sparql-expression.c" +#line 5838 "tracker-sparql-expression.c" } else { const gchar* _tmp153_; -#line 595 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 615 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp153_ = uri; -#line 595 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 615 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp153_, TRACKER_SPARQL_EXPRESSION_FN_NS "hours-from-dateTime") == 0) { -#line 5649 "tracker-sparql-expression.c" +#line 5845 "tracker-sparql-expression.c" gchar* _tmp154_ = NULL; gchar* _tmp155_; gchar* _tmp156_ = NULL; @@ -5663,87 +5859,87 @@ gchar* _tmp166_ = NULL; gchar* _tmp167_; GString* _tmp168_; -#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_VAR, &_inner_error_); -#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5677 "tracker-sparql-expression.c" +#line 5873 "tracker-sparql-expression.c" } else { -#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5685 "tracker-sparql-expression.c" +#line 5881 "tracker-sparql-expression.c" } } -#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp154_ = tracker_sparql_expression_get_last_string (self, 0); -#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp155_ = _tmp154_; -#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp156_ = string_substring (_tmp155_, (glong) 1, (glong) (-1)); -#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp157_ = _tmp156_; -#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp155_); -#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable_name = _tmp157_; -#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 618 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp158_ = tracker_sparql_expression_get_context (self); -#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 618 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp159_ = _tmp158_; -#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 618 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp160_ = variable_name; -#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 618 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp161_ = tracker_sparql_context_get_variable (_tmp159_, _tmp160_); -#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 618 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp162_ = _g_object_ref0 (_tmp161_); -#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 618 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable = _tmp162_; -#line 600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 620 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp163_ = sql; -#line 600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 620 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp163_, "("); -#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 621 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp164_ = sql; -#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 621 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp165_ = variable; -#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 621 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp166_ = tracker_sparql_variable_get_extra_sql_expression (_tmp165_, "localTime"); -#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 621 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp167_ = _tmp166_; -#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 621 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp164_, _tmp167_); -#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 621 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp167_); -#line 602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp168_ = sql; -#line 602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp168_, " / 3600)"); -#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 624 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_INTEGER; -#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 624 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 624 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (variable_name); -#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 624 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 5740 "tracker-sparql-expression.c" +#line 5936 "tracker-sparql-expression.c" } else { const gchar* _tmp169_; -#line 605 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 625 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp169_ = uri; -#line 605 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 625 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp169_, TRACKER_SPARQL_EXPRESSION_FN_NS "minutes-from-dateTime") == 0) { -#line 5747 "tracker-sparql-expression.c" +#line 5943 "tracker-sparql-expression.c" gchar* _tmp170_ = NULL; gchar* _tmp171_; gchar* _tmp172_ = NULL; @@ -5761,87 +5957,87 @@ gchar* _tmp182_ = NULL; gchar* _tmp183_; GString* _tmp184_; -#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 626 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_VAR, &_inner_error_); -#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 626 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 626 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 626 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 626 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5775 "tracker-sparql-expression.c" +#line 5971 "tracker-sparql-expression.c" } else { -#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 626 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 626 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 626 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5783 "tracker-sparql-expression.c" +#line 5979 "tracker-sparql-expression.c" } } -#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp170_ = tracker_sparql_expression_get_last_string (self, 0); -#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp171_ = _tmp170_; -#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp172_ = string_substring (_tmp171_, (glong) 1, (glong) (-1)); -#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp173_ = _tmp172_; -#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp171_); -#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable_name = _tmp173_; -#line 608 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 628 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp174_ = tracker_sparql_expression_get_context (self); -#line 608 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 628 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp175_ = _tmp174_; -#line 608 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 628 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp176_ = variable_name; -#line 608 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 628 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp177_ = tracker_sparql_context_get_variable (_tmp175_, _tmp176_); -#line 608 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 628 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp178_ = _g_object_ref0 (_tmp177_); -#line 608 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 628 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable = _tmp178_; -#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 630 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp179_ = sql; -#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 630 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp179_, "("); -#line 611 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 631 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp180_ = sql; -#line 611 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 631 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp181_ = variable; -#line 611 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 631 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp182_ = tracker_sparql_variable_get_extra_sql_expression (_tmp181_, "localTime"); -#line 611 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 631 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp183_ = _tmp182_; -#line 611 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 631 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp180_, _tmp183_); -#line 611 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 631 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp183_); -#line 612 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 632 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp184_ = sql; -#line 612 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 632 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp184_, " / 60 % 60)"); -#line 614 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 634 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_INTEGER; -#line 614 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 634 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 614 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 634 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (variable_name); -#line 614 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 634 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 5838 "tracker-sparql-expression.c" +#line 6034 "tracker-sparql-expression.c" } else { const gchar* _tmp185_; -#line 615 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 635 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp185_ = uri; -#line 615 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 635 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp185_, TRACKER_SPARQL_EXPRESSION_FN_NS "seconds-from-dateTime") == 0) { -#line 5845 "tracker-sparql-expression.c" +#line 6041 "tracker-sparql-expression.c" gchar* _tmp186_ = NULL; gchar* _tmp187_; gchar* _tmp188_ = NULL; @@ -5859,87 +6055,87 @@ gchar* _tmp198_ = NULL; gchar* _tmp199_; GString* _tmp200_; -#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 636 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_VAR, &_inner_error_); -#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 636 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 636 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 636 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 636 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5873 "tracker-sparql-expression.c" +#line 6069 "tracker-sparql-expression.c" } else { -#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 636 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 636 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 636 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5881 "tracker-sparql-expression.c" +#line 6077 "tracker-sparql-expression.c" } } -#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 637 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp186_ = tracker_sparql_expression_get_last_string (self, 0); -#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 637 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp187_ = _tmp186_; -#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 637 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp188_ = string_substring (_tmp187_, (glong) 1, (glong) (-1)); -#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 637 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp189_ = _tmp188_; -#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 637 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp187_); -#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 637 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable_name = _tmp189_; -#line 618 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 638 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp190_ = tracker_sparql_expression_get_context (self); -#line 618 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 638 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp191_ = _tmp190_; -#line 618 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 638 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp192_ = variable_name; -#line 618 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 638 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp193_ = tracker_sparql_context_get_variable (_tmp191_, _tmp192_); -#line 618 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 638 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp194_ = _g_object_ref0 (_tmp193_); -#line 618 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 638 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable = _tmp194_; -#line 620 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 640 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp195_ = sql; -#line 620 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 640 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp195_, "("); -#line 621 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp196_ = sql; -#line 621 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp197_ = variable; -#line 621 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp198_ = tracker_sparql_variable_get_extra_sql_expression (_tmp197_, "localTime"); -#line 621 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp199_ = _tmp198_; -#line 621 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp196_, _tmp199_); -#line 621 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp199_); -#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 642 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp200_ = sql; -#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 642 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp200_, "% 60)"); -#line 624 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 644 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_INTEGER; -#line 624 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 644 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 624 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 644 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (variable_name); -#line 624 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 644 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 5936 "tracker-sparql-expression.c" +#line 6132 "tracker-sparql-expression.c" } else { const gchar* _tmp201_; -#line 625 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 645 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp201_ = uri; -#line 625 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 645 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp201_, TRACKER_SPARQL_EXPRESSION_FN_NS "timezone-from-dateTime") == 0) { -#line 5943 "tracker-sparql-expression.c" +#line 6139 "tracker-sparql-expression.c" gchar* _tmp202_ = NULL; gchar* _tmp203_; gchar* _tmp204_ = NULL; @@ -5969,125 +6165,125 @@ const gchar* _tmp226_; GString* _tmp227_; GString* _tmp228_; -#line 626 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 646 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_VAR, &_inner_error_); -#line 626 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 646 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 626 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 646 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 626 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 646 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 626 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 646 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5983 "tracker-sparql-expression.c" +#line 6179 "tracker-sparql-expression.c" } else { -#line 626 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 646 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 626 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 646 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 626 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 646 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 5991 "tracker-sparql-expression.c" +#line 6187 "tracker-sparql-expression.c" } } -#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 647 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp202_ = tracker_sparql_expression_get_last_string (self, 0); -#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 647 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp203_ = _tmp202_; -#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 647 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp204_ = string_substring (_tmp203_, (glong) 1, (glong) (-1)); -#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 647 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp205_ = _tmp204_; -#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 647 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp203_); -#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 647 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable_name = _tmp205_; -#line 628 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 648 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp206_ = tracker_sparql_expression_get_context (self); -#line 628 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 648 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp207_ = _tmp206_; -#line 628 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 648 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp208_ = variable_name; -#line 628 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 648 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp209_ = tracker_sparql_context_get_variable (_tmp207_, _tmp208_); -#line 628 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 648 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp210_ = _g_object_ref0 (_tmp209_); -#line 628 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 648 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable = _tmp210_; -#line 630 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 650 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp211_ = sql; -#line 630 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 650 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp211_, "("); -#line 631 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 651 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp212_ = sql; -#line 631 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 651 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp213_ = variable; -#line 631 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 651 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp214_ = tracker_sparql_variable_get_extra_sql_expression (_tmp213_, "localDate"); -#line 631 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 651 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp215_ = _tmp214_; -#line 631 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 651 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp212_, _tmp215_); -#line 631 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 651 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp215_); -#line 632 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 652 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp216_ = sql; -#line 632 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 652 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp216_, " * 24 * 3600 + "); -#line 633 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 653 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp217_ = sql; -#line 633 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 653 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp218_ = variable; -#line 633 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 653 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp219_ = tracker_sparql_variable_get_extra_sql_expression (_tmp218_, "localTime"); -#line 633 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 653 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp220_ = _tmp219_; -#line 633 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 653 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp217_, _tmp220_); -#line 633 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 653 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp220_); -#line 634 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 654 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp221_ = sql; -#line 634 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 654 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp221_, "- "); -#line 635 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 655 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp222_ = sql; -#line 635 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 655 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp222_, "CAST ("); -#line 636 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 656 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp223_ = sql; -#line 636 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 656 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp224_ = variable; -#line 636 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 656 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp225_ = tracker_sparql_variable_get_sql_expression (_tmp224_); -#line 636 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 656 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp226_ = _tmp225_; -#line 636 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 656 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp223_, _tmp226_); -#line 637 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 657 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp227_ = sql; -#line 637 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 657 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp227_, " AS INTEGER)"); -#line 638 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 658 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp228_ = sql; -#line 638 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 658 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp228_, ")"); -#line 640 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 660 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_INTEGER; -#line 640 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 660 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 640 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 660 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (variable_name); -#line 640 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 660 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 6084 "tracker-sparql-expression.c" +#line 6280 "tracker-sparql-expression.c" } else { const gchar* _tmp229_; -#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp229_ = uri; -#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp229_, TRACKER_SPARQL_EXPRESSION_FTS_NS "rank") == 0) { -#line 6091 "tracker-sparql-expression.c" +#line 6287 "tracker-sparql-expression.c" gboolean is_var = FALSE; TrackerSparqlPattern* _tmp230_; TrackerSparqlPattern* _tmp231_; @@ -6096,1701 +6292,2195 @@ gchar* v; GString* _tmp234_; const gchar* _tmp235_; -#line 643 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp230_ = tracker_sparql_expression_get_pattern (self); -#line 643 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp231_ = _tmp230_; -#line 643 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp233_ = tracker_sparql_pattern_parse_var_or_term (_tmp231_, NULL, &_tmp232_, &_inner_error_); -#line 643 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" is_var = _tmp232_; -#line 643 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" v = _tmp233_; -#line 643 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 643 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 643 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 643 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6118 "tracker-sparql-expression.c" +#line 6314 "tracker-sparql-expression.c" } else { -#line 643 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 643 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 643 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6126 "tracker-sparql-expression.c" +#line 6322 "tracker-sparql-expression.c" } } -#line 644 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp234_ = sql; -#line 644 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp235_ = v; -#line 644 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append_printf (_tmp234_, "\"%s_u_rank\"", _tmp235_); -#line 646 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 666 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_DOUBLE; -#line 646 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 666 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (v); -#line 646 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 666 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 6141 "tracker-sparql-expression.c" +#line 6337 "tracker-sparql-expression.c" } else { const gchar* _tmp236_; -#line 647 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 667 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp236_ = uri; -#line 647 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 667 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp236_, TRACKER_SPARQL_EXPRESSION_FTS_NS "offsets") == 0) { -#line 6148 "tracker-sparql-expression.c" +#line 6344 "tracker-sparql-expression.c" gboolean is_var = FALSE; TrackerSparqlPattern* _tmp237_; TrackerSparqlPattern* _tmp238_; gboolean _tmp239_ = FALSE; gchar* _tmp240_ = NULL; gchar* v; - GString* _tmp241_; - const gchar* _tmp242_; -#line 649 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + TrackerSparqlContext* _tmp241_; + TrackerSparqlContext* _tmp242_; + const gchar* _tmp243_; + TrackerSparqlVariable* _tmp244_ = NULL; + TrackerSparqlVariable* _tmp245_; + TrackerSparqlVariable* variable; + GString* _tmp246_; + TrackerSparqlVariable* _tmp247_; + const gchar* _tmp248_; + const gchar* _tmp249_; + gchar* _tmp250_; +#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp237_ = tracker_sparql_expression_get_pattern (self); -#line 649 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp238_ = _tmp237_; -#line 649 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp240_ = tracker_sparql_pattern_parse_var_or_term (_tmp238_, NULL, &_tmp239_, &_inner_error_); -#line 649 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" is_var = _tmp239_; -#line 649 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" v = _tmp240_; -#line 649 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 649 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 649 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 649 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6175 "tracker-sparql-expression.c" +#line 6380 "tracker-sparql-expression.c" } else { -#line 649 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 649 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 649 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6183 "tracker-sparql-expression.c" +#line 6388 "tracker-sparql-expression.c" } } -#line 650 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp241_ = sql; -#line 650 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp242_ = v; -#line 650 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append_printf (_tmp241_, "\"%s_u_offsets\"", _tmp242_); -#line 652 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 670 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp241_ = tracker_sparql_expression_get_context (self); +#line 670 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp242_ = _tmp241_; +#line 670 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp243_ = v; +#line 670 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp244_ = tracker_sparql_context_get_variable (_tmp242_, _tmp243_); +#line 670 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp245_ = _g_object_ref0 (_tmp244_); +#line 670 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + variable = _tmp245_; +#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp246_ = sql; +#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp247_ = variable; +#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp248_ = tracker_sparql_variable_get_sql_expression (_tmp247_); +#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp249_ = _tmp248_; +#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp246_, _tmp249_); +#line 673 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp250_ = g_strdup ("tracker_offsets(offsets(\"fts\"),fts_property_names())"); +#line 673 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (self->priv->fts_sql); +#line 673 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + self->priv->fts_sql = _tmp250_; +#line 674 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_STRING; -#line 652 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 674 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 674 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (v); -#line 652 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 674 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 6198 "tracker-sparql-expression.c" +#line 6427 "tracker-sparql-expression.c" } else { - const gchar* _tmp243_; -#line 653 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp243_ = uri; -#line 653 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (g_strcmp0 (_tmp243_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "id") == 0) { -#line 6205 "tracker-sparql-expression.c" - GString* _tmp244_; - TrackerPropertyType _tmp245_ = 0; - TrackerPropertyType type; - TrackerPropertyType _tmp246_; -#line 654 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp244_ = sql; -#line 654 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp245_ = tracker_sparql_expression_translate_expression (self, _tmp244_, &_inner_error_); -#line 654 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - type = _tmp245_; -#line 654 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + const gchar* _tmp251_; +#line 675 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp251_ = uri; +#line 675 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (g_strcmp0 (_tmp251_, TRACKER_SPARQL_EXPRESSION_FTS_NS "snippet") == 0) { +#line 6434 "tracker-sparql-expression.c" + gboolean is_var = FALSE; + TrackerSparqlPattern* _tmp252_; + TrackerSparqlPattern* _tmp253_; + gboolean _tmp254_ = FALSE; + gchar* _tmp255_ = NULL; + gchar* v; + TrackerSparqlContext* _tmp256_; + TrackerSparqlContext* _tmp257_; + const gchar* _tmp258_; + TrackerSparqlVariable* _tmp259_ = NULL; + TrackerSparqlVariable* _tmp260_; + TrackerSparqlVariable* variable; + GString* _tmp261_; + GString* fts; + GString* _tmp262_; + gboolean _tmp263_ = FALSE; + gboolean _tmp264_; + gboolean _tmp270_ = FALSE; + gboolean _tmp271_; + GString* _tmp275_; + gboolean _tmp276_ = FALSE; + gboolean _tmp277_; + GString* _tmp281_; + GString* _tmp282_; + const gchar* _tmp283_; + gchar* _tmp284_; + GString* _tmp285_; + TrackerSparqlVariable* _tmp286_; + const gchar* _tmp287_; + const gchar* _tmp288_; +#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp252_ = tracker_sparql_expression_get_pattern (self); +#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp253_ = _tmp252_; +#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp255_ = tracker_sparql_pattern_parse_var_or_term (_tmp253_, NULL, &_tmp254_, &_inner_error_); +#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + is_var = _tmp254_; +#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + v = _tmp255_; +#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 654 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 654 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 654 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6224 "tracker-sparql-expression.c" +#line 6483 "tracker-sparql-expression.c" } else { -#line 654 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 654 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 654 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6232 "tracker-sparql-expression.c" +#line 6491 "tracker-sparql-expression.c" } } -#line 655 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp246_ = type; -#line 655 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_tmp246_ != TRACKER_PROPERTY_TYPE_RESOURCE) { -#line 6239 "tracker-sparql-expression.c" - GError* _tmp247_ = NULL; -#line 656 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp247_ = tracker_sparql_expression_get_error (self, "expected resource"); -#line 656 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _inner_error_ = _tmp247_; -#line 656 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 679 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp256_ = tracker_sparql_expression_get_context (self); +#line 679 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp257_ = _tmp256_; +#line 679 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp258_ = v; +#line 679 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp259_ = tracker_sparql_context_get_variable (_tmp257_, _tmp258_); +#line 679 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp260_ = _g_object_ref0 (_tmp259_); +#line 679 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + variable = _tmp260_; +#line 680 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp261_ = g_string_new (""); +#line 680 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + fts = _tmp261_; +#line 682 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp262_ = fts; +#line 682 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append_printf (_tmp262_, "snippet(\"fts\""); +#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp263_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); +#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp264_ = _tmp263_; +#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 656 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 656 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (fts); +#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (v); +#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6251 "tracker-sparql-expression.c" +#line 6532 "tracker-sparql-expression.c" } else { -#line 656 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (fts); +#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (v); +#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 656 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 656 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6259 "tracker-sparql-expression.c" +#line 6546 "tracker-sparql-expression.c" } } -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - result = TRACKER_PROPERTY_TYPE_INTEGER; -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return result; -#line 6266 "tracker-sparql-expression.c" - } else { - const gchar* _tmp248_; -#line 660 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp248_ = uri; -#line 660 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (g_strcmp0 (_tmp248_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "uri") == 0) { -#line 6273 "tracker-sparql-expression.c" - GString* _tmp249_; - TrackerPropertyType _tmp250_ = 0; - TrackerPropertyType type; - TrackerPropertyType _tmp251_; -#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp249_ = sql; -#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp250_ = tracker_sparql_expression_translate_expression (self, _tmp249_, &_inner_error_); -#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - type = _tmp250_; -#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_tmp264_) { +#line 6551 "tracker-sparql-expression.c" + GString* _tmp265_; + GString* _tmp266_; + GString* _tmp267_; + GString* _tmp268_; +#line 686 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp265_ = fts; +#line 686 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp265_, ", "); +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp266_ = fts; +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression_as_string (self, _tmp266_, &_inner_error_); +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (fts); +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (v); +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6292 "tracker-sparql-expression.c" +#line 6578 "tracker-sparql-expression.c" } else { -#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (fts); +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (v); +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6300 "tracker-sparql-expression.c" +#line 6592 "tracker-sparql-expression.c" } } -#line 662 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp251_ = type; -#line 662 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_tmp251_ != TRACKER_PROPERTY_TYPE_INTEGER) { -#line 6307 "tracker-sparql-expression.c" - GError* _tmp252_ = NULL; -#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp252_ = tracker_sparql_expression_get_error (self, "expected integer ID"); -#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _inner_error_ = _tmp252_; -#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); +#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (fts); +#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (v); +#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6319 "tracker-sparql-expression.c" +#line 6611 "tracker-sparql-expression.c" } else { -#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (fts); +#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (v); +#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6327 "tracker-sparql-expression.c" +#line 6625 "tracker-sparql-expression.c" + } + } +#line 691 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp267_ = fts; +#line 691 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp267_, ", "); +#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp268_ = fts; +#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression_as_string (self, _tmp268_, &_inner_error_); +#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (fts); +#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (v); +#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 6650 "tracker-sparql-expression.c" + } else { +#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (fts); +#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (v); +#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 6664 "tracker-sparql-expression.c" } } -#line 666 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - result = TRACKER_PROPERTY_TYPE_RESOURCE; -#line 666 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return result; -#line 6334 "tracker-sparql-expression.c" } else { - const gchar* _tmp253_; -#line 667 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp253_ = uri; -#line 667 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (g_strcmp0 (_tmp253_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "cartesian-distance") == 0) { -#line 6341 "tracker-sparql-expression.c" - GString* _tmp254_; - GString* _tmp255_; - GString* _tmp256_; - GString* _tmp257_; - GString* _tmp258_; - GString* _tmp259_; - GString* _tmp260_; - GString* _tmp261_; - GString* _tmp262_; -#line 668 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp254_ = sql; -#line 668 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp254_, "SparqlCartesianDistance("); -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp255_ = sql; -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_translate_expression (self, _tmp255_, &_inner_error_); -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_ != NULL) { -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_propagate_error (error, _inner_error_); -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 6367 "tracker-sparql-expression.c" - } else { -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_clear_error (&_inner_error_); -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 6375 "tracker-sparql-expression.c" - } - } -#line 670 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp256_ = sql; -#line 670 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp256_, ", "); -#line 671 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 671 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_ != NULL) { -#line 671 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 671 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_propagate_error (error, _inner_error_); -#line 671 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 6392 "tracker-sparql-expression.c" - } else { -#line 671 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 671 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_clear_error (&_inner_error_); -#line 671 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 6400 "tracker-sparql-expression.c" - } + GString* _tmp269_; +#line 694 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp269_ = fts; +#line 694 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp269_, ",'',''"); +#line 6673 "tracker-sparql-expression.c" + } +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp270_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp271_ = _tmp270_; +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (fts); +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (v); +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 6693 "tracker-sparql-expression.c" + } else { +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (fts); +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (v); +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 6707 "tracker-sparql-expression.c" + } + } +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_tmp271_) { +#line 6712 "tracker-sparql-expression.c" + GString* _tmp272_; + GString* _tmp273_; +#line 699 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp272_ = fts; +#line 699 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp272_, ", "); +#line 700 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp273_ = fts; +#line 700 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression_as_string (self, _tmp273_, &_inner_error_); +#line 700 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 700 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 700 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 700 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (fts); +#line 700 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 700 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (v); +#line 700 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 6737 "tracker-sparql-expression.c" + } else { +#line 700 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (fts); +#line 700 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 700 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (v); +#line 700 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 700 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 700 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 6751 "tracker-sparql-expression.c" } -#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp257_ = sql; -#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_translate_expression (self, _tmp257_, &_inner_error_); -#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_ != NULL) { -#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_propagate_error (error, _inner_error_); -#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 6415 "tracker-sparql-expression.c" - } else { -#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_clear_error (&_inner_error_); -#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 6423 "tracker-sparql-expression.c" - } + } + } else { + GString* _tmp274_; +#line 702 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp274_ = fts; +#line 702 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp274_, ", '...'"); +#line 6760 "tracker-sparql-expression.c" + } +#line 706 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp275_ = fts; +#line 706 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp275_, ", -1"); +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp276_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp277_ = _tmp276_; +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (fts); +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (v); +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 6784 "tracker-sparql-expression.c" + } else { +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (fts); +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (v); +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 6798 "tracker-sparql-expression.c" + } + } +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_tmp277_) { +#line 6803 "tracker-sparql-expression.c" + GString* _tmp278_; + GString* _tmp279_; +#line 710 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp278_ = fts; +#line 710 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp278_, ", "); +#line 711 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp279_ = fts; +#line 711 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression_as_string (self, _tmp279_, &_inner_error_); +#line 711 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 711 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 711 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 711 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (fts); +#line 711 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 711 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (v); +#line 711 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 6828 "tracker-sparql-expression.c" + } else { +#line 711 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (fts); +#line 711 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 711 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (v); +#line 711 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 711 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 711 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 6842 "tracker-sparql-expression.c" } -#line 673 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp258_ = sql; -#line 673 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp258_, ", "); -#line 674 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 674 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_ != NULL) { -#line 674 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 674 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_propagate_error (error, _inner_error_); -#line 674 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 6440 "tracker-sparql-expression.c" - } else { -#line 674 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 674 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_clear_error (&_inner_error_); -#line 674 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 6448 "tracker-sparql-expression.c" - } + } + } else { + GString* _tmp280_; +#line 713 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp280_ = fts; +#line 713 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp280_, ", 5"); +#line 6851 "tracker-sparql-expression.c" + } +#line 716 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp281_ = fts; +#line 716 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp281_, ")"); +#line 718 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp282_ = fts; +#line 718 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp283_ = _tmp282_->str; +#line 718 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp284_ = g_strdup (_tmp283_); +#line 718 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (self->priv->fts_sql); +#line 718 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + self->priv->fts_sql = _tmp284_; +#line 719 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp285_ = sql; +#line 719 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp286_ = variable; +#line 719 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp287_ = tracker_sparql_variable_get_sql_expression (_tmp286_); +#line 719 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp288_ = _tmp287_; +#line 719 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp285_, _tmp288_); +#line 720 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + result = TRACKER_PROPERTY_TYPE_STRING; +#line 720 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (fts); +#line 720 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (variable); +#line 720 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (v); +#line 720 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return result; +#line 6887 "tracker-sparql-expression.c" + } else { + const gchar* _tmp289_; +#line 721 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp289_ = uri; +#line 721 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (g_strcmp0 (_tmp289_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "id") == 0) { +#line 6894 "tracker-sparql-expression.c" + GString* _tmp290_; + TrackerPropertyType _tmp291_ = 0; + TrackerPropertyType type; + TrackerPropertyType _tmp292_; +#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp290_ = sql; +#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp291_ = tracker_sparql_expression_translate_expression (self, _tmp290_, &_inner_error_); +#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + type = _tmp291_; +#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 6913 "tracker-sparql-expression.c" + } else { +#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 6921 "tracker-sparql-expression.c" } -#line 675 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp259_ = sql; -#line 675 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_translate_expression (self, _tmp259_, &_inner_error_); -#line 675 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_ != NULL) { -#line 675 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 675 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_propagate_error (error, _inner_error_); -#line 675 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 6463 "tracker-sparql-expression.c" - } else { -#line 675 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 675 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_clear_error (&_inner_error_); -#line 675 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 6471 "tracker-sparql-expression.c" - } + } +#line 723 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp292_ = type; +#line 723 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_tmp292_ != TRACKER_PROPERTY_TYPE_RESOURCE) { +#line 6928 "tracker-sparql-expression.c" + GError* _tmp293_ = NULL; +#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp293_ = tracker_sparql_expression_get_error (self, "expected resource"); +#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _inner_error_ = _tmp293_; +#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 6940 "tracker-sparql-expression.c" + } else { +#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 6948 "tracker-sparql-expression.c" } -#line 676 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp260_ = sql; -#line 676 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp260_, ", "); -#line 677 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 677 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + } +#line 727 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + result = TRACKER_PROPERTY_TYPE_INTEGER; +#line 727 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return result; +#line 6955 "tracker-sparql-expression.c" + } else { + const gchar* _tmp294_; +#line 728 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp294_ = uri; +#line 728 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (g_strcmp0 (_tmp294_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "uri") == 0) { +#line 6962 "tracker-sparql-expression.c" + GString* _tmp295_; + TrackerPropertyType _tmp296_ = 0; + TrackerPropertyType type; + TrackerPropertyType _tmp297_; +#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp295_ = sql; +#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp296_ = tracker_sparql_expression_translate_expression (self, _tmp295_, &_inner_error_); +#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + type = _tmp296_; +#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 677 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 677 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 677 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6488 "tracker-sparql-expression.c" +#line 6981 "tracker-sparql-expression.c" } else { -#line 677 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 677 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 677 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6496 "tracker-sparql-expression.c" +#line 6989 "tracker-sparql-expression.c" } } -#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp261_ = sql; -#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_translate_expression (self, _tmp261_, &_inner_error_); -#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_ != NULL) { -#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 730 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp297_ = type; +#line 730 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_tmp297_ != TRACKER_PROPERTY_TYPE_INTEGER) { +#line 6996 "tracker-sparql-expression.c" + GError* _tmp298_ = NULL; +#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp298_ = tracker_sparql_expression_get_error (self, "expected integer ID"); +#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _inner_error_ = _tmp298_; +#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6511 "tracker-sparql-expression.c" +#line 7008 "tracker-sparql-expression.c" } else { -#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6519 "tracker-sparql-expression.c" +#line 7016 "tracker-sparql-expression.c" } } -#line 679 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp262_ = sql; -#line 679 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp262_, ")"); -#line 681 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - result = TRACKER_PROPERTY_TYPE_DOUBLE; -#line 681 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 734 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + result = TRACKER_PROPERTY_TYPE_RESOURCE; +#line 734 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 6530 "tracker-sparql-expression.c" +#line 7023 "tracker-sparql-expression.c" } else { - const gchar* _tmp263_; -#line 682 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp263_ = uri; -#line 682 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (g_strcmp0 (_tmp263_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "haversine-distance") == 0) { -#line 6537 "tracker-sparql-expression.c" - GString* _tmp264_; - GString* _tmp265_; - GString* _tmp266_; - GString* _tmp267_; - GString* _tmp268_; - GString* _tmp269_; - GString* _tmp270_; - GString* _tmp271_; - GString* _tmp272_; -#line 683 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp264_ = sql; -#line 683 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp264_, "SparqlHaversineDistance("); -#line 684 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp265_ = sql; -#line 684 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_translate_expression (self, _tmp265_, &_inner_error_); -#line 684 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + const gchar* _tmp299_; +#line 735 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp299_ = uri; +#line 735 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (g_strcmp0 (_tmp299_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "cartesian-distance") == 0) { +#line 7030 "tracker-sparql-expression.c" + GString* _tmp300_; + GString* _tmp301_; + GString* _tmp302_; + GString* _tmp303_; + GString* _tmp304_; + GString* _tmp305_; + GString* _tmp306_; + GString* _tmp307_; + GString* _tmp308_; +#line 736 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp300_ = sql; +#line 736 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp300_, "SparqlCartesianDistance("); +#line 737 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp301_ = sql; +#line 737 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression (self, _tmp301_, &_inner_error_); +#line 737 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 684 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 737 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 684 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 737 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 684 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 737 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6563 "tracker-sparql-expression.c" +#line 7056 "tracker-sparql-expression.c" } else { -#line 684 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 737 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 684 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 737 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 684 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 737 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6571 "tracker-sparql-expression.c" +#line 7064 "tracker-sparql-expression.c" } } -#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp266_ = sql; -#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp266_, ", "); -#line 686 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 738 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp302_ = sql; +#line 738 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp302_, ", "); +#line 739 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 686 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 739 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 686 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 739 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 686 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 739 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 686 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 739 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6588 "tracker-sparql-expression.c" +#line 7081 "tracker-sparql-expression.c" } else { -#line 686 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 739 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 686 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 739 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 686 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 739 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6596 "tracker-sparql-expression.c" +#line 7089 "tracker-sparql-expression.c" } } -#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp267_ = sql; -#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_translate_expression (self, _tmp267_, &_inner_error_); -#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 740 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp303_ = sql; +#line 740 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression (self, _tmp303_, &_inner_error_); +#line 740 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 740 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 740 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 740 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6611 "tracker-sparql-expression.c" +#line 7104 "tracker-sparql-expression.c" } else { -#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 740 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 740 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 740 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6619 "tracker-sparql-expression.c" +#line 7112 "tracker-sparql-expression.c" } } -#line 688 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp268_ = sql; -#line 688 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp268_, ", "); -#line 689 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 741 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp304_ = sql; +#line 741 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp304_, ", "); +#line 742 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 689 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 742 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 689 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 742 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 689 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 742 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 689 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 742 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6636 "tracker-sparql-expression.c" +#line 7129 "tracker-sparql-expression.c" } else { -#line 689 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 742 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 689 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 742 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 689 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 742 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6644 "tracker-sparql-expression.c" +#line 7137 "tracker-sparql-expression.c" } } -#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp269_ = sql; -#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_translate_expression (self, _tmp269_, &_inner_error_); -#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 743 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp305_ = sql; +#line 743 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression (self, _tmp305_, &_inner_error_); +#line 743 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 743 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 743 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 743 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6659 "tracker-sparql-expression.c" +#line 7152 "tracker-sparql-expression.c" } else { -#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 743 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 743 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 743 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6667 "tracker-sparql-expression.c" +#line 7160 "tracker-sparql-expression.c" } } -#line 691 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp270_ = sql; -#line 691 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp270_, ", "); -#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp306_ = sql; +#line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp306_, ", "); +#line 745 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 745 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 745 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 745 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 745 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6684 "tracker-sparql-expression.c" +#line 7177 "tracker-sparql-expression.c" } else { -#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 745 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 745 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 745 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6692 "tracker-sparql-expression.c" +#line 7185 "tracker-sparql-expression.c" } } -#line 693 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp271_ = sql; -#line 693 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_translate_expression (self, _tmp271_, &_inner_error_); -#line 693 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 746 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp307_ = sql; +#line 746 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression (self, _tmp307_, &_inner_error_); +#line 746 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 693 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 746 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 693 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 746 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 693 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 746 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6707 "tracker-sparql-expression.c" +#line 7200 "tracker-sparql-expression.c" } else { -#line 693 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 746 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 693 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 746 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 693 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 746 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6715 "tracker-sparql-expression.c" +#line 7208 "tracker-sparql-expression.c" } } -#line 694 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp272_ = sql; -#line 694 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp272_, ")"); -#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 747 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp308_ = sql; +#line 747 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp308_, ")"); +#line 749 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_DOUBLE; -#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 749 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 6726 "tracker-sparql-expression.c" +#line 7219 "tracker-sparql-expression.c" } else { - const gchar* _tmp273_; -#line 697 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp273_ = uri; -#line 697 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (g_strcmp0 (_tmp273_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "coalesce") == 0) { -#line 6733 "tracker-sparql-expression.c" - GString* _tmp274_; - GString* _tmp275_; - GString* _tmp276_; - GString* _tmp277_; - GString* _tmp282_; -#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp274_ = sql; -#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp274_, "COALESCE("); -#line 699 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp275_ = sql; -#line 699 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_translate_expression_as_string (self, _tmp275_, &_inner_error_); -#line 699 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + const gchar* _tmp309_; +#line 750 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp309_ = uri; +#line 750 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (g_strcmp0 (_tmp309_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "haversine-distance") == 0) { +#line 7226 "tracker-sparql-expression.c" + GString* _tmp310_; + GString* _tmp311_; + GString* _tmp312_; + GString* _tmp313_; + GString* _tmp314_; + GString* _tmp315_; + GString* _tmp316_; + GString* _tmp317_; + GString* _tmp318_; +#line 751 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp310_ = sql; +#line 751 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp310_, "SparqlHaversineDistance("); +#line 752 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp311_ = sql; +#line 752 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression (self, _tmp311_, &_inner_error_); +#line 752 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 699 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 752 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 699 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 752 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 699 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 752 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6755 "tracker-sparql-expression.c" +#line 7252 "tracker-sparql-expression.c" } else { -#line 699 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 752 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 699 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 752 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 699 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 752 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6763 "tracker-sparql-expression.c" +#line 7260 "tracker-sparql-expression.c" } } -#line 700 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp276_ = sql; -#line 700 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp276_, ", "); -#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp312_ = sql; +#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp312_, ", "); +#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6780 "tracker-sparql-expression.c" +#line 7277 "tracker-sparql-expression.c" } else { -#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6788 "tracker-sparql-expression.c" +#line 7285 "tracker-sparql-expression.c" } } -#line 702 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp277_ = sql; -#line 702 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_translate_expression_as_string (self, _tmp277_, &_inner_error_); -#line 702 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 755 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp313_ = sql; +#line 755 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression (self, _tmp313_, &_inner_error_); +#line 755 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 702 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 755 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 702 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 755 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 702 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 755 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6803 "tracker-sparql-expression.c" +#line 7300 "tracker-sparql-expression.c" } else { -#line 702 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 755 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 702 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 755 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 702 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 755 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6811 "tracker-sparql-expression.c" +#line 7308 "tracker-sparql-expression.c" } } -#line 703 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - while (TRUE) { -#line 6816 "tracker-sparql-expression.c" - gboolean _tmp278_ = FALSE; - gboolean _tmp279_; - GString* _tmp280_; - GString* _tmp281_; -#line 703 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp278_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 703 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp279_ = _tmp278_; -#line 703 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_ != NULL) { -#line 703 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 703 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_propagate_error (error, _inner_error_); -#line 703 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 6833 "tracker-sparql-expression.c" - } else { -#line 703 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 703 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_clear_error (&_inner_error_); -#line 703 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 6841 "tracker-sparql-expression.c" - } +#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp314_ = sql; +#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp314_, ", "); +#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); +#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7325 "tracker-sparql-expression.c" + } else { +#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7333 "tracker-sparql-expression.c" } -#line 703 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (!_tmp279_) { -#line 703 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - break; -#line 6848 "tracker-sparql-expression.c" + } +#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp315_ = sql; +#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression (self, _tmp315_, &_inner_error_); +#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7348 "tracker-sparql-expression.c" + } else { +#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7356 "tracker-sparql-expression.c" } -#line 704 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp280_ = sql; -#line 704 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp280_, ", "); -#line 705 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp281_ = sql; -#line 705 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_translate_expression_as_string (self, _tmp281_, &_inner_error_); -#line 705 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_ != NULL) { -#line 705 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 705 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_propagate_error (error, _inner_error_); -#line 705 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 6866 "tracker-sparql-expression.c" - } else { -#line 705 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 705 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_clear_error (&_inner_error_); -#line 705 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 6874 "tracker-sparql-expression.c" - } + } +#line 759 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp316_ = sql; +#line 759 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp316_, ", "); +#line 760 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); +#line 760 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 760 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 760 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 760 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7373 "tracker-sparql-expression.c" + } else { +#line 760 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 760 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 760 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7381 "tracker-sparql-expression.c" } } -#line 707 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp282_ = sql; -#line 707 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp282_, ")"); -#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - result = TRACKER_PROPERTY_TYPE_STRING; -#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 761 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp317_ = sql; +#line 761 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression (self, _tmp317_, &_inner_error_); +#line 761 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 761 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 761 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 761 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7396 "tracker-sparql-expression.c" + } else { +#line 761 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 761 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 761 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7404 "tracker-sparql-expression.c" + } + } +#line 762 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp318_ = sql; +#line 762 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp318_, ")"); +#line 764 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + result = TRACKER_PROPERTY_TYPE_DOUBLE; +#line 764 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 6886 "tracker-sparql-expression.c" +#line 7415 "tracker-sparql-expression.c" } else { - const gchar* _tmp283_; -#line 710 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp283_ = uri; -#line 710 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (g_strcmp0 (_tmp283_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "uri-is-parent") == 0) { -#line 6893 "tracker-sparql-expression.c" - GString* _tmp284_; - GString* _tmp285_; - GString* _tmp286_; - GString* _tmp287_; - GString* _tmp288_; -#line 711 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp284_ = sql; -#line 711 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp284_, "SparqlUriIsParent("); -#line 712 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp285_ = sql; -#line 712 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_translate_expression_as_string (self, _tmp285_, &_inner_error_); -#line 712 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + const gchar* _tmp319_; +#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp319_ = uri; +#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (g_strcmp0 (_tmp319_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "coalesce") == 0) { +#line 7422 "tracker-sparql-expression.c" + GString* _tmp320_; + GString* _tmp321_; + GString* _tmp322_; + GString* _tmp323_; + GString* _tmp328_; +#line 766 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp320_ = sql; +#line 766 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp320_, "COALESCE("); +#line 767 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp321_ = sql; +#line 767 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression_as_string (self, _tmp321_, &_inner_error_); +#line 767 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 712 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 767 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 712 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 767 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 712 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 767 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6915 "tracker-sparql-expression.c" +#line 7444 "tracker-sparql-expression.c" } else { -#line 712 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 767 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 712 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 767 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 712 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 767 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6923 "tracker-sparql-expression.c" +#line 7452 "tracker-sparql-expression.c" } } -#line 713 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp286_ = sql; -#line 713 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp286_, ", "); -#line 714 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp322_ = sql; +#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp322_, ", "); +#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 714 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 714 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 714 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 714 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6940 "tracker-sparql-expression.c" +#line 7469 "tracker-sparql-expression.c" } else { -#line 714 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 714 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 714 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6948 "tracker-sparql-expression.c" +#line 7477 "tracker-sparql-expression.c" } } -#line 716 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp287_ = sql; -#line 716 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_translate_expression_as_string (self, _tmp287_, &_inner_error_); -#line 716 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 770 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp323_ = sql; +#line 770 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression_as_string (self, _tmp323_, &_inner_error_); +#line 770 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 716 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 770 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 716 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 770 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 716 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 770 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6963 "tracker-sparql-expression.c" +#line 7492 "tracker-sparql-expression.c" } else { -#line 716 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 770 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 716 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 770 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 716 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 770 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 6971 "tracker-sparql-expression.c" +#line 7500 "tracker-sparql-expression.c" + } + } +#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + while (TRUE) { +#line 7505 "tracker-sparql-expression.c" + gboolean _tmp324_ = FALSE; + gboolean _tmp325_; + GString* _tmp326_; + GString* _tmp327_; +#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp324_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); +#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp325_ = _tmp324_; +#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7522 "tracker-sparql-expression.c" + } else { +#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7530 "tracker-sparql-expression.c" + } + } +#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (!_tmp325_) { +#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + break; +#line 7537 "tracker-sparql-expression.c" + } +#line 772 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp326_ = sql; +#line 772 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp326_, ", "); +#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp327_ = sql; +#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression_as_string (self, _tmp327_, &_inner_error_); +#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7555 "tracker-sparql-expression.c" + } else { +#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7563 "tracker-sparql-expression.c" + } } } -#line 717 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp288_ = sql; -#line 717 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp288_, ")"); -#line 719 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - result = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 719 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 775 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp328_ = sql; +#line 775 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp328_, ")"); +#line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + result = TRACKER_PROPERTY_TYPE_STRING; +#line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 6982 "tracker-sparql-expression.c" +#line 7575 "tracker-sparql-expression.c" } else { - const gchar* _tmp289_; -#line 720 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp289_ = uri; -#line 720 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (g_strcmp0 (_tmp289_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "uri-is-descendant") == 0) { -#line 6989 "tracker-sparql-expression.c" - GString* _tmp290_; - GString* _tmp291_; - GString* _tmp292_; - GString* _tmp293_; - GString* _tmp298_; -#line 721 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp290_ = sql; -#line 721 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp290_, "SparqlUriIsDescendant("); -#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp291_ = sql; -#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_translate_expression_as_string (self, _tmp291_, &_inner_error_); -#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + const gchar* _tmp329_; +#line 778 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp329_ = uri; +#line 778 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (g_strcmp0 (_tmp329_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "uri-is-parent") == 0) { +#line 7582 "tracker-sparql-expression.c" + GString* _tmp330_; + GString* _tmp331_; + GString* _tmp332_; + GString* _tmp333_; + GString* _tmp334_; +#line 779 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp330_ = sql; +#line 779 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp330_, "SparqlUriIsParent("); +#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp331_ = sql; +#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression_as_string (self, _tmp331_, &_inner_error_); +#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7011 "tracker-sparql-expression.c" +#line 7604 "tracker-sparql-expression.c" } else { -#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7019 "tracker-sparql-expression.c" +#line 7612 "tracker-sparql-expression.c" } } -#line 723 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp292_ = sql; -#line 723 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp292_, ", "); -#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 781 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp332_ = sql; +#line 781 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp332_, ", "); +#line 782 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 782 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 782 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 782 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 782 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7036 "tracker-sparql-expression.c" +#line 7629 "tracker-sparql-expression.c" } else { -#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 782 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 782 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 782 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7044 "tracker-sparql-expression.c" +#line 7637 "tracker-sparql-expression.c" } } -#line 726 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp293_ = sql; -#line 726 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_translate_expression_as_string (self, _tmp293_, &_inner_error_); -#line 726 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 784 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp333_ = sql; +#line 784 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression_as_string (self, _tmp333_, &_inner_error_); +#line 784 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 726 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 784 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 726 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 784 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 726 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 784 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7059 "tracker-sparql-expression.c" +#line 7652 "tracker-sparql-expression.c" } else { -#line 726 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 784 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 726 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 784 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 726 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 784 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7067 "tracker-sparql-expression.c" +#line 7660 "tracker-sparql-expression.c" } } -#line 727 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - while (TRUE) { -#line 7072 "tracker-sparql-expression.c" - gboolean _tmp294_ = FALSE; - gboolean _tmp295_; - GString* _tmp296_; - GString* _tmp297_; -#line 727 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp294_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 727 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp295_ = _tmp294_; -#line 727 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 785 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp334_ = sql; +#line 785 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp334_, ")"); +#line 787 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + result = TRACKER_PROPERTY_TYPE_BOOLEAN; +#line 787 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return result; +#line 7671 "tracker-sparql-expression.c" + } else { + const gchar* _tmp335_; +#line 788 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp335_ = uri; +#line 788 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (g_strcmp0 (_tmp335_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "uri-is-descendant") == 0) { +#line 7678 "tracker-sparql-expression.c" + GString* _tmp336_; + GString* _tmp337_; + GString* _tmp338_; + GString* _tmp339_; + GString* _tmp344_; +#line 789 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp336_ = sql; +#line 789 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp336_, "SparqlUriIsDescendant("); +#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp337_ = sql; +#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression_as_string (self, _tmp337_, &_inner_error_); +#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 727 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 727 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 727 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7089 "tracker-sparql-expression.c" +#line 7700 "tracker-sparql-expression.c" } else { -#line 727 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 727 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 727 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7097 "tracker-sparql-expression.c" +#line 7708 "tracker-sparql-expression.c" } } -#line 727 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (!_tmp295_) { -#line 727 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - break; -#line 7104 "tracker-sparql-expression.c" - } -#line 728 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp296_ = sql; -#line 728 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp296_, ", "); -#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp297_ = sql; -#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_translate_expression_as_string (self, _tmp297_, &_inner_error_); -#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 791 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp338_ = sql; +#line 791 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp338_, ", "); +#line 792 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); +#line 792 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 792 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 792 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 792 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7122 "tracker-sparql-expression.c" +#line 7725 "tracker-sparql-expression.c" } else { -#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 792 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 792 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 792 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7130 "tracker-sparql-expression.c" +#line 7733 "tracker-sparql-expression.c" } } - } -#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp298_ = sql; -#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp298_, ")"); -#line 733 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - result = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 733 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return result; -#line 7142 "tracker-sparql-expression.c" - } else { - const gchar* _tmp299_; -#line 734 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp299_ = uri; -#line 734 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (g_strcmp0 (_tmp299_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "string-from-filename") == 0) { -#line 7149 "tracker-sparql-expression.c" - GString* _tmp300_; - GString* _tmp301_; - GString* _tmp302_; -#line 735 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp300_ = sql; -#line 735 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp300_, "SparqlStringFromFilename("); -#line 736 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp301_ = sql; -#line 736 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_translate_expression_as_string (self, _tmp301_, &_inner_error_); -#line 736 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 794 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp339_ = sql; +#line 794 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression_as_string (self, _tmp339_, &_inner_error_); +#line 794 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 736 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 794 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 736 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 794 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 736 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 794 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7169 "tracker-sparql-expression.c" +#line 7748 "tracker-sparql-expression.c" } else { -#line 736 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 794 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 736 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 794 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 736 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 794 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7177 "tracker-sparql-expression.c" +#line 7756 "tracker-sparql-expression.c" } } -#line 737 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp302_ = sql; -#line 737 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp302_, ")"); -#line 739 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - result = TRACKER_PROPERTY_TYPE_STRING; -#line 739 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return result; -#line 7188 "tracker-sparql-expression.c" - } else { - const gchar* _tmp303_; - TrackerProperty* _tmp304_ = NULL; - TrackerProperty* _tmp305_; - TrackerProperty* prop; - TrackerProperty* _tmp306_; - GString* _tmp308_; - GString* expr; - GString* _tmp309_; - gchar* _tmp310_; - gchar* value_separator; - gchar* graph_separator; - gboolean _tmp311_ = FALSE; - gboolean _tmp312_; - TrackerProperty* _tmp319_; - gboolean _tmp320_; - gboolean _tmp321_; -#line 742 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp303_ = uri; -#line 742 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp304_ = tracker_ontologies_get_property_by_uri (_tmp303_); -#line 742 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp305_ = _g_object_ref0 (_tmp304_); -#line 742 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - prop = _tmp305_; -#line 743 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp306_ = prop; -#line 743 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_tmp306_ == NULL) { -#line 7218 "tracker-sparql-expression.c" - GError* _tmp307_ = NULL; -#line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp307_ = tracker_sparql_expression_get_error (self, "Unknown function"); -#line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _inner_error_ = _tmp307_; -#line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_propagate_error (error, _inner_error_); -#line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_object_unref0 (prop); -#line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 7232 "tracker-sparql-expression.c" - } else { -#line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_object_unref0 (prop); -#line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_clear_error (&_inner_error_); -#line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 7242 "tracker-sparql-expression.c" +#line 795 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + while (TRUE) { +#line 7761 "tracker-sparql-expression.c" + gboolean _tmp340_ = FALSE; + gboolean _tmp341_; + GString* _tmp342_; + GString* _tmp343_; +#line 795 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp340_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); +#line 795 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp341_ = _tmp340_; +#line 795 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 795 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 795 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 795 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7778 "tracker-sparql-expression.c" + } else { +#line 795 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 795 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 795 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7786 "tracker-sparql-expression.c" + } } - } -#line 747 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp308_ = g_string_new (""); -#line 747 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - expr = _tmp308_; -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp309_ = expr; -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_translate_expression (self, _tmp309_, &_inner_error_); -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_ != NULL) { -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_propagate_error (error, _inner_error_); -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_string_free0 (expr); -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_object_unref0 (prop); -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 7265 "tracker-sparql-expression.c" - } else { -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_string_free0 (expr); -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_object_unref0 (prop); -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_clear_error (&_inner_error_); -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 7277 "tracker-sparql-expression.c" +#line 795 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (!_tmp341_) { +#line 795 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + break; +#line 7793 "tracker-sparql-expression.c" + } +#line 796 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp342_ = sql; +#line 796 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp342_, ", "); +#line 797 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp343_ = sql; +#line 797 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression_as_string (self, _tmp343_, &_inner_error_); +#line 797 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 797 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 797 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 797 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7811 "tracker-sparql-expression.c" + } else { +#line 797 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 797 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 797 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7819 "tracker-sparql-expression.c" + } } } -#line 750 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp310_ = g_strdup (","); -#line 750 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - value_separator = _tmp310_; -#line 751 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - graph_separator = NULL; -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp311_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp312_ = _tmp311_; -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_ != NULL) { -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_propagate_error (error, _inner_error_); -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (graph_separator); -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (value_separator); -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_string_free0 (expr); -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_object_unref0 (prop); -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 7306 "tracker-sparql-expression.c" - } else { -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (graph_separator); -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (value_separator); -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_string_free0 (expr); -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_object_unref0 (prop); -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_clear_error (&_inner_error_); -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return 0; -#line 7322 "tracker-sparql-expression.c" +#line 799 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp344_ = sql; +#line 799 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp344_, ")"); +#line 801 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + result = TRACKER_PROPERTY_TYPE_BOOLEAN; +#line 801 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return result; +#line 7831 "tracker-sparql-expression.c" + } else { + const gchar* _tmp345_; +#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp345_ = uri; +#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (g_strcmp0 (_tmp345_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "string-from-filename") == 0) { +#line 7838 "tracker-sparql-expression.c" + GString* _tmp346_; + GString* _tmp347_; + GString* _tmp348_; +#line 803 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp346_ = sql; +#line 803 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp346_, "SparqlStringFromFilename("); +#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp347_ = sql; +#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression_as_string (self, _tmp347_, &_inner_error_); +#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7858 "tracker-sparql-expression.c" + } else { +#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7866 "tracker-sparql-expression.c" + } } - } -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_tmp312_) { -#line 7327 "tracker-sparql-expression.c" - gchar* _tmp313_ = NULL; - gchar* _tmp314_; - gboolean _tmp315_ = FALSE; - gboolean _tmp316_; -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp313_ = tracker_sparql_expression_parse_string_literal (self, NULL, &_inner_error_); -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp314_ = _tmp313_; -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 805 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp348_ = sql; +#line 805 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp348_, ")"); +#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + result = TRACKER_PROPERTY_TYPE_STRING; +#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return result; +#line 7877 "tracker-sparql-expression.c" + } else { + const gchar* _tmp349_; + TrackerProperty* _tmp350_ = NULL; + TrackerProperty* _tmp351_; + TrackerProperty* prop; + TrackerProperty* _tmp352_; + GString* _tmp354_; + GString* expr; + GString* _tmp355_; + gchar* _tmp356_; + gchar* value_separator; + gchar* graph_separator; + gboolean _tmp357_ = FALSE; + gboolean _tmp358_; + TrackerProperty* _tmp365_; + gboolean _tmp366_; + gboolean _tmp367_; +#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp349_ = uri; +#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp350_ = tracker_ontologies_get_property_by_uri (_tmp349_); +#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp351_ = _g_object_ref0 (_tmp350_); +#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + prop = _tmp351_; +#line 811 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp352_ = prop; +#line 811 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_tmp352_ == NULL) { +#line 7907 "tracker-sparql-expression.c" + GError* _tmp353_ = NULL; +#line 812 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp353_ = tracker_sparql_expression_get_error (self, "Unknown function"); +#line 812 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _inner_error_ = _tmp353_; +#line 812 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 812 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 812 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (prop); +#line 812 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7921 "tracker-sparql-expression.c" + } else { +#line 812 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (prop); +#line 812 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 812 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 812 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 7931 "tracker-sparql-expression.c" + } + } +#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp354_ = g_string_new (""); +#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + expr = _tmp354_; +#line 816 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp355_ = expr; +#line 816 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_translate_expression (self, _tmp355_, &_inner_error_); +#line 816 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 816 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 816 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (graph_separator); -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (value_separator); -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 816 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_string_free0 (expr); -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 816 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (prop); -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 816 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7352 "tracker-sparql-expression.c" +#line 7954 "tracker-sparql-expression.c" } else { -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (graph_separator); -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (value_separator); -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 816 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_string_free0 (expr); -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 816 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (prop); -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 816 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 816 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 816 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7368 "tracker-sparql-expression.c" +#line 7966 "tracker-sparql-expression.c" } } -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (value_separator); -#line 754 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - value_separator = _tmp314_; -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp315_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp316_ = _tmp315_; -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 818 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp356_ = g_strdup (","); +#line 818 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + value_separator = _tmp356_; +#line 819 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + graph_separator = NULL; +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp357_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp358_ = _tmp357_; +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (graph_separator); -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (value_separator); -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_string_free0 (expr); -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (prop); -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7395 "tracker-sparql-expression.c" +#line 7995 "tracker-sparql-expression.c" } else { -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (graph_separator); -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (value_separator); -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_string_free0 (expr); -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (prop); -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7411 "tracker-sparql-expression.c" +#line 8011 "tracker-sparql-expression.c" } } -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_tmp316_) { -#line 7416 "tracker-sparql-expression.c" - gchar* _tmp317_ = NULL; - gchar* _tmp318_; -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp317_ = tracker_sparql_expression_parse_string_literal (self, NULL, &_inner_error_); -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp318_ = _tmp317_; -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_tmp358_) { +#line 8016 "tracker-sparql-expression.c" + gchar* _tmp359_ = NULL; + gchar* _tmp360_; + gboolean _tmp361_ = FALSE; + gboolean _tmp362_; +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp359_ = tracker_sparql_expression_parse_string_literal (self, NULL, &_inner_error_); +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp360_ = _tmp359_; +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (graph_separator); -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (value_separator); -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_string_free0 (expr); -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (prop); -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7439 "tracker-sparql-expression.c" +#line 8041 "tracker-sparql-expression.c" } else { -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (graph_separator); -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (value_separator); -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_string_free0 (expr); -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (prop); -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7455 "tracker-sparql-expression.c" +#line 8057 "tracker-sparql-expression.c" } } -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (graph_separator); -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - graph_separator = _tmp318_; -#line 7462 "tracker-sparql-expression.c" - } - } -#line 761 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp319_ = prop; -#line 761 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp320_ = tracker_property_get_multiple_values (_tmp319_); -#line 761 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp321_ = _tmp320_; -#line 761 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_tmp321_) { -#line 7473 "tracker-sparql-expression.c" - GString* _tmp322_; - GString* _tmp323_; - gssize _tmp324_; - glong begin; - GString* _tmp325_; - TrackerProperty* _tmp326_; - const gchar* _tmp327_; - const gchar* _tmp328_; - GString* _tmp329_; - TrackerProperty* _tmp330_; - TrackerPropertyType _tmp331_; - TrackerPropertyType _tmp332_; - glong _tmp333_; - const gchar* _tmp334_; - GString* _tmp342_; - const gchar* _tmp343_; - gchar* _tmp344_ = NULL; - gchar* _tmp345_; - GString* _tmp346_; - TrackerProperty* _tmp347_; - const gchar* _tmp348_; - const gchar* _tmp349_; - GString* _tmp350_; - const gchar* _tmp351_; -#line 763 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp322_ = sql; -#line 763 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp322_, "(SELECT GROUP_CONCAT("); -#line 764 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp323_ = sql; -#line 764 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp324_ = _tmp323_->len; -#line 764 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - begin = (glong) _tmp324_; -#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp325_ = sql; -#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp326_ = prop; -#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp327_ = tracker_property_get_name (_tmp326_); -#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp328_ = _tmp327_; -#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append_printf (_tmp325_, "\"%s\"", _tmp328_); -#line 766 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp329_ = sql; -#line 766 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp330_ = prop; -#line 766 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp331_ = tracker_property_get_data_type (_tmp330_); -#line 766 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp332_ = _tmp331_; -#line 766 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp333_ = begin; -#line 766 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_convert_expression_to_string (_tmp329_, _tmp332_, _tmp333_); -#line 767 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp334_ = graph_separator; -#line 767 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_tmp334_ != NULL) { -#line 7534 "tracker-sparql-expression.c" - GString* _tmp335_; - const gchar* _tmp336_; - gchar* _tmp337_ = NULL; - gchar* _tmp338_; - TrackerProperty* _tmp339_; - const gchar* _tmp340_; - const gchar* _tmp341_; -#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp335_ = sql; -#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp336_ = graph_separator; -#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp337_ = tracker_sparql_expression_escape_sql_string_literal (self, _tmp336_); -#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp338_ = _tmp337_; -#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp339_ = prop; -#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp340_ = tracker_property_get_name (_tmp339_); -#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp341_ = _tmp340_; -#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append_printf (_tmp335_, " || %s || COALESCE((SELECT Uri FROM Resource WHERE ID = \"%s:graph\")," \ -" '')", _tmp338_, _tmp341_); -#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (_tmp338_); -#line 7560 "tracker-sparql-expression.c" - } -#line 770 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp342_ = sql; -#line 770 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp343_ = value_separator; -#line 770 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp344_ = tracker_sparql_expression_escape_sql_string_literal (self, _tmp343_); -#line 770 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp345_ = _tmp344_; -#line 770 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append_printf (_tmp342_, ",%s)", _tmp345_); -#line 770 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (_tmp345_); -#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp346_ = sql; -#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp347_ = prop; -#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp348_ = tracker_property_get_table_name (_tmp347_); -#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp349_ = _tmp348_; -#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp350_ = expr; -#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp351_ = _tmp350_->str; -#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append_printf (_tmp346_, " FROM \"%s\" WHERE ID = %s)", _tmp349_, _tmp351_); -#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - result = TRACKER_PROPERTY_TYPE_STRING; -#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (graph_separator); -#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (value_separator); -#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_string_free0 (expr); -#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_object_unref0 (prop); -#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return result; -#line 7600 "tracker-sparql-expression.c" - } else { - const gchar* _tmp352_; -#line 776 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp352_ = graph_separator; -#line 776 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_tmp352_ == NULL) { -#line 7607 "tracker-sparql-expression.c" - GString* _tmp353_; - TrackerProperty* _tmp354_; - const gchar* _tmp355_; - const gchar* _tmp356_; - TrackerProperty* _tmp357_; - const gchar* _tmp358_; - const gchar* _tmp359_; - GString* _tmp360_; - const gchar* _tmp361_; - TrackerProperty* _tmp362_; - TrackerPropertyType _tmp363_; - TrackerPropertyType _tmp364_; - TrackerProperty* _tmp366_; - TrackerPropertyType _tmp367_; - TrackerPropertyType _tmp368_; -#line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp353_ = sql; -#line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp354_ = prop; -#line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp355_ = tracker_property_get_name (_tmp354_); -#line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp356_ = _tmp355_; -#line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp357_ = prop; -#line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp358_ = tracker_property_get_table_name (_tmp357_); -#line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp359_ = _tmp358_; -#line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp360_ = expr; -#line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp361_ = _tmp360_->str; -#line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append_printf (_tmp353_, "(SELECT \"%s\" FROM \"%s\" WHERE ID = %s)", _tmp356_, _tmp359_, _tmp361_); -#line 779 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp362_ = prop; -#line 779 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp363_ = tracker_property_get_data_type (_tmp362_); -#line 779 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp364_ = _tmp363_; -#line 779 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - if (_tmp364_ == TRACKER_PROPERTY_TYPE_STRING) { -#line 7651 "tracker-sparql-expression.c" - GString* _tmp365_; -#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp365_ = sql; -#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_append_collate (self, _tmp365_); -#line 7657 "tracker-sparql-expression.c" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (value_separator); +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + value_separator = _tmp360_; +#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp361_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); +#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp362_ = _tmp361_; +#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (graph_separator); +#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (value_separator); +#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (expr); +#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (prop); +#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 8084 "tracker-sparql-expression.c" + } else { +#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (graph_separator); +#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (value_separator); +#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (expr); +#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (prop); +#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 8100 "tracker-sparql-expression.c" + } } -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp366_ = prop; -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp367_ = tracker_property_get_data_type (_tmp366_); -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp368_ = _tmp367_; -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - result = _tmp368_; -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (graph_separator); -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (value_separator); -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_string_free0 (expr); -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_object_unref0 (prop); -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - return result; -#line 7677 "tracker-sparql-expression.c" - } else { +#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_tmp362_) { +#line 8105 "tracker-sparql-expression.c" + gchar* _tmp363_ = NULL; + gchar* _tmp364_; +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp363_ = tracker_sparql_expression_parse_string_literal (self, NULL, &_inner_error_); +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp364_ = _tmp363_; +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_ != NULL) { +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_propagate_error (error, _inner_error_); +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (graph_separator); +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (value_separator); +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (expr); +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (prop); +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 8128 "tracker-sparql-expression.c" + } else { +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (graph_separator); +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (value_separator); +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (expr); +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (prop); +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_clear_error (&_inner_error_); +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return 0; +#line 8144 "tracker-sparql-expression.c" + } + } +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (graph_separator); +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + graph_separator = _tmp364_; +#line 8151 "tracker-sparql-expression.c" + } + } +#line 829 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp365_ = prop; +#line 829 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp366_ = tracker_property_get_multiple_values (_tmp365_); +#line 829 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp367_ = _tmp366_; +#line 829 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_tmp367_) { +#line 8162 "tracker-sparql-expression.c" + GString* _tmp368_; GString* _tmp369_; - GString* _tmp370_; - gssize _tmp371_; + gssize _tmp370_; glong begin; - GString* _tmp372_; - TrackerProperty* _tmp373_; + GString* _tmp371_; + TrackerProperty* _tmp372_; + const gchar* _tmp373_; const gchar* _tmp374_; - const gchar* _tmp375_; - GString* _tmp376_; - TrackerProperty* _tmp377_; + GString* _tmp375_; + TrackerProperty* _tmp376_; + TrackerPropertyType _tmp377_; TrackerPropertyType _tmp378_; - TrackerPropertyType _tmp379_; - glong _tmp380_; - GString* _tmp381_; - const gchar* _tmp382_; - gchar* _tmp383_ = NULL; - gchar* _tmp384_; - TrackerProperty* _tmp385_; - const gchar* _tmp386_; - const gchar* _tmp387_; + glong _tmp379_; + const gchar* _tmp380_; GString* _tmp388_; - TrackerProperty* _tmp389_; - const gchar* _tmp390_; - const gchar* _tmp391_; + const gchar* _tmp389_; + gchar* _tmp390_ = NULL; + gchar* _tmp391_; GString* _tmp392_; - const gchar* _tmp393_; -#line 785 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + TrackerProperty* _tmp393_; + const gchar* _tmp394_; + const gchar* _tmp395_; + GString* _tmp396_; + const gchar* _tmp397_; +#line 831 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp368_ = sql; +#line 831 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp368_, "(SELECT GROUP_CONCAT("); +#line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp369_ = sql; -#line 785 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append (_tmp369_, "(SELECT "); -#line 786 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp370_ = sql; -#line 786 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp371_ = _tmp370_->len; -#line 786 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - begin = (glong) _tmp371_; -#line 787 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp372_ = sql; -#line 787 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp373_ = prop; -#line 787 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp374_ = tracker_property_get_name (_tmp373_); -#line 787 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp375_ = _tmp374_; -#line 787 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append_printf (_tmp372_, "\"%s\"", _tmp375_); -#line 788 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp376_ = sql; -#line 788 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp377_ = prop; -#line 788 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp378_ = tracker_property_get_data_type (_tmp377_); -#line 788 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp379_ = _tmp378_; -#line 788 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp380_ = begin; -#line 788 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - tracker_sparql_expression_convert_expression_to_string (_tmp376_, _tmp379_, _tmp380_); -#line 789 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp381_ = sql; -#line 789 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp382_ = graph_separator; -#line 789 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp383_ = tracker_sparql_expression_escape_sql_string_literal (self, _tmp382_); -#line 789 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp384_ = _tmp383_; -#line 789 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp385_ = prop; -#line 789 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp386_ = tracker_property_get_name (_tmp385_); -#line 789 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp387_ = _tmp386_; -#line 789 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append_printf (_tmp381_, " || %s || COALESCE((SELECT Uri FROM Resource WHERE ID = \"%s:graph\")," \ +#line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp370_ = _tmp369_->len; +#line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + begin = (glong) _tmp370_; +#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp371_ = sql; +#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp372_ = prop; +#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp373_ = tracker_property_get_name (_tmp372_); +#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp374_ = _tmp373_; +#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append_printf (_tmp371_, "\"%s\"", _tmp374_); +#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp375_ = sql; +#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp376_ = prop; +#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp377_ = tracker_property_get_data_type (_tmp376_); +#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp378_ = _tmp377_; +#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp379_ = begin; +#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_convert_expression_to_string (_tmp375_, _tmp378_, _tmp379_); +#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp380_ = graph_separator; +#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_tmp380_ != NULL) { +#line 8223 "tracker-sparql-expression.c" + GString* _tmp381_; + const gchar* _tmp382_; + gchar* _tmp383_ = NULL; + gchar* _tmp384_; + TrackerProperty* _tmp385_; + const gchar* _tmp386_; + const gchar* _tmp387_; +#line 836 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp381_ = sql; +#line 836 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp382_ = graph_separator; +#line 836 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp383_ = tracker_sparql_expression_escape_sql_string_literal (self, _tmp382_); +#line 836 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp384_ = _tmp383_; +#line 836 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp385_ = prop; +#line 836 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp386_ = tracker_property_get_name (_tmp385_); +#line 836 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp387_ = _tmp386_; +#line 836 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append_printf (_tmp381_, " || %s || COALESCE((SELECT Uri FROM Resource WHERE ID = \"%s:graph\")," \ " '')", _tmp384_, _tmp387_); -#line 789 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (_tmp384_); -#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 836 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (_tmp384_); +#line 8249 "tracker-sparql-expression.c" + } +#line 838 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp388_ = sql; -#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp389_ = prop; -#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp390_ = tracker_property_get_table_name (_tmp389_); -#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 838 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp389_ = value_separator; +#line 838 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp390_ = tracker_sparql_expression_escape_sql_string_literal (self, _tmp389_); +#line 838 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp391_ = _tmp390_; -#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp392_ = expr; -#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _tmp393_ = _tmp392_->str; -#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - g_string_append_printf (_tmp388_, " FROM \"%s\" WHERE ID = %s)", _tmp391_, _tmp393_); -#line 792 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 838 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append_printf (_tmp388_, ",%s)", _tmp391_); +#line 838 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (_tmp391_); +#line 839 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp392_ = sql; +#line 839 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp393_ = prop; +#line 839 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp394_ = tracker_property_get_table_name (_tmp393_); +#line 839 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp395_ = _tmp394_; +#line 839 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp396_ = expr; +#line 839 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp397_ = _tmp396_->str; +#line 839 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append_printf (_tmp392_, " FROM \"%s\" WHERE ID = %s)", _tmp395_, _tmp397_); +#line 841 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_STRING; -#line 792 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 841 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (graph_separator); -#line 792 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 841 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (value_separator); -#line 792 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 841 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_string_free0 (expr); -#line 792 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 841 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (prop); -#line 792 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 841 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 7781 "tracker-sparql-expression.c" +#line 8289 "tracker-sparql-expression.c" + } else { + const gchar* _tmp398_; +#line 844 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp398_ = graph_separator; +#line 844 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_tmp398_ == NULL) { +#line 8296 "tracker-sparql-expression.c" + GString* _tmp399_; + TrackerProperty* _tmp400_; + const gchar* _tmp401_; + const gchar* _tmp402_; + TrackerProperty* _tmp403_; + const gchar* _tmp404_; + const gchar* _tmp405_; + GString* _tmp406_; + const gchar* _tmp407_; + TrackerProperty* _tmp408_; + TrackerPropertyType _tmp409_; + TrackerPropertyType _tmp410_; + TrackerProperty* _tmp412_; + TrackerPropertyType _tmp413_; + TrackerPropertyType _tmp414_; +#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp399_ = sql; +#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp400_ = prop; +#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp401_ = tracker_property_get_name (_tmp400_); +#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp402_ = _tmp401_; +#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp403_ = prop; +#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp404_ = tracker_property_get_table_name (_tmp403_); +#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp405_ = _tmp404_; +#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp406_ = expr; +#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp407_ = _tmp406_->str; +#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append_printf (_tmp399_, "(SELECT \"%s\" FROM \"%s\" WHERE ID = %s)", _tmp402_, _tmp405_, _tmp407_); +#line 847 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp408_ = prop; +#line 847 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp409_ = tracker_property_get_data_type (_tmp408_); +#line 847 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp410_ = _tmp409_; +#line 847 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + if (_tmp410_ == TRACKER_PROPERTY_TYPE_STRING) { +#line 8340 "tracker-sparql-expression.c" + GString* _tmp411_; +#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp411_ = sql; +#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_append_collate (self, _tmp411_); +#line 8346 "tracker-sparql-expression.c" + } +#line 851 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp412_ = prop; +#line 851 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp413_ = tracker_property_get_data_type (_tmp412_); +#line 851 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp414_ = _tmp413_; +#line 851 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + result = _tmp414_; +#line 851 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (graph_separator); +#line 851 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (value_separator); +#line 851 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (expr); +#line 851 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (prop); +#line 851 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return result; +#line 8366 "tracker-sparql-expression.c" + } else { + GString* _tmp415_; + GString* _tmp416_; + gssize _tmp417_; + glong begin; + GString* _tmp418_; + TrackerProperty* _tmp419_; + const gchar* _tmp420_; + const gchar* _tmp421_; + GString* _tmp422_; + TrackerProperty* _tmp423_; + TrackerPropertyType _tmp424_; + TrackerPropertyType _tmp425_; + glong _tmp426_; + GString* _tmp427_; + const gchar* _tmp428_; + gchar* _tmp429_ = NULL; + gchar* _tmp430_; + TrackerProperty* _tmp431_; + const gchar* _tmp432_; + const gchar* _tmp433_; + GString* _tmp434_; + TrackerProperty* _tmp435_; + const gchar* _tmp436_; + const gchar* _tmp437_; + GString* _tmp438_; + const gchar* _tmp439_; +#line 853 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp415_ = sql; +#line 853 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append (_tmp415_, "(SELECT "); +#line 854 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp416_ = sql; +#line 854 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp417_ = _tmp416_->len; +#line 854 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + begin = (glong) _tmp417_; +#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp418_ = sql; +#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp419_ = prop; +#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp420_ = tracker_property_get_name (_tmp419_); +#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp421_ = _tmp420_; +#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append_printf (_tmp418_, "\"%s\"", _tmp421_); +#line 856 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp422_ = sql; +#line 856 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp423_ = prop; +#line 856 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp424_ = tracker_property_get_data_type (_tmp423_); +#line 856 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp425_ = _tmp424_; +#line 856 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp426_ = begin; +#line 856 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + tracker_sparql_expression_convert_expression_to_string (_tmp422_, _tmp425_, _tmp426_); +#line 857 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp427_ = sql; +#line 857 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp428_ = graph_separator; +#line 857 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp429_ = tracker_sparql_expression_escape_sql_string_literal (self, _tmp428_); +#line 857 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp430_ = _tmp429_; +#line 857 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp431_ = prop; +#line 857 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp432_ = tracker_property_get_name (_tmp431_); +#line 857 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp433_ = _tmp432_; +#line 857 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append_printf (_tmp427_, " || %s || COALESCE((SELECT Uri FROM Resource WHERE ID = \"%s:graph\")," \ +" '')", _tmp430_, _tmp433_); +#line 857 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (_tmp430_); +#line 858 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp434_ = sql; +#line 858 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp435_ = prop; +#line 858 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp436_ = tracker_property_get_table_name (_tmp435_); +#line 858 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp437_ = _tmp436_; +#line 858 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp438_ = expr; +#line 858 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _tmp439_ = _tmp438_->str; +#line 858 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + g_string_append_printf (_tmp434_, " FROM \"%s\" WHERE ID = %s)", _tmp437_, _tmp439_); +#line 860 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + result = TRACKER_PROPERTY_TYPE_STRING; +#line 860 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (graph_separator); +#line 860 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (value_separator); +#line 860 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (expr); +#line 860 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (prop); +#line 860 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + return result; +#line 8470 "tracker-sparql-expression.c" + } } +#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (graph_separator); +#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (value_separator); +#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_string_free0 (expr); +#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_object_unref0 (prop); +#line 8481 "tracker-sparql-expression.c" } -#line 734 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (graph_separator); -#line 734 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_free0 (value_separator); -#line 734 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_string_free0 (expr); -#line 734 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" - _g_object_unref0 (prop); -#line 7792 "tracker-sparql-expression.c" } } } @@ -7831,79 +8521,79 @@ gboolean _tmp1_; const gchar* _tmp23_; GError * _inner_error_ = NULL; -#line 798 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 866 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_IRI_REF, &_inner_error_); -#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = _tmp0_; -#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (type_iri); -#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7849 "tracker-sparql-expression.c" +#line 8539 "tracker-sparql-expression.c" } else { -#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (type_iri); -#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7859 "tracker-sparql-expression.c" +#line 8549 "tracker-sparql-expression.c" } } -#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp1_) { -#line 7864 "tracker-sparql-expression.c" +#line 8554 "tracker-sparql-expression.c" gchar* _tmp2_ = NULL; -#line 803 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 871 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = tracker_sparql_expression_get_last_string (self, 1); -#line 803 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 871 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (type_iri); -#line 803 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 871 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type_iri = _tmp2_; -#line 7872 "tracker-sparql-expression.c" +#line 8562 "tracker-sparql-expression.c" } else { gboolean _tmp3_ = FALSE; gboolean _tmp4_; -#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_PN_PREFIX, &_inner_error_); -#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = _tmp3_; -#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (type_iri); -#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7890 "tracker-sparql-expression.c" +#line 8580 "tracker-sparql-expression.c" } else { -#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (type_iri); -#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7900 "tracker-sparql-expression.c" +#line 8590 "tracker-sparql-expression.c" } } -#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp4_) { -#line 7905 "tracker-sparql-expression.c" +#line 8595 "tracker-sparql-expression.c" gchar* _tmp5_ = NULL; gchar* ns; TrackerSparqlQuery* _tmp6_; @@ -7915,95 +8605,95 @@ gchar* _tmp12_ = NULL; gchar* _tmp13_; gchar* _tmp14_; -#line 805 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 873 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = tracker_sparql_expression_get_last_string (self, 0); -#line 805 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 873 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" ns = _tmp5_; -#line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COLON, &_inner_error_); -#line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (ns); -#line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (type_iri); -#line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7935 "tracker-sparql-expression.c" +#line 8625 "tracker-sparql-expression.c" } else { -#line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (ns); -#line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (type_iri); -#line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7947 "tracker-sparql-expression.c" +#line 8637 "tracker-sparql-expression.c" } } -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = self->priv->query; -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = ns; -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = tracker_sparql_expression_get_last_string (self, 0); -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = _tmp8_; -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = string_substring (_tmp9_, (glong) 1, (glong) (-1)); -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = _tmp10_; -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = tracker_sparql_query_resolve_prefixed_name (_tmp6_, _tmp7_, _tmp11_, &_inner_error_); -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_ = _tmp12_; -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp11_); -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp9_); -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp14_ = _tmp13_; -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (ns); -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (type_iri); -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7984 "tracker-sparql-expression.c" +#line 8674 "tracker-sparql-expression.c" } else { -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (ns); -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (type_iri); -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 7996 "tracker-sparql-expression.c" +#line 8686 "tracker-sparql-expression.c" } } -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (type_iri); -#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type_iri = _tmp14_; -#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (ns); -#line 8005 "tracker-sparql-expression.c" +#line 8695 "tracker-sparql-expression.c" } else { TrackerSparqlQuery* _tmp15_; gchar* _tmp16_ = NULL; @@ -8013,88 +8703,88 @@ gchar* _tmp20_ = NULL; gchar* _tmp21_; gchar* _tmp22_; -#line 809 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COLON, &_inner_error_); -#line 809 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 809 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 809 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 809 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (type_iri); -#line 809 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 8027 "tracker-sparql-expression.c" +#line 8717 "tracker-sparql-expression.c" } else { -#line 809 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (type_iri); -#line 809 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 809 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 809 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 8037 "tracker-sparql-expression.c" +#line 8727 "tracker-sparql-expression.c" } } -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_ = self->priv->query; -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp16_ = tracker_sparql_expression_get_last_string (self, 0); -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp17_ = _tmp16_; -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp18_ = string_substring (_tmp17_, (glong) 1, (glong) (-1)); -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp19_ = _tmp18_; -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp20_ = tracker_sparql_query_resolve_prefixed_name (_tmp15_, "", _tmp19_, &_inner_error_); -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp21_ = _tmp20_; -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp19_); -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp17_); -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp22_ = _tmp21_; -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (type_iri); -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 8070 "tracker-sparql-expression.c" +#line 8760 "tracker-sparql-expression.c" } else { -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (type_iri); -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 8080 "tracker-sparql-expression.c" +#line 8770 "tracker-sparql-expression.c" } } -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (type_iri); -#line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type_iri = _tmp22_; -#line 8087 "tracker-sparql-expression.c" +#line 8777 "tracker-sparql-expression.c" } } -#line 813 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 881 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp23_ = type_iri; -#line 813 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 881 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp23_, TRACKER_SPARQL_EXPRESSION_XSD_NS "boolean") == 0) { -#line 814 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 882 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 8096 "tracker-sparql-expression.c" +#line 8786 "tracker-sparql-expression.c" } else { gboolean _tmp24_ = FALSE; gboolean _tmp25_ = FALSE; @@ -8121,236 +8811,236 @@ gboolean _tmp56_; gboolean _tmp58_; gboolean _tmp60_; -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp36_ = type_iri; -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp36_, TRACKER_SPARQL_EXPRESSION_XSD_NS "integer") == 0) { -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp35_ = TRUE; -#line 8129 "tracker-sparql-expression.c" +#line 8819 "tracker-sparql-expression.c" } else { const gchar* _tmp37_; -#line 816 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 884 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp37_ = type_iri; -#line 816 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 884 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp35_ = g_strcmp0 (_tmp37_, TRACKER_SPARQL_EXPRESSION_XSD_NS "nonPositiveInteger") == 0; -#line 8136 "tracker-sparql-expression.c" +#line 8826 "tracker-sparql-expression.c" } -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp38_ = _tmp35_; -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp38_) { -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp34_ = TRUE; -#line 8144 "tracker-sparql-expression.c" +#line 8834 "tracker-sparql-expression.c" } else { const gchar* _tmp39_; -#line 817 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 885 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp39_ = type_iri; -#line 817 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 885 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp34_ = g_strcmp0 (_tmp39_, TRACKER_SPARQL_EXPRESSION_XSD_NS "negativeInteger") == 0; -#line 8151 "tracker-sparql-expression.c" +#line 8841 "tracker-sparql-expression.c" } -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp40_ = _tmp34_; -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp40_) { -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp33_ = TRUE; -#line 8159 "tracker-sparql-expression.c" +#line 8849 "tracker-sparql-expression.c" } else { const gchar* _tmp41_; -#line 818 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 886 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp41_ = type_iri; -#line 818 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 886 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp33_ = g_strcmp0 (_tmp41_, TRACKER_SPARQL_EXPRESSION_XSD_NS "long") == 0; -#line 8166 "tracker-sparql-expression.c" +#line 8856 "tracker-sparql-expression.c" } -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp42_ = _tmp33_; -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp42_) { -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp32_ = TRUE; -#line 8174 "tracker-sparql-expression.c" +#line 8864 "tracker-sparql-expression.c" } else { const gchar* _tmp43_; -#line 819 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp43_ = type_iri; -#line 819 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp32_ = g_strcmp0 (_tmp43_, TRACKER_SPARQL_EXPRESSION_XSD_NS "int") == 0; -#line 8181 "tracker-sparql-expression.c" +#line 8871 "tracker-sparql-expression.c" } -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp44_ = _tmp32_; -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp44_) { -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp31_ = TRUE; -#line 8189 "tracker-sparql-expression.c" +#line 8879 "tracker-sparql-expression.c" } else { const gchar* _tmp45_; -#line 820 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 888 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp45_ = type_iri; -#line 820 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 888 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp31_ = g_strcmp0 (_tmp45_, TRACKER_SPARQL_EXPRESSION_XSD_NS "short") == 0; -#line 8196 "tracker-sparql-expression.c" +#line 8886 "tracker-sparql-expression.c" } -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp46_ = _tmp31_; -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp46_) { -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp30_ = TRUE; -#line 8204 "tracker-sparql-expression.c" +#line 8894 "tracker-sparql-expression.c" } else { const gchar* _tmp47_; -#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 889 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp47_ = type_iri; -#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 889 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp30_ = g_strcmp0 (_tmp47_, TRACKER_SPARQL_EXPRESSION_XSD_NS "byte") == 0; -#line 8211 "tracker-sparql-expression.c" +#line 8901 "tracker-sparql-expression.c" } -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp48_ = _tmp30_; -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp48_) { -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp29_ = TRUE; -#line 8219 "tracker-sparql-expression.c" +#line 8909 "tracker-sparql-expression.c" } else { const gchar* _tmp49_; -#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp49_ = type_iri; -#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp29_ = g_strcmp0 (_tmp49_, TRACKER_SPARQL_EXPRESSION_XSD_NS "nonNegativeInteger") == 0; -#line 8226 "tracker-sparql-expression.c" +#line 8916 "tracker-sparql-expression.c" } -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp50_ = _tmp29_; -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp50_) { -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp28_ = TRUE; -#line 8234 "tracker-sparql-expression.c" +#line 8924 "tracker-sparql-expression.c" } else { const gchar* _tmp51_; -#line 823 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp51_ = type_iri; -#line 823 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp28_ = g_strcmp0 (_tmp51_, TRACKER_SPARQL_EXPRESSION_XSD_NS "unsignedLong") == 0; -#line 8241 "tracker-sparql-expression.c" +#line 8931 "tracker-sparql-expression.c" } -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp52_ = _tmp28_; -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp52_) { -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp27_ = TRUE; -#line 8249 "tracker-sparql-expression.c" +#line 8939 "tracker-sparql-expression.c" } else { const gchar* _tmp53_; -#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 892 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp53_ = type_iri; -#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 892 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp27_ = g_strcmp0 (_tmp53_, TRACKER_SPARQL_EXPRESSION_XSD_NS "unsignedInt") == 0; -#line 8256 "tracker-sparql-expression.c" +#line 8946 "tracker-sparql-expression.c" } -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp54_ = _tmp27_; -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp54_) { -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp26_ = TRUE; -#line 8264 "tracker-sparql-expression.c" +#line 8954 "tracker-sparql-expression.c" } else { const gchar* _tmp55_; -#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 893 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp55_ = type_iri; -#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 893 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp26_ = g_strcmp0 (_tmp55_, TRACKER_SPARQL_EXPRESSION_XSD_NS "unsignedShort") == 0; -#line 8271 "tracker-sparql-expression.c" +#line 8961 "tracker-sparql-expression.c" } -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp56_ = _tmp26_; -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp56_) { -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp25_ = TRUE; -#line 8279 "tracker-sparql-expression.c" +#line 8969 "tracker-sparql-expression.c" } else { const gchar* _tmp57_; -#line 826 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp57_ = type_iri; -#line 826 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp25_ = g_strcmp0 (_tmp57_, TRACKER_SPARQL_EXPRESSION_XSD_NS "unsignedByte") == 0; -#line 8286 "tracker-sparql-expression.c" +#line 8976 "tracker-sparql-expression.c" } -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp58_ = _tmp25_; -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp58_) { -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp24_ = TRUE; -#line 8294 "tracker-sparql-expression.c" +#line 8984 "tracker-sparql-expression.c" } else { const gchar* _tmp59_; -#line 827 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 895 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp59_ = type_iri; -#line 827 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 895 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp24_ = g_strcmp0 (_tmp59_, TRACKER_SPARQL_EXPRESSION_XSD_NS "positiveInteger") == 0; -#line 8301 "tracker-sparql-expression.c" +#line 8991 "tracker-sparql-expression.c" } -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp60_ = _tmp24_; -#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp60_) { -#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type = TRACKER_PROPERTY_TYPE_INTEGER; -#line 8309 "tracker-sparql-expression.c" +#line 8999 "tracker-sparql-expression.c" } else { const gchar* _tmp61_; -#line 829 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp61_ = type_iri; -#line 829 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp61_, TRACKER_SPARQL_EXPRESSION_XSD_NS "double") == 0) { -#line 830 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type = TRACKER_PROPERTY_TYPE_DOUBLE; -#line 8318 "tracker-sparql-expression.c" +#line 9008 "tracker-sparql-expression.c" } else { const gchar* _tmp62_; -#line 831 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 899 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp62_ = type_iri; -#line 831 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 899 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp62_, TRACKER_SPARQL_EXPRESSION_XSD_NS "date") == 0) { -#line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 900 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type = TRACKER_PROPERTY_TYPE_DATE; -#line 8327 "tracker-sparql-expression.c" +#line 9017 "tracker-sparql-expression.c" } else { const gchar* _tmp63_; -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp63_ = type_iri; -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (g_strcmp0 (_tmp63_, TRACKER_SPARQL_EXPRESSION_XSD_NS "dateTime") == 0) { -#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 902 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type = TRACKER_PROPERTY_TYPE_DATETIME; -#line 8336 "tracker-sparql-expression.c" +#line 9026 "tracker-sparql-expression.c" } else { -#line 836 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type = TRACKER_PROPERTY_TYPE_STRING; -#line 8340 "tracker-sparql-expression.c" +#line 9030 "tracker-sparql-expression.c" } } } } } -#line 839 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 907 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = type; -#line 839 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 907 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (type_iri); -#line 839 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 907 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 8352 "tracker-sparql-expression.c" +#line 9042 "tracker-sparql-expression.c" } @@ -8359,40 +9049,40 @@ gchar* result = NULL; TrackerSparqlTokenType _tmp0_ = 0; GError * _inner_error_ = NULL; -#line 842 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 910 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, NULL); -#line 843 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 911 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _vala_type = TRACKER_PROPERTY_TYPE_STRING; -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 913 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 913 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 913 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 913 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 913 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return NULL; -#line 8375 "tracker-sparql-expression.c" +#line 9065 "tracker-sparql-expression.c" } else { -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 913 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 913 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 913 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return NULL; -#line 8383 "tracker-sparql-expression.c" +#line 9073 "tracker-sparql-expression.c" } } -#line 846 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = tracker_sparql_expression_last (self); -#line 846 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" switch (_tmp0_) { -#line 846 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_STRING_LITERAL1: -#line 846 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_STRING_LITERAL2: -#line 8394 "tracker-sparql-expression.c" +#line 9084 "tracker-sparql-expression.c" { GString* _tmp1_; GString* sb; @@ -8410,78 +9100,78 @@ GString* _tmp54_; const gchar* _tmp55_; gchar* _tmp56_; -#line 849 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 917 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = g_string_new (""); -#line 849 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 917 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" sb = _tmp1_; -#line 851 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 919 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = tracker_sparql_expression_get_last_string (self, 1); -#line 851 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 919 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" s = _tmp2_; -#line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = s; -#line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" p = _tmp3_; -#line 853 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 921 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = p; -#line 853 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 921 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = s; -#line 853 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 921 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = strlen (_tmp5_); -#line 853 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 921 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = _tmp6_; -#line 853 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 921 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" end = _tmp4_ + _tmp7_; -#line 854 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 922 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" while (TRUE) { -#line 8436 "tracker-sparql-expression.c" +#line 9126 "tracker-sparql-expression.c" const gchar* _tmp8_; const gchar* _tmp9_; const gchar* _tmp10_; const gchar* _tmp11_ = NULL; const gchar* q; const gchar* _tmp12_; -#line 854 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 922 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = p; -#line 854 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 922 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = end; -#line 854 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 922 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (!(((glong) _tmp8_) < ((glong) _tmp9_))) { -#line 854 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 922 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 8451 "tracker-sparql-expression.c" +#line 9141 "tracker-sparql-expression.c" } -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 923 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = p; -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 923 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = strchr (_tmp10_, (gint) '\\'); -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 923 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" q = _tmp11_; -#line 856 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 924 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = q; -#line 856 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 924 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp12_ == NULL) { -#line 8463 "tracker-sparql-expression.c" +#line 9153 "tracker-sparql-expression.c" GString* _tmp13_; const gchar* _tmp14_; const gchar* _tmp15_; const gchar* _tmp16_; const gchar* _tmp17_; -#line 857 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_ = sb; -#line 857 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp14_ = p; -#line 857 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_ = end; -#line 857 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp16_ = p; -#line 857 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append_len (_tmp13_, _tmp14_, (gssize) ((glong) (_tmp15_ - _tmp16_))); -#line 858 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp17_ = end; -#line 858 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" p = _tmp17_; -#line 8483 "tracker-sparql-expression.c" +#line 9173 "tracker-sparql-expression.c" } else { GString* _tmp18_; const gchar* _tmp19_; @@ -8491,117 +9181,117 @@ const gchar* _tmp23_; gchar _tmp24_; const gchar* _tmp49_; -#line 860 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 928 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp18_ = sb; -#line 860 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 928 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp19_ = p; -#line 860 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 928 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp20_ = q; -#line 860 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 928 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp21_ = p; -#line 860 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 928 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append_len (_tmp18_, _tmp19_, (gssize) ((glong) (_tmp20_ - _tmp21_))); -#line 861 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 929 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp22_ = q; -#line 861 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 929 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" p = _tmp22_ + 1; -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp23_ = p; -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp24_ = ((gchar*) _tmp23_)[0]; -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" switch (_tmp24_) { -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case '\'': -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case '"': -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case '\\': -#line 8519 "tracker-sparql-expression.c" +#line 9209 "tracker-sparql-expression.c" { GString* _tmp25_; const gchar* _tmp26_; gchar _tmp27_; -#line 866 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp25_ = sb; -#line 866 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp26_ = p; -#line 866 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp27_ = ((gchar*) _tmp26_)[0]; -#line 866 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append_c (_tmp25_, _tmp27_); -#line 867 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 935 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 8534 "tracker-sparql-expression.c" +#line 9224 "tracker-sparql-expression.c" } -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case 'b': -#line 8538 "tracker-sparql-expression.c" +#line 9228 "tracker-sparql-expression.c" { GString* _tmp28_; -#line 869 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp28_ = sb; -#line 869 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append_c (_tmp28_, '\b'); -#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 938 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 8547 "tracker-sparql-expression.c" +#line 9237 "tracker-sparql-expression.c" } -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case 'f': -#line 8551 "tracker-sparql-expression.c" +#line 9241 "tracker-sparql-expression.c" { GString* _tmp29_; -#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 940 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp29_ = sb; -#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 940 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append_c (_tmp29_, '\f'); -#line 873 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 941 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 8560 "tracker-sparql-expression.c" +#line 9250 "tracker-sparql-expression.c" } -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case 'n': -#line 8564 "tracker-sparql-expression.c" +#line 9254 "tracker-sparql-expression.c" { GString* _tmp30_; -#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 943 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp30_ = sb; -#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 943 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append_c (_tmp30_, '\n'); -#line 876 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 944 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 8573 "tracker-sparql-expression.c" +#line 9263 "tracker-sparql-expression.c" } -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case 'r': -#line 8577 "tracker-sparql-expression.c" +#line 9267 "tracker-sparql-expression.c" { GString* _tmp31_; -#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 946 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp31_ = sb; -#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 946 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append_c (_tmp31_, '\r'); -#line 879 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 947 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 8586 "tracker-sparql-expression.c" +#line 9276 "tracker-sparql-expression.c" } -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case 't': -#line 8590 "tracker-sparql-expression.c" +#line 9280 "tracker-sparql-expression.c" { GString* _tmp32_; -#line 881 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 949 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp32_ = sb; -#line 881 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 949 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append_c (_tmp32_, '\t'); -#line 882 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 950 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 8599 "tracker-sparql-expression.c" +#line 9289 "tracker-sparql-expression.c" } -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case 'u': -#line 8603 "tracker-sparql-expression.c" +#line 9293 "tracker-sparql-expression.c" { const gchar* _tmp33_; gchar* ptr; @@ -8621,274 +9311,274 @@ GString* _tmp46_; gunichar _tmp47_; const gchar* _tmp48_; -#line 884 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 952 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp33_ = p; -#line 884 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 952 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" ptr = ((gchar*) _tmp33_) + 1; -#line 885 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp34_ = ptr; -#line 885 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp35_ = _tmp34_[0]; -#line 885 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp36_ = g_ascii_xdigit_value (_tmp35_); -#line 885 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp37_ = ptr; -#line 885 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp38_ = _tmp37_[1]; -#line 885 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp39_ = g_ascii_xdigit_value (_tmp38_); -#line 885 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp40_ = ptr; -#line 885 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp41_ = _tmp40_[2]; -#line 885 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp42_ = g_ascii_xdigit_value (_tmp41_); -#line 885 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp43_ = ptr; -#line 885 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp44_ = _tmp43_[3]; -#line 885 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp45_ = g_ascii_xdigit_value (_tmp44_); -#line 885 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" c = (((((((gunichar) _tmp36_) * 16) + _tmp39_) * 16) + _tmp42_) * 16) + _tmp45_; -#line 886 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 954 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp46_ = sb; -#line 886 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 954 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp47_ = c; -#line 886 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 954 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append_unichar (_tmp46_, _tmp47_); -#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 955 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp48_ = p; -#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 955 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" p = _tmp48_ + 4; -#line 888 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 956 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 8665 "tracker-sparql-expression.c" +#line 9355 "tracker-sparql-expression.c" } default: -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 8670 "tracker-sparql-expression.c" +#line 9360 "tracker-sparql-expression.c" } -#line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp49_ = p; -#line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" p = _tmp49_ + 1; -#line 8676 "tracker-sparql-expression.c" +#line 9366 "tracker-sparql-expression.c" } } -#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp50_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_DOUBLE_CIRCUMFLEX, &_inner_error_); -#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp51_ = _tmp50_; -#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (s); -#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_string_free0 (sb); -#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return NULL; -#line 8695 "tracker-sparql-expression.c" +#line 9385 "tracker-sparql-expression.c" } else { -#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (s); -#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_string_free0 (sb); -#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return NULL; -#line 8707 "tracker-sparql-expression.c" +#line 9397 "tracker-sparql-expression.c" } } -#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp51_) { -#line 8712 "tracker-sparql-expression.c" +#line 9402 "tracker-sparql-expression.c" TrackerPropertyType _tmp52_ = 0; TrackerPropertyType _tmp53_; -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp52_ = tracker_sparql_expression_parse_type_uri (self, &_inner_error_); -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp53_ = _tmp52_; -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (s); -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_string_free0 (sb); -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return NULL; -#line 8731 "tracker-sparql-expression.c" +#line 9421 "tracker-sparql-expression.c" } else { -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (s); -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_string_free0 (sb); -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return NULL; -#line 8743 "tracker-sparql-expression.c" +#line 9433 "tracker-sparql-expression.c" } } -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _vala_type = _tmp53_; -#line 8748 "tracker-sparql-expression.c" +#line 9438 "tracker-sparql-expression.c" } -#line 899 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 967 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp54_ = sb; -#line 899 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 967 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp55_ = _tmp54_->str; -#line 899 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 967 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp56_ = g_strdup (_tmp55_); -#line 899 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 967 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp56_; -#line 899 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 967 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (s); -#line 899 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 967 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_string_free0 (sb); -#line 899 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 967 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (type) { -#line 899 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 967 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" *type = _vala_type; -#line 8766 "tracker-sparql-expression.c" +#line 9456 "tracker-sparql-expression.c" } -#line 899 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 967 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 8770 "tracker-sparql-expression.c" +#line 9460 "tracker-sparql-expression.c" } -#line 846 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_STRING_LITERAL_LONG1: -#line 846 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_STRING_LITERAL_LONG2: -#line 8776 "tracker-sparql-expression.c" +#line 9466 "tracker-sparql-expression.c" { gchar* _tmp57_ = NULL; gchar* _result_; gboolean _tmp58_ = FALSE; gboolean _tmp59_; -#line 902 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 970 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp57_ = tracker_sparql_expression_get_last_string (self, 3); -#line 902 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 970 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _result_ = _tmp57_; -#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp58_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_DOUBLE_CIRCUMFLEX, &_inner_error_); -#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp59_ = _tmp58_; -#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_result_); -#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return NULL; -#line 8800 "tracker-sparql-expression.c" +#line 9490 "tracker-sparql-expression.c" } else { -#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_result_); -#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return NULL; -#line 8810 "tracker-sparql-expression.c" +#line 9500 "tracker-sparql-expression.c" } } -#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp59_) { -#line 8815 "tracker-sparql-expression.c" +#line 9505 "tracker-sparql-expression.c" TrackerPropertyType _tmp60_ = 0; TrackerPropertyType _tmp61_; -#line 906 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp60_ = tracker_sparql_expression_parse_type_uri (self, &_inner_error_); -#line 906 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp61_ = _tmp60_; -#line 906 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 906 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 906 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 906 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_result_); -#line 906 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return NULL; -#line 8832 "tracker-sparql-expression.c" +#line 9522 "tracker-sparql-expression.c" } else { -#line 906 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_result_); -#line 906 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 906 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 906 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return NULL; -#line 8842 "tracker-sparql-expression.c" +#line 9532 "tracker-sparql-expression.c" } } -#line 906 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _vala_type = _tmp61_; -#line 8847 "tracker-sparql-expression.c" +#line 9537 "tracker-sparql-expression.c" } -#line 909 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 977 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _result_; -#line 909 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 977 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (type) { -#line 909 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 977 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" *type = _vala_type; -#line 8855 "tracker-sparql-expression.c" +#line 9545 "tracker-sparql-expression.c" } -#line 909 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 977 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 8859 "tracker-sparql-expression.c" +#line 9549 "tracker-sparql-expression.c" } default: { GError* _tmp62_ = NULL; -#line 911 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp62_ = tracker_sparql_expression_get_error (self, "expected string literal"); -#line 911 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp62_; -#line 911 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 911 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 911 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return NULL; -#line 8874 "tracker-sparql-expression.c" +#line 9564 "tracker-sparql-expression.c" } else { -#line 911 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 911 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 911 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return NULL; -#line 8882 "tracker-sparql-expression.c" +#line 9572 "tracker-sparql-expression.c" } } } -#line 842 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 910 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (type) { -#line 842 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 910 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" *type = _vala_type; -#line 8890 "tracker-sparql-expression.c" +#line 9580 "tracker-sparql-expression.c" } } @@ -8898,95 +9588,95 @@ gboolean _tmp0_ = FALSE; gboolean _tmp1_; GError * _inner_error_ = NULL; -#line 915 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 983 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 915 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 983 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 915 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 983 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (uri != NULL, 0); -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = _tmp0_; -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 8918 "tracker-sparql-expression.c" +#line 9608 "tracker-sparql-expression.c" } else { -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 8926 "tracker-sparql-expression.c" +#line 9616 "tracker-sparql-expression.c" } } -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp1_) { -#line 8931 "tracker-sparql-expression.c" +#line 9621 "tracker-sparql-expression.c" GString* _tmp2_; const gchar* _tmp3_; TrackerPropertyType _tmp4_ = 0; TrackerPropertyType _result_; -#line 918 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 986 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = sql; -#line 918 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 986 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = uri; -#line 918 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 986 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = tracker_sparql_expression_translate_function (self, _tmp2_, _tmp3_, &_inner_error_); -#line 918 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 986 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _result_ = _tmp4_; -#line 918 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 986 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 918 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 986 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 918 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 986 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 918 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 986 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 8952 "tracker-sparql-expression.c" +#line 9642 "tracker-sparql-expression.c" } else { -#line 918 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 986 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 918 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 986 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 918 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 986 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 8960 "tracker-sparql-expression.c" +#line 9650 "tracker-sparql-expression.c" } } -#line 919 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 987 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 919 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 987 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 919 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 987 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 919 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 987 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 919 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 987 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 8973 "tracker-sparql-expression.c" +#line 9663 "tracker-sparql-expression.c" } else { -#line 919 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 987 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 919 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 987 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 919 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 987 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 8981 "tracker-sparql-expression.c" +#line 9671 "tracker-sparql-expression.c" } } -#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 988 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _result_; -#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 988 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 8988 "tracker-sparql-expression.c" +#line 9678 "tracker-sparql-expression.c" } else { GString* _tmp5_; TrackerSparqlLiteralBinding* _tmp6_; @@ -8997,39 +9687,39 @@ TrackerSparqlQuery* _tmp10_; TrackerSparqlLiteralBinding* _tmp11_; TrackerSparqlLiteralBinding* _tmp12_; -#line 923 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 991 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = sql; -#line 923 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 991 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp5_, "COALESCE((SELECT ID FROM Resource WHERE Uri = ?), 0)"); -#line 924 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 992 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = tracker_sparql_literal_binding_new (); -#line 924 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 992 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" binding = _tmp6_; -#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = binding; -#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = uri; -#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = g_strdup (_tmp8_); -#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp7_->literal); -#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_->literal = _tmp9_; -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = self->priv->query; -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = binding; -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = _g_object_ref0 (_tmp11_); -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_->bindings = g_list_append (_tmp10_->bindings, _tmp12_); -#line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 995 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_RESOURCE; -#line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 995 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 995 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 9031 "tracker-sparql-expression.c" +#line 9721 "tracker-sparql-expression.c" } } @@ -9039,55 +9729,55 @@ TrackerPropertyType type = 0; TrackerSparqlTokenType _tmp0_ = 0; GError * _inner_error_ = NULL; -#line 931 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 999 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 931 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 999 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = tracker_sparql_expression_current (self); -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" switch (_tmp0_) { -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS: -#line 9051 "tracker-sparql-expression.c" +#line 9741 "tracker-sparql-expression.c" { GString* _tmp1_; TrackerPropertyType _tmp2_ = 0; TrackerPropertyType _tmp3_; -#line 936 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = sql; -#line 936 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = tracker_sparql_expression_translate_bracketted_expression (self, _tmp1_, &_inner_error_); -#line 936 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = _tmp2_; -#line 936 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 936 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 936 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 936 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9070 "tracker-sparql-expression.c" +#line 9760 "tracker-sparql-expression.c" } else { -#line 936 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 936 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 936 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9078 "tracker-sparql-expression.c" +#line 9768 "tracker-sparql-expression.c" } } -#line 936 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp3_; -#line 936 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 9085 "tracker-sparql-expression.c" +#line 9775 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_IRI_REF: -#line 9089 "tracker-sparql-expression.c" +#line 9779 "tracker-sparql-expression.c" { GString* _tmp4_; gchar* _tmp5_ = NULL; @@ -9095,119 +9785,119 @@ TrackerPropertyType _tmp7_ = 0; TrackerPropertyType _tmp8_; TrackerPropertyType _tmp9_; -#line 938 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 938 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 938 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 938 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 938 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9107 "tracker-sparql-expression.c" +#line 9797 "tracker-sparql-expression.c" } else { -#line 938 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 938 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 938 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9115 "tracker-sparql-expression.c" +#line 9805 "tracker-sparql-expression.c" } } -#line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = sql; -#line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = tracker_sparql_expression_get_last_string (self, 1); -#line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = _tmp5_; -#line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = tracker_sparql_expression_translate_uri_expression (self, _tmp4_, _tmp6_, &_inner_error_); -#line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = _tmp7_; -#line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp6_); -#line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = _tmp8_; -#line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9140 "tracker-sparql-expression.c" +#line 9830 "tracker-sparql-expression.c" } else { -#line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9148 "tracker-sparql-expression.c" +#line 9838 "tracker-sparql-expression.c" } } -#line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp9_; -#line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 9155 "tracker-sparql-expression.c" +#line 9845 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_DECIMAL: -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_DOUBLE: -#line 9161 "tracker-sparql-expression.c" +#line 9851 "tracker-sparql-expression.c" { TrackerSparqlQuery* _tmp10_; gboolean _tmp11_; gboolean _tmp12_; -#line 942 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1010 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 942 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1010 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 942 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1010 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 942 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1010 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 942 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1010 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9176 "tracker-sparql-expression.c" +#line 9866 "tracker-sparql-expression.c" } else { -#line 942 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1010 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 942 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1010 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 942 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1010 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9184 "tracker-sparql-expression.c" +#line 9874 "tracker-sparql-expression.c" } } -#line 944 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = self->priv->query; -#line 944 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = tracker_sparql_query_get_no_cache (_tmp10_); -#line 944 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = _tmp11_; -#line 944 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp12_) { -#line 9195 "tracker-sparql-expression.c" +#line 9885 "tracker-sparql-expression.c" GString* _tmp13_; gchar* _tmp14_ = NULL; gchar* _tmp15_; -#line 945 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1013 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_ = sql; -#line 945 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1013 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp14_ = tracker_sparql_expression_get_last_string (self, 0); -#line 945 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1013 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_ = _tmp14_; -#line 945 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1013 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp13_, _tmp15_); -#line 945 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1013 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp15_); -#line 9209 "tracker-sparql-expression.c" +#line 9899 "tracker-sparql-expression.c" } else { GString* _tmp16_; TrackerSparqlLiteralBinding* _tmp17_; @@ -9217,83 +9907,83 @@ TrackerSparqlQuery* _tmp20_; TrackerSparqlLiteralBinding* _tmp21_; TrackerSparqlLiteralBinding* _tmp22_; -#line 947 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1015 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp16_ = sql; -#line 947 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1015 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp16_, "?"); -#line 949 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1017 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp17_ = tracker_sparql_literal_binding_new (); -#line 949 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1017 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" binding = _tmp17_; -#line 950 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1018 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp18_ = binding; -#line 950 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1018 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp19_ = tracker_sparql_expression_get_last_string (self, 0); -#line 950 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1018 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp18_->literal); -#line 950 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1018 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp18_->literal = _tmp19_; -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1019 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp20_ = self->priv->query; -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1019 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp21_ = binding; -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1019 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp22_ = _g_object_ref0 (_tmp21_); -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1019 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp20_->bindings = g_list_append (_tmp20_->bindings, _tmp22_); -#line 944 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 9245 "tracker-sparql-expression.c" +#line 9935 "tracker-sparql-expression.c" } -#line 954 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1022 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_DOUBLE; -#line 954 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1022 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 9251 "tracker-sparql-expression.c" +#line 9941 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_TRUE: -#line 9255 "tracker-sparql-expression.c" +#line 9945 "tracker-sparql-expression.c" { TrackerSparqlQuery* _tmp23_; gboolean _tmp24_; gboolean _tmp25_; -#line 956 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1024 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 956 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1024 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 956 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1024 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 956 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1024 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 956 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1024 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9270 "tracker-sparql-expression.c" +#line 9960 "tracker-sparql-expression.c" } else { -#line 956 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1024 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 956 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1024 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 956 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1024 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9278 "tracker-sparql-expression.c" +#line 9968 "tracker-sparql-expression.c" } } -#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1026 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp23_ = self->priv->query; -#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1026 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp24_ = tracker_sparql_query_get_no_cache (_tmp23_); -#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1026 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp25_ = _tmp24_; -#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1026 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp25_) { -#line 9289 "tracker-sparql-expression.c" +#line 9979 "tracker-sparql-expression.c" GString* _tmp26_; -#line 959 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1027 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp26_ = sql; -#line 959 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1027 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp26_, "1"); -#line 9295 "tracker-sparql-expression.c" +#line 9985 "tracker-sparql-expression.c" } else { GString* _tmp27_; TrackerSparqlLiteralBinding* _tmp28_; @@ -9304,87 +9994,87 @@ TrackerSparqlQuery* _tmp32_; TrackerSparqlLiteralBinding* _tmp33_; TrackerSparqlLiteralBinding* _tmp34_; -#line 961 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1029 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp27_ = sql; -#line 961 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1029 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp27_, "?"); -#line 963 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1031 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp28_ = tracker_sparql_literal_binding_new (); -#line 963 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1031 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" binding = _tmp28_; -#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1032 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp29_ = binding; -#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1032 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp30_ = g_strdup ("1"); -#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1032 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp29_->literal); -#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1032 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp29_->literal = _tmp30_; -#line 965 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1033 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp31_ = binding; -#line 965 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1033 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" ((TrackerSparqlDataBinding*) _tmp31_)->data_type = TRACKER_PROPERTY_TYPE_INTEGER; -#line 966 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1034 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp32_ = self->priv->query; -#line 966 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1034 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp33_ = binding; -#line 966 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1034 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp34_ = _g_object_ref0 (_tmp33_); -#line 966 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1034 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp32_->bindings = g_list_append (_tmp32_->bindings, _tmp34_); -#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1026 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 9336 "tracker-sparql-expression.c" +#line 10026 "tracker-sparql-expression.c" } -#line 969 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1037 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 969 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1037 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 9342 "tracker-sparql-expression.c" +#line 10032 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_FALSE: -#line 9346 "tracker-sparql-expression.c" +#line 10036 "tracker-sparql-expression.c" { TrackerSparqlQuery* _tmp35_; gboolean _tmp36_; gboolean _tmp37_; -#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9361 "tracker-sparql-expression.c" +#line 10051 "tracker-sparql-expression.c" } else { -#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9369 "tracker-sparql-expression.c" +#line 10059 "tracker-sparql-expression.c" } } -#line 973 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1041 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp35_ = self->priv->query; -#line 973 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1041 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp36_ = tracker_sparql_query_get_no_cache (_tmp35_); -#line 973 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1041 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp37_ = _tmp36_; -#line 973 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1041 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp37_) { -#line 9380 "tracker-sparql-expression.c" +#line 10070 "tracker-sparql-expression.c" GString* _tmp38_; -#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1042 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp38_ = sql; -#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1042 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp38_, "0"); -#line 9386 "tracker-sparql-expression.c" +#line 10076 "tracker-sparql-expression.c" } else { GString* _tmp39_; TrackerSparqlLiteralBinding* _tmp40_; @@ -9395,128 +10085,128 @@ TrackerSparqlQuery* _tmp44_; TrackerSparqlLiteralBinding* _tmp45_; TrackerSparqlLiteralBinding* _tmp46_; -#line 976 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp39_ = sql; -#line 976 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp39_, "?"); -#line 978 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1046 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp40_ = tracker_sparql_literal_binding_new (); -#line 978 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1046 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" binding = _tmp40_; -#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1047 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp41_ = binding; -#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1047 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp42_ = g_strdup ("0"); -#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1047 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp41_->literal); -#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1047 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp41_->literal = _tmp42_; -#line 980 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp43_ = binding; -#line 980 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" ((TrackerSparqlDataBinding*) _tmp43_)->data_type = TRACKER_PROPERTY_TYPE_INTEGER; -#line 981 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1049 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp44_ = self->priv->query; -#line 981 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1049 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp45_ = binding; -#line 981 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1049 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp46_ = _g_object_ref0 (_tmp45_); -#line 981 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1049 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp44_->bindings = g_list_append (_tmp44_->bindings, _tmp46_); -#line 973 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1041 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 9427 "tracker-sparql-expression.c" +#line 10117 "tracker-sparql-expression.c" } -#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1052 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1052 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 9433 "tracker-sparql-expression.c" +#line 10123 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_STRING_LITERAL1: -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_STRING_LITERAL2: -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_STRING_LITERAL_LONG1: -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_STRING_LITERAL_LONG2: -#line 9443 "tracker-sparql-expression.c" +#line 10133 "tracker-sparql-expression.c" { TrackerPropertyType _tmp47_ = 0; gchar* _tmp48_ = NULL; gchar* literal; TrackerPropertyType _tmp49_; -#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp48_ = tracker_sparql_expression_parse_string_literal (self, &_tmp47_, &_inner_error_); -#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type = _tmp47_; -#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" literal = _tmp48_; -#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9463 "tracker-sparql-expression.c" +#line 10153 "tracker-sparql-expression.c" } else { -#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9471 "tracker-sparql-expression.c" +#line 10161 "tracker-sparql-expression.c" } } -#line 991 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1059 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp49_ = type; -#line 991 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1059 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" switch (_tmp49_) { -#line 991 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1059 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_PROPERTY_TYPE_INTEGER: -#line 991 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1059 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_PROPERTY_TYPE_BOOLEAN: -#line 991 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1059 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_PROPERTY_TYPE_DOUBLE: -#line 991 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1059 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_PROPERTY_TYPE_DATE: -#line 991 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1059 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_PROPERTY_TYPE_DATETIME: -#line 9488 "tracker-sparql-expression.c" +#line 10178 "tracker-sparql-expression.c" { TrackerSparqlQuery* _tmp50_; gboolean _tmp51_; gboolean _tmp52_; -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1065 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp50_ = self->priv->query; -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1065 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp51_ = tracker_sparql_query_get_no_cache (_tmp50_); -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1065 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp52_ = _tmp51_; -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1065 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp52_) { -#line 9501 "tracker-sparql-expression.c" +#line 10191 "tracker-sparql-expression.c" GString* _tmp53_; const gchar* _tmp54_; gchar* _tmp55_ = NULL; gchar* _tmp56_; -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1066 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp53_ = sql; -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1066 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp54_ = literal; -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1066 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp55_ = tracker_sparql_expression_escape_sql_string_literal (self, _tmp54_); -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1066 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp56_ = _tmp55_; -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1066 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp53_, _tmp56_); -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1066 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp56_); -#line 9518 "tracker-sparql-expression.c" +#line 10208 "tracker-sparql-expression.c" } else { TrackerSparqlLiteralBinding* _tmp57_; TrackerSparqlLiteralBinding* binding; @@ -9529,49 +10219,49 @@ TrackerSparqlLiteralBinding* _tmp64_; TrackerSparqlLiteralBinding* _tmp65_; GString* _tmp66_; -#line 1000 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp57_ = tracker_sparql_literal_binding_new (); -#line 1000 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" binding = _tmp57_; -#line 1001 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1069 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp58_ = binding; -#line 1001 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1069 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp59_ = literal; -#line 1001 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1069 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp60_ = g_strdup (_tmp59_); -#line 1001 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1069 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp58_->literal); -#line 1001 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1069 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp58_->literal = _tmp60_; -#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1070 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp61_ = binding; -#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1070 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp62_ = type; -#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1070 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" ((TrackerSparqlDataBinding*) _tmp61_)->data_type = _tmp62_; -#line 1003 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1071 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp63_ = self->priv->query; -#line 1003 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1071 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp64_ = binding; -#line 1003 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1071 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp65_ = _g_object_ref0 (_tmp64_); -#line 1003 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1071 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp63_->bindings = g_list_append (_tmp63_->bindings, _tmp65_); -#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp66_ = sql; -#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp66_, "?"); -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1065 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 9565 "tracker-sparql-expression.c" +#line 10255 "tracker-sparql-expression.c" } -#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1074 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = type; -#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1074 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (literal); -#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1074 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 9573 "tracker-sparql-expression.c" +#line 10263 "tracker-sparql-expression.c" } default: { @@ -9579,32 +10269,32 @@ gboolean _tmp68_; gboolean _tmp69_; GString* _tmp82_; -#line 1008 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1076 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp67_ = self->priv->query; -#line 1008 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1076 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp68_ = tracker_sparql_query_get_no_cache (_tmp67_); -#line 1008 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1076 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp69_ = _tmp68_; -#line 1008 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1076 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp69_) { -#line 9589 "tracker-sparql-expression.c" +#line 10279 "tracker-sparql-expression.c" GString* _tmp70_; const gchar* _tmp71_; gchar* _tmp72_ = NULL; gchar* _tmp73_; -#line 1009 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp70_ = sql; -#line 1009 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp71_ = literal; -#line 1009 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp72_ = tracker_sparql_expression_escape_sql_string_literal (self, _tmp71_); -#line 1009 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp73_ = _tmp72_; -#line 1009 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp70_, _tmp73_); -#line 1009 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp73_); -#line 9606 "tracker-sparql-expression.c" +#line 10296 "tracker-sparql-expression.c" } else { TrackerSparqlLiteralBinding* _tmp74_; TrackerSparqlLiteralBinding* binding; @@ -9615,104 +10305,104 @@ TrackerSparqlLiteralBinding* _tmp79_; TrackerSparqlLiteralBinding* _tmp80_; GString* _tmp81_; -#line 1011 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1079 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp74_ = tracker_sparql_literal_binding_new (); -#line 1011 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1079 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" binding = _tmp74_; -#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp75_ = binding; -#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp76_ = literal; -#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp77_ = g_strdup (_tmp76_); -#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp75_->literal); -#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp75_->literal = _tmp77_; -#line 1013 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp78_ = self->priv->query; -#line 1013 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp79_ = binding; -#line 1013 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp80_ = _g_object_ref0 (_tmp79_); -#line 1013 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp78_->bindings = g_list_append (_tmp78_->bindings, _tmp80_); -#line 1014 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp81_ = sql; -#line 1014 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp81_, "?"); -#line 1008 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1076 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 9645 "tracker-sparql-expression.c" +#line 10335 "tracker-sparql-expression.c" } -#line 1016 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1084 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp82_ = sql; -#line 1016 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1084 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_append_collate (self, _tmp82_); -#line 1017 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1085 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_STRING; -#line 1017 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1085 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (literal); -#line 1017 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1085 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 9657 "tracker-sparql-expression.c" +#line 10347 "tracker-sparql-expression.c" } } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (literal); -#line 9662 "tracker-sparql-expression.c" +#line 10352 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_INTEGER: -#line 9666 "tracker-sparql-expression.c" +#line 10356 "tracker-sparql-expression.c" { TrackerSparqlQuery* _tmp83_; gboolean _tmp84_; gboolean _tmp85_; -#line 1020 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1088 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 1020 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1088 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1020 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1088 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1020 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1088 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1020 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1088 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9681 "tracker-sparql-expression.c" +#line 10371 "tracker-sparql-expression.c" } else { -#line 1020 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1088 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1020 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1088 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1020 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1088 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9689 "tracker-sparql-expression.c" +#line 10379 "tracker-sparql-expression.c" } } -#line 1022 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp83_ = self->priv->query; -#line 1022 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp84_ = tracker_sparql_query_get_no_cache (_tmp83_); -#line 1022 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp85_ = _tmp84_; -#line 1022 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp85_) { -#line 9700 "tracker-sparql-expression.c" +#line 10390 "tracker-sparql-expression.c" GString* _tmp86_; gchar* _tmp87_ = NULL; gchar* _tmp88_; -#line 1023 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp86_ = sql; -#line 1023 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp87_ = tracker_sparql_expression_get_last_string (self, 0); -#line 1023 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp88_ = _tmp87_; -#line 1023 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp86_, _tmp88_); -#line 1023 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp88_); -#line 9714 "tracker-sparql-expression.c" +#line 10404 "tracker-sparql-expression.c" } else { GString* _tmp89_; TrackerSparqlLiteralBinding* _tmp90_; @@ -9723,47 +10413,47 @@ TrackerSparqlQuery* _tmp94_; TrackerSparqlLiteralBinding* _tmp95_; TrackerSparqlLiteralBinding* _tmp96_; -#line 1025 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1093 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp89_ = sql; -#line 1025 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1093 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp89_, "?"); -#line 1027 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1095 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp90_ = tracker_sparql_literal_binding_new (); -#line 1027 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1095 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" binding = _tmp90_; -#line 1028 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1096 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp91_ = binding; -#line 1028 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1096 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp92_ = tracker_sparql_expression_get_last_string (self, 0); -#line 1028 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1096 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp91_->literal); -#line 1028 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1096 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp91_->literal = _tmp92_; -#line 1029 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp93_ = binding; -#line 1029 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" ((TrackerSparqlDataBinding*) _tmp93_)->data_type = TRACKER_PROPERTY_TYPE_INTEGER; -#line 1030 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1098 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp94_ = self->priv->query; -#line 1030 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1098 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp95_ = binding; -#line 1030 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1098 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp96_ = _g_object_ref0 (_tmp95_); -#line 1030 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1098 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp94_->bindings = g_list_append (_tmp94_->bindings, _tmp96_); -#line 1022 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (binding); -#line 9755 "tracker-sparql-expression.c" +#line 10445 "tracker-sparql-expression.c" } -#line 1033 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_INTEGER; -#line 1033 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 9761 "tracker-sparql-expression.c" +#line 10451 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_VAR: -#line 9765 "tracker-sparql-expression.c" +#line 10455 "tracker-sparql-expression.c" { gchar* _tmp97_ = NULL; gchar* _tmp98_; @@ -9782,76 +10472,76 @@ const gchar* _tmp109_; TrackerSparqlVariable* _tmp110_; TrackerSparqlVariableBinding* _tmp111_; -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9794 "tracker-sparql-expression.c" +#line 10484 "tracker-sparql-expression.c" } else { -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9802 "tracker-sparql-expression.c" +#line 10492 "tracker-sparql-expression.c" } } -#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1104 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp97_ = tracker_sparql_expression_get_last_string (self, 0); -#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1104 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp98_ = _tmp97_; -#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1104 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp99_ = string_substring (_tmp98_, (glong) 1, (glong) (-1)); -#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1104 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp100_ = _tmp99_; -#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1104 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp98_); -#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1104 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable_name = _tmp100_; -#line 1037 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp101_ = tracker_sparql_expression_get_context (self); -#line 1037 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp102_ = _tmp101_; -#line 1037 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp103_ = variable_name; -#line 1037 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp104_ = tracker_sparql_context_get_variable (_tmp102_, _tmp103_); -#line 1037 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp105_ = _g_object_ref0 (_tmp104_); -#line 1037 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" variable = _tmp105_; -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1106 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp106_ = sql; -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1106 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp107_ = variable; -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1106 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp108_ = tracker_sparql_variable_get_sql_expression (_tmp107_); -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1106 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp109_ = _tmp108_; -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1106 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp106_, _tmp109_); -#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1108 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp110_ = variable; -#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1108 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp111_ = _tmp110_->binding; -#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1108 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp111_ == NULL) { -#line 1041 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1109 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_UNKNOWN; -#line 1041 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1109 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 1041 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1109 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (variable_name); -#line 1041 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1109 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 9853 "tracker-sparql-expression.c" +#line 10543 "tracker-sparql-expression.c" } else { TrackerSparqlVariable* _tmp112_; TrackerSparqlVariableBinding* _tmp113_; @@ -9859,1107 +10549,1107 @@ TrackerSparqlVariable* _tmp116_; TrackerSparqlVariableBinding* _tmp117_; TrackerPropertyType _tmp118_; -#line 1043 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1111 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp112_ = variable; -#line 1043 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1111 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp113_ = _tmp112_->binding; -#line 1043 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1111 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp114_ = ((TrackerSparqlDataBinding*) _tmp113_)->data_type; -#line 1043 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1111 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp114_ == TRACKER_PROPERTY_TYPE_STRING) { -#line 9869 "tracker-sparql-expression.c" +#line 10559 "tracker-sparql-expression.c" GString* _tmp115_; -#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1112 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp115_ = sql; -#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1112 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_append_collate (self, _tmp115_); -#line 9875 "tracker-sparql-expression.c" +#line 10565 "tracker-sparql-expression.c" } -#line 1046 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp116_ = variable; -#line 1046 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp117_ = _tmp116_->binding; -#line 1046 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp118_ = ((TrackerSparqlDataBinding*) _tmp117_)->data_type; -#line 1046 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp118_; -#line 1046 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 1046 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (variable_name); -#line 1046 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 9891 "tracker-sparql-expression.c" +#line 10581 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_object_unref0 (variable); -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (variable_name); -#line 9897 "tracker-sparql-expression.c" +#line 10587 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_STR: -#line 9901 "tracker-sparql-expression.c" +#line 10591 "tracker-sparql-expression.c" { GString* _tmp119_; -#line 1049 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp119_ = sql; -#line 1049 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_str (self, _tmp119_, &_inner_error_); -#line 1049 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1049 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1049 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1049 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9916 "tracker-sparql-expression.c" +#line 10606 "tracker-sparql-expression.c" } else { -#line 1049 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1049 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1049 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9924 "tracker-sparql-expression.c" +#line 10614 "tracker-sparql-expression.c" } } -#line 1050 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1118 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_STRING; -#line 1050 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1118 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 9931 "tracker-sparql-expression.c" +#line 10621 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_LANG: -#line 9935 "tracker-sparql-expression.c" +#line 10625 "tracker-sparql-expression.c" { GString* _tmp120_; -#line 1052 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 1052 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1052 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1052 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1052 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9948 "tracker-sparql-expression.c" +#line 10638 "tracker-sparql-expression.c" } else { -#line 1052 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1052 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1052 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9956 "tracker-sparql-expression.c" +#line 10646 "tracker-sparql-expression.c" } } -#line 1053 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1121 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp120_ = sql; -#line 1053 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1121 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp120_, "''"); -#line 1054 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1122 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_STRING; -#line 1054 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1122 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 9967 "tracker-sparql-expression.c" +#line 10657 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_LANGMATCHES: -#line 9971 "tracker-sparql-expression.c" +#line 10661 "tracker-sparql-expression.c" { GString* _tmp121_; -#line 1056 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 1056 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1056 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1056 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1056 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9984 "tracker-sparql-expression.c" +#line 10674 "tracker-sparql-expression.c" } else { -#line 1056 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1056 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1056 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 9992 "tracker-sparql-expression.c" +#line 10682 "tracker-sparql-expression.c" } } -#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1125 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp121_ = sql; -#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1125 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp121_, "0"); -#line 1058 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1126 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 1058 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1126 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 10003 "tracker-sparql-expression.c" +#line 10693 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_DATATYPE: -#line 10007 "tracker-sparql-expression.c" +#line 10697 "tracker-sparql-expression.c" { GString* _tmp122_; -#line 1060 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp122_ = sql; -#line 1060 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_datatype (self, _tmp122_, &_inner_error_); -#line 1060 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1060 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1060 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1060 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10022 "tracker-sparql-expression.c" +#line 10712 "tracker-sparql-expression.c" } else { -#line 1060 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1060 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1060 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10030 "tracker-sparql-expression.c" +#line 10720 "tracker-sparql-expression.c" } } -#line 1061 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1129 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_RESOURCE; -#line 1061 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1129 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 10037 "tracker-sparql-expression.c" +#line 10727 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_BOUND: -#line 10041 "tracker-sparql-expression.c" +#line 10731 "tracker-sparql-expression.c" { GString* _tmp123_; -#line 1063 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp123_ = sql; -#line 1063 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_bound_call (self, _tmp123_, &_inner_error_); -#line 1063 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1063 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1063 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1063 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10056 "tracker-sparql-expression.c" +#line 10746 "tracker-sparql-expression.c" } else { -#line 1063 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1063 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1063 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10064 "tracker-sparql-expression.c" +#line 10754 "tracker-sparql-expression.c" } } -#line 1064 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1132 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 1064 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1132 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 10071 "tracker-sparql-expression.c" +#line 10761 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_COALESCE: -#line 10075 "tracker-sparql-expression.c" +#line 10765 "tracker-sparql-expression.c" { GString* _tmp124_; TrackerPropertyType _tmp125_ = 0; TrackerPropertyType _result_; -#line 1066 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 1066 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1066 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1066 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1066 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10090 "tracker-sparql-expression.c" +#line 10780 "tracker-sparql-expression.c" } else { -#line 1066 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1066 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1066 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10098 "tracker-sparql-expression.c" +#line 10788 "tracker-sparql-expression.c" } } -#line 1067 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 1067 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1067 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1067 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1067 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10111 "tracker-sparql-expression.c" +#line 10801 "tracker-sparql-expression.c" } else { -#line 1067 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1067 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1067 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10119 "tracker-sparql-expression.c" +#line 10809 "tracker-sparql-expression.c" } } -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp124_ = sql; -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp125_ = tracker_sparql_expression_translate_function (self, _tmp124_, TRACKER_SPARQL_EXPRESSION_TRACKER_NS "coalesce", &_inner_error_); -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _result_ = _tmp125_; -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10136 "tracker-sparql-expression.c" +#line 10826 "tracker-sparql-expression.c" } else { -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10144 "tracker-sparql-expression.c" +#line 10834 "tracker-sparql-expression.c" } } -#line 1069 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1137 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 1069 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1137 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1069 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1137 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1069 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1137 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1069 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1137 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10157 "tracker-sparql-expression.c" +#line 10847 "tracker-sparql-expression.c" } else { -#line 1069 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1137 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1069 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1137 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1069 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1137 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10165 "tracker-sparql-expression.c" +#line 10855 "tracker-sparql-expression.c" } } -#line 1070 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _result_; -#line 1070 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 10172 "tracker-sparql-expression.c" +#line 10862 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_IF: -#line 10176 "tracker-sparql-expression.c" +#line 10866 "tracker-sparql-expression.c" { GString* _tmp126_; TrackerPropertyType _tmp127_ = 0; TrackerPropertyType _tmp128_; -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp126_ = sql; -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp127_ = tracker_sparql_expression_translate_if_call (self, _tmp126_, &_inner_error_); -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp128_ = _tmp127_; -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10195 "tracker-sparql-expression.c" +#line 10885 "tracker-sparql-expression.c" } else { -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10203 "tracker-sparql-expression.c" +#line 10893 "tracker-sparql-expression.c" } } -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp128_; -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 10210 "tracker-sparql-expression.c" +#line 10900 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_SAMETERM: -#line 10214 "tracker-sparql-expression.c" +#line 10904 "tracker-sparql-expression.c" { GString* _tmp129_; GString* _tmp130_; GString* _tmp131_; GString* _tmp132_; GString* _tmp133_; -#line 1074 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 1074 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1074 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1074 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1074 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10231 "tracker-sparql-expression.c" +#line 10921 "tracker-sparql-expression.c" } else { -#line 1074 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1074 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1074 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10239 "tracker-sparql-expression.c" +#line 10929 "tracker-sparql-expression.c" } } -#line 1075 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 1075 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1075 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1075 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1075 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10252 "tracker-sparql-expression.c" +#line 10942 "tracker-sparql-expression.c" } else { -#line 1075 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1075 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1075 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10260 "tracker-sparql-expression.c" +#line 10950 "tracker-sparql-expression.c" } } -#line 1076 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp129_ = sql; -#line 1076 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp129_, "("); -#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp130_ = sql; -#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression (self, _tmp130_, &_inner_error_); -#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10279 "tracker-sparql-expression.c" +#line 10969 "tracker-sparql-expression.c" } else { -#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10287 "tracker-sparql-expression.c" +#line 10977 "tracker-sparql-expression.c" } } -#line 1078 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp131_ = sql; -#line 1078 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp131_, " = "); -#line 1079 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1147 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 1079 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1147 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1079 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1147 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1079 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1147 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1079 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1147 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10304 "tracker-sparql-expression.c" +#line 10994 "tracker-sparql-expression.c" } else { -#line 1079 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1147 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1079 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1147 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1079 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1147 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10312 "tracker-sparql-expression.c" +#line 11002 "tracker-sparql-expression.c" } } -#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp132_ = sql; -#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression (self, _tmp132_, &_inner_error_); -#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10327 "tracker-sparql-expression.c" +#line 11017 "tracker-sparql-expression.c" } else { -#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10335 "tracker-sparql-expression.c" +#line 11025 "tracker-sparql-expression.c" } } -#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp133_ = sql; -#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp133_, ")"); -#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10352 "tracker-sparql-expression.c" +#line 11042 "tracker-sparql-expression.c" } else { -#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10360 "tracker-sparql-expression.c" +#line 11050 "tracker-sparql-expression.c" } } -#line 1083 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 1083 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 10367 "tracker-sparql-expression.c" +#line 11057 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_ISIRI: -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_ISURI: -#line 10373 "tracker-sparql-expression.c" +#line 11063 "tracker-sparql-expression.c" { GString* _tmp134_; -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1154 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp134_ = sql; -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1154 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_isuri (self, _tmp134_, &_inner_error_); -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1154 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1154 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1154 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1154 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10388 "tracker-sparql-expression.c" +#line 11078 "tracker-sparql-expression.c" } else { -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1154 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1154 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1154 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10396 "tracker-sparql-expression.c" +#line 11086 "tracker-sparql-expression.c" } } -#line 1087 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1155 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 1087 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1155 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 10403 "tracker-sparql-expression.c" +#line 11093 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_ISBLANK: -#line 10407 "tracker-sparql-expression.c" +#line 11097 "tracker-sparql-expression.c" { GString* _tmp135_; -#line 1089 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 1089 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1089 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1089 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1089 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10420 "tracker-sparql-expression.c" +#line 11110 "tracker-sparql-expression.c" } else { -#line 1089 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1089 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1089 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10428 "tracker-sparql-expression.c" +#line 11118 "tracker-sparql-expression.c" } } -#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10441 "tracker-sparql-expression.c" +#line 11131 "tracker-sparql-expression.c" } else { -#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10449 "tracker-sparql-expression.c" +#line 11139 "tracker-sparql-expression.c" } } -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1159 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1159 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1159 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1159 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1159 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10462 "tracker-sparql-expression.c" +#line 11152 "tracker-sparql-expression.c" } else { -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1159 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1159 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1159 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10470 "tracker-sparql-expression.c" +#line 11160 "tracker-sparql-expression.c" } } -#line 1093 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1161 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp135_ = sql; -#line 1093 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1161 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp135_, "0"); -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10487 "tracker-sparql-expression.c" +#line 11177 "tracker-sparql-expression.c" } else { -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10495 "tracker-sparql-expression.c" +#line 11185 "tracker-sparql-expression.c" } } -#line 1095 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1163 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 1095 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1163 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 10502 "tracker-sparql-expression.c" +#line 11192 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_ISLITERAL: -#line 10506 "tracker-sparql-expression.c" +#line 11196 "tracker-sparql-expression.c" { -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1165 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1165 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1165 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1165 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1165 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10518 "tracker-sparql-expression.c" +#line 11208 "tracker-sparql-expression.c" } else { -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1165 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1165 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1165 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10526 "tracker-sparql-expression.c" +#line 11216 "tracker-sparql-expression.c" } } -#line 1098 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 1098 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 10533 "tracker-sparql-expression.c" +#line 11223 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_REGEX: -#line 10537 "tracker-sparql-expression.c" +#line 11227 "tracker-sparql-expression.c" { GString* _tmp136_; TrackerSparqlQuery* _tmp137_; -#line 1100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp136_ = sql; -#line 1100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_regex (self, _tmp136_, &_inner_error_); -#line 1100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10553 "tracker-sparql-expression.c" +#line 11243 "tracker-sparql-expression.c" } else { -#line 1100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10561 "tracker-sparql-expression.c" +#line 11251 "tracker-sparql-expression.c" } } -#line 1101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp137_ = self->priv->query; -#line 1101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_query_set_no_cache (_tmp137_, TRUE); -#line 1102 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1170 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 1102 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1170 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 10572 "tracker-sparql-expression.c" +#line 11262 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_EXISTS: -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_NOT: -#line 10578 "tracker-sparql-expression.c" +#line 11268 "tracker-sparql-expression.c" { GString* _tmp138_; -#line 1105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp138_ = sql; -#line 1105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_exists (self, _tmp138_, &_inner_error_); -#line 1105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10593 "tracker-sparql-expression.c" +#line 11283 "tracker-sparql-expression.c" } else { -#line 1105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10601 "tracker-sparql-expression.c" +#line 11291 "tracker-sparql-expression.c" } } -#line 1106 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1174 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 1106 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1174 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 10608 "tracker-sparql-expression.c" +#line 11298 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_COUNT: -#line 10612 "tracker-sparql-expression.c" +#line 11302 "tracker-sparql-expression.c" { GString* _tmp139_; GString* _tmp140_; GString* _tmp141_; -#line 1108 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 1108 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1108 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1108 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1108 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10627 "tracker-sparql-expression.c" +#line 11317 "tracker-sparql-expression.c" } else { -#line 1108 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1108 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1108 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10635 "tracker-sparql-expression.c" +#line 11325 "tracker-sparql-expression.c" } } -#line 1109 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp139_ = sql; -#line 1109 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp139_, "COUNT("); -#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp140_ = sql; -#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_aggregate_expression (self, _tmp140_, &_inner_error_); -#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10654 "tracker-sparql-expression.c" +#line 11344 "tracker-sparql-expression.c" } else { -#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10662 "tracker-sparql-expression.c" +#line 11352 "tracker-sparql-expression.c" } } -#line 1111 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp141_ = sql; -#line 1111 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp141_, ")"); -#line 1112 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_INTEGER; -#line 1112 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 10673 "tracker-sparql-expression.c" +#line 11363 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_SUM: -#line 10677 "tracker-sparql-expression.c" +#line 11367 "tracker-sparql-expression.c" { GString* _tmp142_; GString* _tmp143_; TrackerPropertyType _tmp144_ = 0; TrackerPropertyType _tmp145_; GString* _tmp146_; -#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1182 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1182 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1182 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1182 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1182 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10694 "tracker-sparql-expression.c" +#line 11384 "tracker-sparql-expression.c" } else { -#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1182 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1182 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1182 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10702 "tracker-sparql-expression.c" +#line 11392 "tracker-sparql-expression.c" } } -#line 1115 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1183 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp142_ = sql; -#line 1115 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1183 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp142_, "SUM("); -#line 1116 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp143_ = sql; -#line 1116 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp144_ = tracker_sparql_expression_translate_aggregate_expression (self, _tmp143_, &_inner_error_); -#line 1116 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp145_ = _tmp144_; -#line 1116 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1116 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1116 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1116 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10723 "tracker-sparql-expression.c" +#line 11413 "tracker-sparql-expression.c" } else { -#line 1116 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1116 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1116 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10731 "tracker-sparql-expression.c" +#line 11421 "tracker-sparql-expression.c" } } -#line 1116 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type = _tmp145_; -#line 1117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp146_ = sql; -#line 1117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp146_, ")"); -#line 1118 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = type; -#line 1118 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 10744 "tracker-sparql-expression.c" +#line 11434 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_AVG: -#line 10748 "tracker-sparql-expression.c" +#line 11438 "tracker-sparql-expression.c" { GString* _tmp147_; GString* _tmp148_; TrackerPropertyType _tmp149_ = 0; TrackerPropertyType _tmp150_; GString* _tmp151_; -#line 1120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 1120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10765 "tracker-sparql-expression.c" +#line 11455 "tracker-sparql-expression.c" } else { -#line 1120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10773 "tracker-sparql-expression.c" +#line 11463 "tracker-sparql-expression.c" } } -#line 1121 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1189 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp147_ = sql; -#line 1121 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1189 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp147_, "AVG("); -#line 1122 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1190 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp148_ = sql; -#line 1122 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1190 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp149_ = tracker_sparql_expression_translate_aggregate_expression (self, _tmp148_, &_inner_error_); -#line 1122 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1190 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp150_ = _tmp149_; -#line 1122 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1190 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1122 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1190 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1122 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1190 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1122 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1190 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10794 "tracker-sparql-expression.c" +#line 11484 "tracker-sparql-expression.c" } else { -#line 1122 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1190 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1122 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1190 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1122 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1190 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10802 "tracker-sparql-expression.c" +#line 11492 "tracker-sparql-expression.c" } } -#line 1122 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1190 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type = _tmp150_; -#line 1123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1191 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp151_ = sql; -#line 1123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1191 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp151_, ")"); -#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = type; -#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 10815 "tracker-sparql-expression.c" +#line 11505 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_MIN: -#line 10819 "tracker-sparql-expression.c" +#line 11509 "tracker-sparql-expression.c" { GString* _tmp152_; GString* _tmp153_; TrackerPropertyType _tmp154_ = 0; TrackerPropertyType _tmp155_; GString* _tmp156_; -#line 1126 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 1126 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1126 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1126 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1126 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10836 "tracker-sparql-expression.c" +#line 11526 "tracker-sparql-expression.c" } else { -#line 1126 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1126 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1126 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10844 "tracker-sparql-expression.c" +#line 11534 "tracker-sparql-expression.c" } } -#line 1127 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp152_ = sql; -#line 1127 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp152_, "MIN("); -#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp153_ = sql; -#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp154_ = tracker_sparql_expression_translate_aggregate_expression (self, _tmp153_, &_inner_error_); -#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp155_ = _tmp154_; -#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10865 "tracker-sparql-expression.c" +#line 11555 "tracker-sparql-expression.c" } else { -#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10873 "tracker-sparql-expression.c" +#line 11563 "tracker-sparql-expression.c" } } -#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type = _tmp155_; -#line 1129 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp156_ = sql; -#line 1129 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp156_, ")"); -#line 1130 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1198 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = type; -#line 1130 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1198 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 10886 "tracker-sparql-expression.c" +#line 11576 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_MAX: -#line 10890 "tracker-sparql-expression.c" +#line 11580 "tracker-sparql-expression.c" { GString* _tmp157_; GString* _tmp158_; TrackerPropertyType _tmp159_ = 0; TrackerPropertyType _tmp160_; GString* _tmp161_; -#line 1132 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 1132 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1132 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1132 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1132 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10907 "tracker-sparql-expression.c" +#line 11597 "tracker-sparql-expression.c" } else { -#line 1132 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1132 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1132 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10915 "tracker-sparql-expression.c" +#line 11605 "tracker-sparql-expression.c" } } -#line 1133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp157_ = sql; -#line 1133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp157_, "MAX("); -#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp158_ = sql; -#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp159_ = tracker_sparql_expression_translate_aggregate_expression (self, _tmp158_, &_inner_error_); -#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp160_ = _tmp159_; -#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10936 "tracker-sparql-expression.c" +#line 11626 "tracker-sparql-expression.c" } else { -#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10944 "tracker-sparql-expression.c" +#line 11634 "tracker-sparql-expression.c" } } -#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" type = _tmp160_; -#line 1135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp161_ = sql; -#line 1135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp161_, ")"); -#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = type; -#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 10957 "tracker-sparql-expression.c" +#line 11647 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_GROUP_CONCAT: -#line 10961 "tracker-sparql-expression.c" +#line 11651 "tracker-sparql-expression.c" { GString* _tmp162_; GString* _tmp163_; @@ -10971,171 +11661,171 @@ gchar* _tmp169_ = NULL; gchar* _tmp170_; GString* _tmp171_; -#line 1138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 1138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10983 "tracker-sparql-expression.c" +#line 11673 "tracker-sparql-expression.c" } else { -#line 1138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 10991 "tracker-sparql-expression.c" +#line 11681 "tracker-sparql-expression.c" } } -#line 1139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1207 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp162_ = sql; -#line 1139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1207 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp162_, "GROUP_CONCAT("); -#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11008 "tracker-sparql-expression.c" +#line 11698 "tracker-sparql-expression.c" } else { -#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11016 "tracker-sparql-expression.c" +#line 11706 "tracker-sparql-expression.c" } } -#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp163_ = sql; -#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression_as_string (self, _tmp163_, &_inner_error_); -#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11031 "tracker-sparql-expression.c" +#line 11721 "tracker-sparql-expression.c" } else { -#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11039 "tracker-sparql-expression.c" +#line 11729 "tracker-sparql-expression.c" } } -#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp164_ = sql; -#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp164_, ", "); -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11056 "tracker-sparql-expression.c" +#line 11746 "tracker-sparql-expression.c" } else { -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11064 "tracker-sparql-expression.c" +#line 11754 "tracker-sparql-expression.c" } } -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp165_ = tracker_sparql_expression_parse_string_literal (self, NULL, &_inner_error_); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp166_ = _tmp165_; -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11079 "tracker-sparql-expression.c" +#line 11769 "tracker-sparql-expression.c" } else { -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11087 "tracker-sparql-expression.c" +#line 11777 "tracker-sparql-expression.c" } } -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp167_ = sql; -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp168_ = _tmp166_; -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp169_ = tracker_sparql_expression_escape_sql_string_literal (self, _tmp168_); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp170_ = _tmp169_; -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp167_, _tmp170_); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp170_); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp168_); -#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1213 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp171_ = sql; -#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1213 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp171_, ")"); -#line 1146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 1146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11118 "tracker-sparql-expression.c" +#line 11808 "tracker-sparql-expression.c" } else { -#line 1146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11126 "tracker-sparql-expression.c" +#line 11816 "tracker-sparql-expression.c" } } -#line 1147 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_STRING; -#line 1147 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 11133 "tracker-sparql-expression.c" +#line 11823 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_PN_PREFIX: -#line 11137 "tracker-sparql-expression.c" +#line 11827 "tracker-sparql-expression.c" { gchar* _tmp172_ = NULL; gchar* ns; @@ -11152,149 +11842,149 @@ const gchar* _tmp182_; TrackerPropertyType _tmp183_ = 0; TrackerPropertyType _tmp184_; -#line 1149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1217 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 1149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1217 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1217 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1217 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1217 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11164 "tracker-sparql-expression.c" +#line 11854 "tracker-sparql-expression.c" } else { -#line 1149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1217 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1217 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1217 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11172 "tracker-sparql-expression.c" +#line 11862 "tracker-sparql-expression.c" } } -#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp172_ = tracker_sparql_expression_get_last_string (self, 0); -#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" ns = _tmp172_; -#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COLON, &_inner_error_); -#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (ns); -#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11191 "tracker-sparql-expression.c" +#line 11881 "tracker-sparql-expression.c" } else { -#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (ns); -#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11201 "tracker-sparql-expression.c" +#line 11891 "tracker-sparql-expression.c" } } -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp173_ = self->priv->query; -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp174_ = ns; -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp175_ = tracker_sparql_expression_get_last_string (self, 0); -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp176_ = _tmp175_; -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp177_ = string_substring (_tmp176_, (glong) 1, (glong) (-1)); -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp178_ = _tmp177_; -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp179_ = tracker_sparql_query_resolve_prefixed_name (_tmp173_, _tmp174_, _tmp178_, &_inner_error_); -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp180_ = _tmp179_; -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp178_); -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp176_); -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" uri = _tmp180_; -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (ns); -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11236 "tracker-sparql-expression.c" +#line 11926 "tracker-sparql-expression.c" } else { -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (ns); -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11246 "tracker-sparql-expression.c" +#line 11936 "tracker-sparql-expression.c" } } -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp181_ = sql; -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp182_ = uri; -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp183_ = tracker_sparql_expression_translate_uri_expression (self, _tmp181_, _tmp182_, &_inner_error_); -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp184_ = _tmp183_; -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (uri); -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (ns); -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11269 "tracker-sparql-expression.c" +#line 11959 "tracker-sparql-expression.c" } else { -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (uri); -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (ns); -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11281 "tracker-sparql-expression.c" +#line 11971 "tracker-sparql-expression.c" } } -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp184_; -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (uri); -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (ns); -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 11292 "tracker-sparql-expression.c" +#line 11982 "tracker-sparql-expression.c" } -#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_COLON: -#line 11296 "tracker-sparql-expression.c" +#line 11986 "tracker-sparql-expression.c" { TrackerSparqlQuery* _tmp185_; gchar* _tmp186_ = NULL; @@ -11308,127 +11998,127 @@ const gchar* _tmp193_; TrackerPropertyType _tmp194_ = 0; TrackerPropertyType _tmp195_; -#line 1155 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_next (self, &_inner_error_); -#line 1155 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1155 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1155 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1155 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11320 "tracker-sparql-expression.c" +#line 12010 "tracker-sparql-expression.c" } else { -#line 1155 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1155 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1155 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11328 "tracker-sparql-expression.c" +#line 12018 "tracker-sparql-expression.c" } } -#line 1156 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp185_ = self->priv->query; -#line 1156 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp186_ = tracker_sparql_expression_get_last_string (self, 0); -#line 1156 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp187_ = _tmp186_; -#line 1156 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp188_ = string_substring (_tmp187_, (glong) 1, (glong) (-1)); -#line 1156 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp189_ = _tmp188_; -#line 1156 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp190_ = tracker_sparql_query_resolve_prefixed_name (_tmp185_, "", _tmp189_, &_inner_error_); -#line 1156 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp191_ = _tmp190_; -#line 1156 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp189_); -#line 1156 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (_tmp187_); -#line 1156 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" uri = _tmp191_; -#line 1156 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1156 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1156 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1156 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11359 "tracker-sparql-expression.c" +#line 12049 "tracker-sparql-expression.c" } else { -#line 1156 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1156 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1156 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11367 "tracker-sparql-expression.c" +#line 12057 "tracker-sparql-expression.c" } } -#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp192_ = sql; -#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp193_ = uri; -#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp194_ = tracker_sparql_expression_translate_uri_expression (self, _tmp192_, _tmp193_, &_inner_error_); -#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp195_ = _tmp194_; -#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (uri); -#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11388 "tracker-sparql-expression.c" +#line 12078 "tracker-sparql-expression.c" } else { -#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (uri); -#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11398 "tracker-sparql-expression.c" +#line 12088 "tracker-sparql-expression.c" } } -#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp195_; -#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _g_free0 (uri); -#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 11407 "tracker-sparql-expression.c" +#line 12097 "tracker-sparql-expression.c" } default: { GError* _tmp196_ = NULL; -#line 1159 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp196_ = tracker_sparql_expression_get_error (self, "expected primary expression"); -#line 1159 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp196_; -#line 1159 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1159 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1159 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11422 "tracker-sparql-expression.c" +#line 12112 "tracker-sparql-expression.c" } else { -#line 1159 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1159 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1159 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11430 "tracker-sparql-expression.c" +#line 12120 "tracker-sparql-expression.c" } } } @@ -11443,274 +12133,274 @@ TrackerPropertyType _tmp20_ = 0; TrackerPropertyType _tmp21_; GError * _inner_error_ = NULL; -#line 1163 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1231 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 1163 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1231 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 1164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OP_NEG, &_inner_error_); -#line 1164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = _tmp0_; -#line 1164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11461 "tracker-sparql-expression.c" +#line 12151 "tracker-sparql-expression.c" } else { -#line 1164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11469 "tracker-sparql-expression.c" +#line 12159 "tracker-sparql-expression.c" } } -#line 1164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp1_) { -#line 11474 "tracker-sparql-expression.c" +#line 12164 "tracker-sparql-expression.c" GString* _tmp2_; GString* _tmp3_; TrackerPropertyType _tmp4_ = 0; TrackerPropertyType optype; GString* _tmp5_; TrackerPropertyType _tmp6_; -#line 1165 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = sql; -#line 1165 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp2_, "NOT ("); -#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = sql; -#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = tracker_sparql_expression_translate_primary_expression (self, _tmp3_, &_inner_error_); -#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" optype = _tmp4_; -#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11499 "tracker-sparql-expression.c" +#line 12189 "tracker-sparql-expression.c" } else { -#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11507 "tracker-sparql-expression.c" +#line 12197 "tracker-sparql-expression.c" } } -#line 1167 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = sql; -#line 1167 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp5_, ")"); -#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1236 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = optype; -#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1236 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp6_ != TRACKER_PROPERTY_TYPE_BOOLEAN) { -#line 11518 "tracker-sparql-expression.c" +#line 12208 "tracker-sparql-expression.c" GError* _tmp7_ = NULL; -#line 1169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = tracker_sparql_expression_get_error (self, "expected boolean expression"); -#line 1169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp7_; -#line 1169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11530 "tracker-sparql-expression.c" +#line 12220 "tracker-sparql-expression.c" } else { -#line 1169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11538 "tracker-sparql-expression.c" +#line 12228 "tracker-sparql-expression.c" } } -#line 1171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1239 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 1171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1239 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 11545 "tracker-sparql-expression.c" +#line 12235 "tracker-sparql-expression.c" } else { gboolean _tmp8_ = FALSE; gboolean _tmp9_; -#line 1172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_PLUS, &_inner_error_); -#line 1172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = _tmp8_; -#line 1172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11561 "tracker-sparql-expression.c" +#line 12251 "tracker-sparql-expression.c" } else { -#line 1172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11569 "tracker-sparql-expression.c" +#line 12259 "tracker-sparql-expression.c" } } -#line 1172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp9_) { -#line 11574 "tracker-sparql-expression.c" +#line 12264 "tracker-sparql-expression.c" GString* _tmp10_; TrackerPropertyType _tmp11_ = 0; TrackerPropertyType _tmp12_; -#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = sql; -#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = tracker_sparql_expression_translate_primary_expression (self, _tmp10_, &_inner_error_); -#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = _tmp11_; -#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11592 "tracker-sparql-expression.c" +#line 12282 "tracker-sparql-expression.c" } else { -#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11600 "tracker-sparql-expression.c" +#line 12290 "tracker-sparql-expression.c" } } -#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp12_; -#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 11607 "tracker-sparql-expression.c" +#line 12297 "tracker-sparql-expression.c" } else { gboolean _tmp13_ = FALSE; gboolean _tmp14_; -#line 1174 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_MINUS, &_inner_error_); -#line 1174 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp14_ = _tmp13_; -#line 1174 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1174 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1174 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1174 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11623 "tracker-sparql-expression.c" +#line 12313 "tracker-sparql-expression.c" } else { -#line 1174 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1174 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1174 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11631 "tracker-sparql-expression.c" +#line 12321 "tracker-sparql-expression.c" } } -#line 1174 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp14_) { -#line 11636 "tracker-sparql-expression.c" +#line 12326 "tracker-sparql-expression.c" GString* _tmp15_; GString* _tmp16_; TrackerPropertyType _tmp17_ = 0; TrackerPropertyType optype; GString* _tmp18_; -#line 1175 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_ = sql; -#line 1175 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp15_, "-("); -#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp16_ = sql; -#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp17_ = tracker_sparql_expression_translate_primary_expression (self, _tmp16_, &_inner_error_); -#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" optype = _tmp17_; -#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11660 "tracker-sparql-expression.c" +#line 12350 "tracker-sparql-expression.c" } else { -#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11668 "tracker-sparql-expression.c" +#line 12358 "tracker-sparql-expression.c" } } -#line 1177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1245 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp18_ = sql; -#line 1177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1245 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp18_, ")"); -#line 1178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = optype; -#line 1178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 11679 "tracker-sparql-expression.c" +#line 12369 "tracker-sparql-expression.c" } } } -#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp19_ = sql; -#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp20_ = tracker_sparql_expression_translate_primary_expression (self, _tmp19_, &_inner_error_); -#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp21_ = _tmp20_; -#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11697 "tracker-sparql-expression.c" +#line 12387 "tracker-sparql-expression.c" } else { -#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11705 "tracker-sparql-expression.c" +#line 12395 "tracker-sparql-expression.c" } } -#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp21_; -#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 11712 "tracker-sparql-expression.c" +#line 12402 "tracker-sparql-expression.c" } @@ -11723,72 +12413,72 @@ TrackerPropertyType _tmp3_ = 0; TrackerPropertyType optype; GError * _inner_error_ = NULL; -#line 1183 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 1183 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = sql; -#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = _tmp0_->len; -#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" begin = (glong) _tmp1_; -#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = sql; -#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = tracker_sparql_expression_translate_unary_expression (self, _tmp2_, &_inner_error_); -#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" optype = _tmp3_; -#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11749 "tracker-sparql-expression.c" +#line 12439 "tracker-sparql-expression.c" } else { -#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11757 "tracker-sparql-expression.c" +#line 12447 "tracker-sparql-expression.c" } } -#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" while (TRUE) { -#line 11762 "tracker-sparql-expression.c" +#line 12452 "tracker-sparql-expression.c" gboolean _tmp4_ = FALSE; gboolean _tmp5_; -#line 1187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_STAR, &_inner_error_); -#line 1187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = _tmp4_; -#line 1187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11777 "tracker-sparql-expression.c" +#line 12467 "tracker-sparql-expression.c" } else { -#line 1187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11785 "tracker-sparql-expression.c" +#line 12475 "tracker-sparql-expression.c" } } -#line 1187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp5_) { -#line 11790 "tracker-sparql-expression.c" +#line 12480 "tracker-sparql-expression.c" TrackerPropertyType _tmp6_; gboolean _tmp7_ = FALSE; GString* _tmp9_; @@ -11799,131 +12489,131 @@ TrackerPropertyType _tmp14_; gboolean _tmp15_ = FALSE; GString* _tmp17_; -#line 1188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = optype; -#line 1188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = tracker_sparql_expression_maybe_numeric (self, _tmp6_); -#line 1188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (!_tmp7_) { -#line 11807 "tracker-sparql-expression.c" +#line 12497 "tracker-sparql-expression.c" GError* _tmp8_ = NULL; -#line 1189 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = tracker_sparql_expression_get_error (self, "expected numeric operand"); -#line 1189 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp8_; -#line 1189 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1189 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1189 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11819 "tracker-sparql-expression.c" +#line 12509 "tracker-sparql-expression.c" } else { -#line 1189 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1189 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1189 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11827 "tracker-sparql-expression.c" +#line 12517 "tracker-sparql-expression.c" } } -#line 1191 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = sql; -#line 1191 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = begin; -#line 1191 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_insert (_tmp9_, (gssize) _tmp10_, "("); -#line 1192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = sql; -#line 1192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp11_, " * "); -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = sql; -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_ = tracker_sparql_expression_translate_unary_expression (self, _tmp12_, &_inner_error_); -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp14_ = _tmp13_; -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11854 "tracker-sparql-expression.c" +#line 12544 "tracker-sparql-expression.c" } else { -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11862 "tracker-sparql-expression.c" +#line 12552 "tracker-sparql-expression.c" } } -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_ = tracker_sparql_expression_maybe_numeric (self, _tmp14_); -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (!_tmp15_) { -#line 11869 "tracker-sparql-expression.c" +#line 12559 "tracker-sparql-expression.c" GError* _tmp16_ = NULL; -#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp16_ = tracker_sparql_expression_get_error (self, "expected numeric operand"); -#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp16_; -#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11881 "tracker-sparql-expression.c" +#line 12571 "tracker-sparql-expression.c" } else { -#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11889 "tracker-sparql-expression.c" +#line 12579 "tracker-sparql-expression.c" } } -#line 1196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp17_ = sql; -#line 1196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp17_, ")"); -#line 11896 "tracker-sparql-expression.c" +#line 12586 "tracker-sparql-expression.c" } else { gboolean _tmp18_ = FALSE; gboolean _tmp19_; -#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1265 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp18_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_DIV, &_inner_error_); -#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1265 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp19_ = _tmp18_; -#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1265 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1265 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1265 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1265 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11912 "tracker-sparql-expression.c" +#line 12602 "tracker-sparql-expression.c" } else { -#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1265 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1265 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1265 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11920 "tracker-sparql-expression.c" +#line 12610 "tracker-sparql-expression.c" } } -#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1265 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp19_) { -#line 11925 "tracker-sparql-expression.c" +#line 12615 "tracker-sparql-expression.c" TrackerPropertyType _tmp20_; gboolean _tmp21_ = FALSE; GString* _tmp23_; @@ -11934,114 +12624,114 @@ TrackerPropertyType _tmp28_; gboolean _tmp29_ = FALSE; GString* _tmp31_; -#line 1198 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp20_ = optype; -#line 1198 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp21_ = tracker_sparql_expression_maybe_numeric (self, _tmp20_); -#line 1198 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (!_tmp21_) { -#line 11942 "tracker-sparql-expression.c" +#line 12632 "tracker-sparql-expression.c" GError* _tmp22_ = NULL; -#line 1199 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp22_ = tracker_sparql_expression_get_error (self, "expected numeric operand"); -#line 1199 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp22_; -#line 1199 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1199 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1199 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11954 "tracker-sparql-expression.c" +#line 12644 "tracker-sparql-expression.c" } else { -#line 1199 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1199 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1199 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11962 "tracker-sparql-expression.c" +#line 12652 "tracker-sparql-expression.c" } } -#line 1201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp23_ = sql; -#line 1201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp24_ = begin; -#line 1201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_insert (_tmp23_, (gssize) _tmp24_, "("); -#line 1202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1270 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp25_ = sql; -#line 1202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1270 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp25_, " / "); -#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp26_ = sql; -#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp27_ = tracker_sparql_expression_translate_unary_expression (self, _tmp26_, &_inner_error_); -#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp28_ = _tmp27_; -#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11989 "tracker-sparql-expression.c" +#line 12679 "tracker-sparql-expression.c" } else { -#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 11997 "tracker-sparql-expression.c" +#line 12687 "tracker-sparql-expression.c" } } -#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp29_ = tracker_sparql_expression_maybe_numeric (self, _tmp28_); -#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (!_tmp29_) { -#line 12004 "tracker-sparql-expression.c" +#line 12694 "tracker-sparql-expression.c" GError* _tmp30_ = NULL; -#line 1204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp30_ = tracker_sparql_expression_get_error (self, "expected numeric operand"); -#line 1204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp30_; -#line 1204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12016 "tracker-sparql-expression.c" +#line 12706 "tracker-sparql-expression.c" } else { -#line 1204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12024 "tracker-sparql-expression.c" +#line 12714 "tracker-sparql-expression.c" } } -#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp31_ = sql; -#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp31_, ")"); -#line 12031 "tracker-sparql-expression.c" +#line 12721 "tracker-sparql-expression.c" } else { -#line 1208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 12035 "tracker-sparql-expression.c" +#line 12725 "tracker-sparql-expression.c" } } } -#line 1211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1279 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = optype; -#line 1211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1279 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 12043 "tracker-sparql-expression.c" +#line 12733 "tracker-sparql-expression.c" } @@ -12054,72 +12744,72 @@ TrackerPropertyType _tmp3_ = 0; TrackerPropertyType optype; GError * _inner_error_ = NULL; -#line 1214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1282 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 1214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1282 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 1215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = sql; -#line 1215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = _tmp0_->len; -#line 1215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" begin = (glong) _tmp1_; -#line 1216 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = sql; -#line 1216 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = tracker_sparql_expression_translate_multiplicative_expression (self, _tmp2_, &_inner_error_); -#line 1216 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" optype = _tmp3_; -#line 1216 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1216 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1216 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1216 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12080 "tracker-sparql-expression.c" +#line 12770 "tracker-sparql-expression.c" } else { -#line 1216 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1216 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1216 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12088 "tracker-sparql-expression.c" +#line 12778 "tracker-sparql-expression.c" } } -#line 1217 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" while (TRUE) { -#line 12093 "tracker-sparql-expression.c" +#line 12783 "tracker-sparql-expression.c" gboolean _tmp4_ = FALSE; gboolean _tmp5_; -#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_PLUS, &_inner_error_); -#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = _tmp4_; -#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12108 "tracker-sparql-expression.c" +#line 12798 "tracker-sparql-expression.c" } else { -#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12116 "tracker-sparql-expression.c" +#line 12806 "tracker-sparql-expression.c" } } -#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp5_) { -#line 12121 "tracker-sparql-expression.c" +#line 12811 "tracker-sparql-expression.c" TrackerPropertyType _tmp6_; gboolean _tmp7_ = FALSE; GString* _tmp9_; @@ -12130,131 +12820,131 @@ TrackerPropertyType _tmp14_; gboolean _tmp15_ = FALSE; GString* _tmp17_; -#line 1219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1287 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = optype; -#line 1219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1287 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = tracker_sparql_expression_maybe_numeric (self, _tmp6_); -#line 1219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1287 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (!_tmp7_) { -#line 12138 "tracker-sparql-expression.c" +#line 12828 "tracker-sparql-expression.c" GError* _tmp8_ = NULL; -#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = tracker_sparql_expression_get_error (self, "expected numeric operand"); -#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp8_; -#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12150 "tracker-sparql-expression.c" +#line 12840 "tracker-sparql-expression.c" } else { -#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12158 "tracker-sparql-expression.c" +#line 12848 "tracker-sparql-expression.c" } } -#line 1222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = sql; -#line 1222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = begin; -#line 1222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_insert (_tmp9_, (gssize) _tmp10_, "("); -#line 1223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1291 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = sql; -#line 1223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1291 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp11_, " + "); -#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = sql; -#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_ = tracker_sparql_expression_translate_multiplicative_expression (self, _tmp12_, &_inner_error_); -#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp14_ = _tmp13_; -#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12185 "tracker-sparql-expression.c" +#line 12875 "tracker-sparql-expression.c" } else { -#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12193 "tracker-sparql-expression.c" +#line 12883 "tracker-sparql-expression.c" } } -#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_ = tracker_sparql_expression_maybe_numeric (self, _tmp14_); -#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (!_tmp15_) { -#line 12200 "tracker-sparql-expression.c" +#line 12890 "tracker-sparql-expression.c" GError* _tmp16_ = NULL; -#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp16_ = tracker_sparql_expression_get_error (self, "expected numeric operand"); -#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp16_; -#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12212 "tracker-sparql-expression.c" +#line 12902 "tracker-sparql-expression.c" } else { -#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12220 "tracker-sparql-expression.c" +#line 12910 "tracker-sparql-expression.c" } } -#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp17_ = sql; -#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp17_, ")"); -#line 12227 "tracker-sparql-expression.c" +#line 12917 "tracker-sparql-expression.c" } else { gboolean _tmp18_ = FALSE; gboolean _tmp19_; -#line 1228 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp18_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_MINUS, &_inner_error_); -#line 1228 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp19_ = _tmp18_; -#line 1228 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1228 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1228 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1228 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12243 "tracker-sparql-expression.c" +#line 12933 "tracker-sparql-expression.c" } else { -#line 1228 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1228 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1228 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12251 "tracker-sparql-expression.c" +#line 12941 "tracker-sparql-expression.c" } } -#line 1228 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp19_) { -#line 12256 "tracker-sparql-expression.c" +#line 12946 "tracker-sparql-expression.c" TrackerPropertyType _tmp20_; gboolean _tmp21_ = FALSE; GString* _tmp23_; @@ -12265,114 +12955,114 @@ TrackerPropertyType _tmp28_; gboolean _tmp29_ = FALSE; GString* _tmp31_; -#line 1229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp20_ = optype; -#line 1229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp21_ = tracker_sparql_expression_maybe_numeric (self, _tmp20_); -#line 1229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (!_tmp21_) { -#line 12273 "tracker-sparql-expression.c" +#line 12963 "tracker-sparql-expression.c" GError* _tmp22_ = NULL; -#line 1230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp22_ = tracker_sparql_expression_get_error (self, "expected numeric operand"); -#line 1230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp22_; -#line 1230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12285 "tracker-sparql-expression.c" +#line 12975 "tracker-sparql-expression.c" } else { -#line 1230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12293 "tracker-sparql-expression.c" +#line 12983 "tracker-sparql-expression.c" } } -#line 1232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp23_ = sql; -#line 1232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp24_ = begin; -#line 1232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_insert (_tmp23_, (gssize) _tmp24_, "("); -#line 1233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp25_ = sql; -#line 1233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp25_, " - "); -#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp26_ = sql; -#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp27_ = tracker_sparql_expression_translate_multiplicative_expression (self, _tmp26_, &_inner_error_); -#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp28_ = _tmp27_; -#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12320 "tracker-sparql-expression.c" +#line 13010 "tracker-sparql-expression.c" } else { -#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12328 "tracker-sparql-expression.c" +#line 13018 "tracker-sparql-expression.c" } } -#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp29_ = tracker_sparql_expression_maybe_numeric (self, _tmp28_); -#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (!_tmp29_) { -#line 12335 "tracker-sparql-expression.c" +#line 13025 "tracker-sparql-expression.c" GError* _tmp30_ = NULL; -#line 1235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp30_ = tracker_sparql_expression_get_error (self, "expected numeric operand"); -#line 1235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp30_; -#line 1235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12347 "tracker-sparql-expression.c" +#line 13037 "tracker-sparql-expression.c" } else { -#line 1235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12355 "tracker-sparql-expression.c" +#line 13045 "tracker-sparql-expression.c" } } -#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp31_ = sql; -#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp31_, ")"); -#line 12362 "tracker-sparql-expression.c" +#line 13052 "tracker-sparql-expression.c" } else { -#line 1239 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 12366 "tracker-sparql-expression.c" +#line 13056 "tracker-sparql-expression.c" } } } -#line 1242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = optype; -#line 1242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 12374 "tracker-sparql-expression.c" +#line 13064 "tracker-sparql-expression.c" } @@ -12382,40 +13072,40 @@ TrackerPropertyType _tmp1_ = 0; TrackerPropertyType _tmp2_; GError * _inner_error_ = NULL; -#line 1245 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 1245 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = sql; -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = tracker_sparql_expression_translate_additive_expression (self, _tmp0_, &_inner_error_); -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = _tmp1_; -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12402 "tracker-sparql-expression.c" +#line 13092 "tracker-sparql-expression.c" } else { -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12410 "tracker-sparql-expression.c" +#line 13100 "tracker-sparql-expression.c" } } -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp2_; -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 12417 "tracker-sparql-expression.c" +#line 13107 "tracker-sparql-expression.c" } @@ -12435,129 +13125,129 @@ gboolean _tmp10_; gboolean _tmp14_; GError * _inner_error_ = NULL; -#line 1249 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 1249 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 1249 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (operator != NULL, 0); -#line 1250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = sql; -#line 1250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = begin; -#line 1250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_insert (_tmp0_, (gssize) _tmp1_, "("); -#line 1251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = sql; -#line 1251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = operator; -#line 1251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp2_, _tmp3_); -#line 1252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = sql; -#line 1252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = tracker_sparql_expression_translate_numeric_expression (self, _tmp4_, &_inner_error_); -#line 1252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" op2type = _tmp5_; -#line 1252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12469 "tracker-sparql-expression.c" +#line 13159 "tracker-sparql-expression.c" } else { -#line 1252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12477 "tracker-sparql-expression.c" +#line 13167 "tracker-sparql-expression.c" } } -#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = sql; -#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp6_, ")"); -#line 1254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = op1type; -#line 1254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp9_ == TRACKER_PROPERTY_TYPE_DATETIME) { -#line 1254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = op2type == TRACKER_PROPERTY_TYPE_STRING; -#line 12490 "tracker-sparql-expression.c" +#line 13180 "tracker-sparql-expression.c" } else { -#line 1254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = FALSE; -#line 12494 "tracker-sparql-expression.c" +#line 13184 "tracker-sparql-expression.c" } -#line 1254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = _tmp8_; -#line 1254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp10_) { -#line 1254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = TRUE; -#line 12502 "tracker-sparql-expression.c" +#line 13192 "tracker-sparql-expression.c" } else { gboolean _tmp11_ = FALSE; TrackerPropertyType _tmp12_; gboolean _tmp13_; -#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = op1type; -#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp12_ == TRACKER_PROPERTY_TYPE_STRING) { -#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = op2type == TRACKER_PROPERTY_TYPE_DATETIME; -#line 12513 "tracker-sparql-expression.c" +#line 13203 "tracker-sparql-expression.c" } else { -#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = FALSE; -#line 12517 "tracker-sparql-expression.c" +#line 13207 "tracker-sparql-expression.c" } -#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_ = _tmp11_; -#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = _tmp13_; -#line 12523 "tracker-sparql-expression.c" +#line 13213 "tracker-sparql-expression.c" } -#line 1254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp14_ = _tmp7_; -#line 1254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp14_) { -#line 12529 "tracker-sparql-expression.c" +#line 13219 "tracker-sparql-expression.c" TrackerSparqlQuery* _tmp15_; GList* _tmp16_; guint _tmp17_ = 0U; guint _tmp18_; -#line 1257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1325 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_ = self->priv->query; -#line 1257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1325 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp16_ = _tmp15_->bindings; -#line 1257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1325 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp17_ = g_list_length (_tmp16_); -#line 1257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1325 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp18_ = n_bindings; -#line 1257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1325 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp17_ == (_tmp18_ + 1)) { -#line 12544 "tracker-sparql-expression.c" +#line 13234 "tracker-sparql-expression.c" TrackerSparqlQuery* _tmp19_; GList* _tmp20_; GList* _tmp21_ = NULL; gconstpointer _tmp22_; -#line 1259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1327 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp19_ = self->priv->query; -#line 1259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1327 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp20_ = _tmp19_->bindings; -#line 1259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1327 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp21_ = g_list_last (_tmp20_); -#line 1259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1327 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp22_ = _tmp21_->data; -#line 1259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1327 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" ((TrackerSparqlDataBinding*) ((TrackerSparqlLiteralBinding*) _tmp22_))->data_type = TRACKER_PROPERTY_TYPE_DATETIME; -#line 12559 "tracker-sparql-expression.c" +#line 13249 "tracker-sparql-expression.c" } } else { gboolean _tmp23_ = FALSE; @@ -12565,90 +13255,90 @@ TrackerPropertyType _tmp25_; gboolean _tmp26_; gboolean _tmp30_; -#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1329 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp25_ = op1type; -#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1329 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp25_ == TRACKER_PROPERTY_TYPE_DATE) { -#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1329 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp24_ = op2type == TRACKER_PROPERTY_TYPE_STRING; -#line 12573 "tracker-sparql-expression.c" +#line 13263 "tracker-sparql-expression.c" } else { -#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1329 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp24_ = FALSE; -#line 12577 "tracker-sparql-expression.c" +#line 13267 "tracker-sparql-expression.c" } -#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1329 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp26_ = _tmp24_; -#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1329 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp26_) { -#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1329 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp23_ = TRUE; -#line 12585 "tracker-sparql-expression.c" +#line 13275 "tracker-sparql-expression.c" } else { gboolean _tmp27_ = FALSE; TrackerPropertyType _tmp28_; gboolean _tmp29_; -#line 1262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp28_ = op1type; -#line 1262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp28_ == TRACKER_PROPERTY_TYPE_STRING) { -#line 1262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp27_ = op2type == TRACKER_PROPERTY_TYPE_DATE; -#line 12596 "tracker-sparql-expression.c" +#line 13286 "tracker-sparql-expression.c" } else { -#line 1262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp27_ = FALSE; -#line 12600 "tracker-sparql-expression.c" +#line 13290 "tracker-sparql-expression.c" } -#line 1262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp29_ = _tmp27_; -#line 1262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp23_ = _tmp29_; -#line 12606 "tracker-sparql-expression.c" +#line 13296 "tracker-sparql-expression.c" } -#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1329 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp30_ = _tmp23_; -#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1329 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp30_) { -#line 12612 "tracker-sparql-expression.c" +#line 13302 "tracker-sparql-expression.c" TrackerSparqlQuery* _tmp31_; GList* _tmp32_; guint _tmp33_ = 0U; guint _tmp34_; -#line 1264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1332 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp31_ = self->priv->query; -#line 1264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1332 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp32_ = _tmp31_->bindings; -#line 1264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1332 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp33_ = g_list_length (_tmp32_); -#line 1264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1332 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp34_ = n_bindings; -#line 1264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1332 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp33_ == (_tmp34_ + 1)) { -#line 12627 "tracker-sparql-expression.c" +#line 13317 "tracker-sparql-expression.c" TrackerSparqlQuery* _tmp35_; GList* _tmp36_; GList* _tmp37_ = NULL; gconstpointer _tmp38_; -#line 1266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1334 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp35_ = self->priv->query; -#line 1266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1334 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp36_ = _tmp35_->bindings; -#line 1266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1334 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp37_ = g_list_last (_tmp36_); -#line 1266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1334 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp38_ = _tmp37_->data; -#line 1266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1334 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" ((TrackerSparqlDataBinding*) ((TrackerSparqlLiteralBinding*) _tmp38_))->data_type = TRACKER_PROPERTY_TYPE_DATE; -#line 12642 "tracker-sparql-expression.c" +#line 13332 "tracker-sparql-expression.c" } } } -#line 1269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1337 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 1269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1337 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 12650 "tracker-sparql-expression.c" +#line 13340 "tracker-sparql-expression.c" } @@ -12661,107 +13351,107 @@ gboolean _tmp4_; GString* _tmp19_; GError * _inner_error_ = NULL; -#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1340 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1340 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 1274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" in_variable_count = 0; -#line 1276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = not; -#line 1276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp0_) { -#line 12673 "tracker-sparql-expression.c" +#line 13363 "tracker-sparql-expression.c" GString* _tmp1_; -#line 1277 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = sql; -#line 1277 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp1_, " NOT"); -#line 12679 "tracker-sparql-expression.c" +#line 13369 "tracker-sparql-expression.c" } -#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12691 "tracker-sparql-expression.c" +#line 13381 "tracker-sparql-expression.c" } else { -#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12699 "tracker-sparql-expression.c" +#line 13389 "tracker-sparql-expression.c" } } -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = sql; -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp2_, " IN ("); -#line 1282 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 1282 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = _tmp3_; -#line 1282 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1282 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1282 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1282 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12718 "tracker-sparql-expression.c" +#line 13408 "tracker-sparql-expression.c" } else { -#line 1282 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1282 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1282 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12726 "tracker-sparql-expression.c" +#line 13416 "tracker-sparql-expression.c" } } -#line 1282 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (!_tmp4_) { -#line 12731 "tracker-sparql-expression.c" +#line 13421 "tracker-sparql-expression.c" gint _tmp5_; GString* _tmp6_; -#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = in_variable_count; -#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" in_variable_count = _tmp5_ + 1; -#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = sql; -#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression (self, _tmp6_, &_inner_error_); -#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12750 "tracker-sparql-expression.c" +#line 13440 "tracker-sparql-expression.c" } else { -#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12758 "tracker-sparql-expression.c" +#line 13448 "tracker-sparql-expression.c" } } -#line 1285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" while (TRUE) { -#line 12763 "tracker-sparql-expression.c" +#line 13453 "tracker-sparql-expression.c" gboolean _tmp7_ = FALSE; gboolean _tmp8_; GString* _tmp9_; @@ -12770,132 +13460,132 @@ gint _tmp12_; gboolean _tmp16_; GString* _tmp18_; -#line 1285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 1285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = _tmp7_; -#line 1285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12784 "tracker-sparql-expression.c" +#line 13474 "tracker-sparql-expression.c" } else { -#line 1285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12792 "tracker-sparql-expression.c" +#line 13482 "tracker-sparql-expression.c" } } -#line 1285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (!_tmp8_) { -#line 1285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 12799 "tracker-sparql-expression.c" +#line 13489 "tracker-sparql-expression.c" } -#line 1286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = sql; -#line 1286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp9_, ", "); -#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = in_variable_count; -#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" in_variable_count = _tmp10_ + 1; -#line 1290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = in_variable_count; -#line 1290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp12_ > TRACKER_SPARQL_EXPRESSION_MAX_VARIABLES_FOR_IN) { -#line 12813 "tracker-sparql-expression.c" +#line 13503 "tracker-sparql-expression.c" TrackerSparqlQuery* _tmp13_; gboolean _tmp14_; gboolean _tmp15_; -#line 1290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_ = self->priv->query; -#line 1290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp14_ = tracker_sparql_query_get_no_cache (_tmp13_); -#line 1290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_ = _tmp14_; -#line 1290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = !_tmp15_; -#line 12825 "tracker-sparql-expression.c" +#line 13515 "tracker-sparql-expression.c" } else { -#line 1290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = FALSE; -#line 12829 "tracker-sparql-expression.c" +#line 13519 "tracker-sparql-expression.c" } -#line 1290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp16_ = _tmp11_; -#line 1290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp16_) { -#line 12835 "tracker-sparql-expression.c" +#line 13525 "tracker-sparql-expression.c" TrackerSparqlQuery* _tmp17_; -#line 1291 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp17_ = self->priv->query; -#line 1291 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_query_set_no_cache (_tmp17_, TRUE); -#line 12841 "tracker-sparql-expression.c" +#line 13531 "tracker-sparql-expression.c" } -#line 1294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp18_ = sql; -#line 1294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_translate_expression (self, _tmp18_, &_inner_error_); -#line 1294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12855 "tracker-sparql-expression.c" +#line 13545 "tracker-sparql-expression.c" } else { -#line 1294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12863 "tracker-sparql-expression.c" +#line 13553 "tracker-sparql-expression.c" } } } -#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12877 "tracker-sparql-expression.c" +#line 13567 "tracker-sparql-expression.c" } else { -#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12885 "tracker-sparql-expression.c" +#line 13575 "tracker-sparql-expression.c" } } } -#line 1298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp19_ = sql; -#line 1298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp19_, ")"); -#line 1300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = TRACKER_PROPERTY_TYPE_BOOLEAN; -#line 1300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 12897 "tracker-sparql-expression.c" +#line 13587 "tracker-sparql-expression.c" } @@ -12914,617 +13604,617 @@ gboolean _tmp7_ = FALSE; gboolean _tmp8_; GError * _inner_error_ = NULL; -#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 1304 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1372 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = sql; -#line 1304 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1372 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = _tmp0_->len; -#line 1304 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1372 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" begin = (glong) _tmp1_; -#line 1306 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = self->priv->query; -#line 1306 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = _tmp2_->bindings; -#line 1306 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = g_list_length (_tmp3_); -#line 1306 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" n_bindings = _tmp4_; -#line 1307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = sql; -#line 1307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = tracker_sparql_expression_translate_numeric_expression (self, _tmp5_, &_inner_error_); -#line 1307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" optype = _tmp6_; -#line 1307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12948 "tracker-sparql-expression.c" +#line 13638 "tracker-sparql-expression.c" } else { -#line 1307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12956 "tracker-sparql-expression.c" +#line 13646 "tracker-sparql-expression.c" } } -#line 1308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1376 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OP_GE, &_inner_error_); -#line 1308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1376 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = _tmp7_; -#line 1308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1376 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1376 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1376 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1376 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12971 "tracker-sparql-expression.c" +#line 13661 "tracker-sparql-expression.c" } else { -#line 1308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1376 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1376 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1376 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 12979 "tracker-sparql-expression.c" +#line 13669 "tracker-sparql-expression.c" } } -#line 1308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1376 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp8_) { -#line 12984 "tracker-sparql-expression.c" +#line 13674 "tracker-sparql-expression.c" GString* _tmp9_; glong _tmp10_; guint _tmp11_; TrackerPropertyType _tmp12_; TrackerPropertyType _tmp13_ = 0; TrackerPropertyType _tmp14_; -#line 1309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = sql; -#line 1309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = begin; -#line 1309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = n_bindings; -#line 1309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = optype; -#line 1309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_ = tracker_sparql_expression_process_relational_expression (self, _tmp9_, _tmp10_, _tmp11_, _tmp12_, " >= ", &_inner_error_); -#line 1309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp14_ = _tmp13_; -#line 1309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13011 "tracker-sparql-expression.c" +#line 13701 "tracker-sparql-expression.c" } else { -#line 1309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13019 "tracker-sparql-expression.c" +#line 13709 "tracker-sparql-expression.c" } } -#line 1309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp14_; -#line 1309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 13026 "tracker-sparql-expression.c" +#line 13716 "tracker-sparql-expression.c" } else { gboolean _tmp15_ = FALSE; gboolean _tmp16_; -#line 1310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OP_EQ, &_inner_error_); -#line 1310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp16_ = _tmp15_; -#line 1310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13042 "tracker-sparql-expression.c" +#line 13732 "tracker-sparql-expression.c" } else { -#line 1310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13050 "tracker-sparql-expression.c" +#line 13740 "tracker-sparql-expression.c" } } -#line 1310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp16_) { -#line 13055 "tracker-sparql-expression.c" +#line 13745 "tracker-sparql-expression.c" GString* _tmp17_; glong _tmp18_; guint _tmp19_; TrackerPropertyType _tmp20_; TrackerPropertyType _tmp21_ = 0; TrackerPropertyType _tmp22_; -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp17_ = sql; -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp18_ = begin; -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp19_ = n_bindings; -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp20_ = optype; -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp21_ = tracker_sparql_expression_process_relational_expression (self, _tmp17_, _tmp18_, _tmp19_, _tmp20_, " = ", &_inner_error_); -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp22_ = _tmp21_; -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13082 "tracker-sparql-expression.c" +#line 13772 "tracker-sparql-expression.c" } else { -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13090 "tracker-sparql-expression.c" +#line 13780 "tracker-sparql-expression.c" } } -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp22_; -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 13097 "tracker-sparql-expression.c" +#line 13787 "tracker-sparql-expression.c" } else { gboolean _tmp23_ = FALSE; gboolean _tmp24_; -#line 1312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp23_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OP_NE, &_inner_error_); -#line 1312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp24_ = _tmp23_; -#line 1312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13113 "tracker-sparql-expression.c" +#line 13803 "tracker-sparql-expression.c" } else { -#line 1312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13121 "tracker-sparql-expression.c" +#line 13811 "tracker-sparql-expression.c" } } -#line 1312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp24_) { -#line 13126 "tracker-sparql-expression.c" +#line 13816 "tracker-sparql-expression.c" GString* _tmp25_; glong _tmp26_; guint _tmp27_; TrackerPropertyType _tmp28_; TrackerPropertyType _tmp29_ = 0; TrackerPropertyType _tmp30_; -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp25_ = sql; -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp26_ = begin; -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp27_ = n_bindings; -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp28_ = optype; -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp29_ = tracker_sparql_expression_process_relational_expression (self, _tmp25_, _tmp26_, _tmp27_, _tmp28_, " <> ", &_inner_error_); -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp30_ = _tmp29_; -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13153 "tracker-sparql-expression.c" +#line 13843 "tracker-sparql-expression.c" } else { -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13161 "tracker-sparql-expression.c" +#line 13851 "tracker-sparql-expression.c" } } -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp30_; -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 13168 "tracker-sparql-expression.c" +#line 13858 "tracker-sparql-expression.c" } else { gboolean _tmp31_ = FALSE; gboolean _tmp32_; -#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1382 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp31_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OP_LT, &_inner_error_); -#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1382 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp32_ = _tmp31_; -#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1382 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1382 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1382 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1382 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13184 "tracker-sparql-expression.c" +#line 13874 "tracker-sparql-expression.c" } else { -#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1382 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1382 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1382 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13192 "tracker-sparql-expression.c" +#line 13882 "tracker-sparql-expression.c" } } -#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1382 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp32_) { -#line 13197 "tracker-sparql-expression.c" +#line 13887 "tracker-sparql-expression.c" GString* _tmp33_; glong _tmp34_; guint _tmp35_; TrackerPropertyType _tmp36_; TrackerPropertyType _tmp37_ = 0; TrackerPropertyType _tmp38_; -#line 1315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp33_ = sql; -#line 1315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp34_ = begin; -#line 1315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp35_ = n_bindings; -#line 1315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp36_ = optype; -#line 1315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp37_ = tracker_sparql_expression_process_relational_expression (self, _tmp33_, _tmp34_, _tmp35_, _tmp36_, " < ", &_inner_error_); -#line 1315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp38_ = _tmp37_; -#line 1315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13224 "tracker-sparql-expression.c" +#line 13914 "tracker-sparql-expression.c" } else { -#line 1315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13232 "tracker-sparql-expression.c" +#line 13922 "tracker-sparql-expression.c" } } -#line 1315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp38_; -#line 1315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 13239 "tracker-sparql-expression.c" +#line 13929 "tracker-sparql-expression.c" } else { gboolean _tmp39_ = FALSE; gboolean _tmp40_; -#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp39_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OP_LE, &_inner_error_); -#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp40_ = _tmp39_; -#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13255 "tracker-sparql-expression.c" +#line 13945 "tracker-sparql-expression.c" } else { -#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13263 "tracker-sparql-expression.c" +#line 13953 "tracker-sparql-expression.c" } } -#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp40_) { -#line 13268 "tracker-sparql-expression.c" +#line 13958 "tracker-sparql-expression.c" GString* _tmp41_; glong _tmp42_; guint _tmp43_; TrackerPropertyType _tmp44_; TrackerPropertyType _tmp45_ = 0; TrackerPropertyType _tmp46_; -#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp41_ = sql; -#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp42_ = begin; -#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp43_ = n_bindings; -#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp44_ = optype; -#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp45_ = tracker_sparql_expression_process_relational_expression (self, _tmp41_, _tmp42_, _tmp43_, _tmp44_, " <= ", &_inner_error_); -#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp46_ = _tmp45_; -#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13295 "tracker-sparql-expression.c" +#line 13985 "tracker-sparql-expression.c" } else { -#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13303 "tracker-sparql-expression.c" +#line 13993 "tracker-sparql-expression.c" } } -#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp46_; -#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 13310 "tracker-sparql-expression.c" +#line 14000 "tracker-sparql-expression.c" } else { gboolean _tmp47_ = FALSE; gboolean _tmp48_; -#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp47_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OP_GT, &_inner_error_); -#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp48_ = _tmp47_; -#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13326 "tracker-sparql-expression.c" +#line 14016 "tracker-sparql-expression.c" } else { -#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13334 "tracker-sparql-expression.c" +#line 14024 "tracker-sparql-expression.c" } } -#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp48_) { -#line 13339 "tracker-sparql-expression.c" +#line 14029 "tracker-sparql-expression.c" GString* _tmp49_; glong _tmp50_; guint _tmp51_; TrackerPropertyType _tmp52_; TrackerPropertyType _tmp53_ = 0; TrackerPropertyType _tmp54_; -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp49_ = sql; -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp50_ = begin; -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp51_ = n_bindings; -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp52_ = optype; -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp53_ = tracker_sparql_expression_process_relational_expression (self, _tmp49_, _tmp50_, _tmp51_, _tmp52_, " > ", &_inner_error_); -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp54_ = _tmp53_; -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13366 "tracker-sparql-expression.c" +#line 14056 "tracker-sparql-expression.c" } else { -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13374 "tracker-sparql-expression.c" +#line 14064 "tracker-sparql-expression.c" } } -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp54_; -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 13381 "tracker-sparql-expression.c" +#line 14071 "tracker-sparql-expression.c" } else { gboolean _tmp55_ = FALSE; gboolean _tmp56_; -#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp55_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OP_IN, &_inner_error_); -#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp56_ = _tmp55_; -#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13397 "tracker-sparql-expression.c" +#line 14087 "tracker-sparql-expression.c" } else { -#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13405 "tracker-sparql-expression.c" +#line 14095 "tracker-sparql-expression.c" } } -#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp56_) { -#line 13410 "tracker-sparql-expression.c" +#line 14100 "tracker-sparql-expression.c" GString* _tmp57_; TrackerPropertyType _tmp58_ = 0; TrackerPropertyType _tmp59_; -#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp57_ = sql; -#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp58_ = tracker_sparql_expression_translate_in (self, _tmp57_, FALSE, &_inner_error_); -#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp59_ = _tmp58_; -#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13428 "tracker-sparql-expression.c" +#line 14118 "tracker-sparql-expression.c" } else { -#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13436 "tracker-sparql-expression.c" +#line 14126 "tracker-sparql-expression.c" } } -#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp59_; -#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 13443 "tracker-sparql-expression.c" +#line 14133 "tracker-sparql-expression.c" } else { gboolean _tmp60_ = FALSE; gboolean _tmp61_; -#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp60_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_NOT, &_inner_error_); -#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp61_ = _tmp60_; -#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13459 "tracker-sparql-expression.c" +#line 14149 "tracker-sparql-expression.c" } else { -#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13467 "tracker-sparql-expression.c" +#line 14157 "tracker-sparql-expression.c" } } -#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp61_) { -#line 13472 "tracker-sparql-expression.c" +#line 14162 "tracker-sparql-expression.c" GString* _tmp62_; TrackerPropertyType _tmp63_ = 0; TrackerPropertyType _tmp64_; -#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OP_IN, &_inner_error_); -#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13486 "tracker-sparql-expression.c" +#line 14176 "tracker-sparql-expression.c" } else { -#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13494 "tracker-sparql-expression.c" +#line 14184 "tracker-sparql-expression.c" } } -#line 1324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp62_ = sql; -#line 1324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp63_ = tracker_sparql_expression_translate_in (self, _tmp62_, TRUE, &_inner_error_); -#line 1324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp64_ = _tmp63_; -#line 1324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13511 "tracker-sparql-expression.c" +#line 14201 "tracker-sparql-expression.c" } else { -#line 1324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13519 "tracker-sparql-expression.c" +#line 14209 "tracker-sparql-expression.c" } } -#line 1324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp64_; -#line 1324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 13526 "tracker-sparql-expression.c" +#line 14216 "tracker-sparql-expression.c" } } } @@ -13533,11 +14223,11 @@ } } } -#line 1326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = optype; -#line 1326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 13539 "tracker-sparql-expression.c" +#line 14229 "tracker-sparql-expression.c" } @@ -13547,40 +14237,40 @@ TrackerPropertyType _tmp1_ = 0; TrackerPropertyType _tmp2_; GError * _inner_error_ = NULL; -#line 1329 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 1329 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = sql; -#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = tracker_sparql_expression_translate_relational_expression (self, _tmp0_, &_inner_error_); -#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = _tmp1_; -#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13567 "tracker-sparql-expression.c" +#line 14257 "tracker-sparql-expression.c" } else { -#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13575 "tracker-sparql-expression.c" +#line 14265 "tracker-sparql-expression.c" } } -#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp2_; -#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 13582 "tracker-sparql-expression.c" +#line 14272 "tracker-sparql-expression.c" } @@ -13593,44 +14283,44 @@ TrackerPropertyType _tmp3_ = 0; TrackerPropertyType optype; GError * _inner_error_ = NULL; -#line 1333 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 1333 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 1334 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = sql; -#line 1334 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = _tmp0_->len; -#line 1334 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" begin = (glong) _tmp1_; -#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = sql; -#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = tracker_sparql_expression_translate_value_logical (self, _tmp2_, &_inner_error_); -#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" optype = _tmp3_; -#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13619 "tracker-sparql-expression.c" +#line 14309 "tracker-sparql-expression.c" } else { -#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13627 "tracker-sparql-expression.c" +#line 14317 "tracker-sparql-expression.c" } } -#line 1336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" while (TRUE) { -#line 13632 "tracker-sparql-expression.c" +#line 14322 "tracker-sparql-expression.c" gboolean _tmp4_ = FALSE; gboolean _tmp5_; TrackerPropertyType _tmp6_; @@ -13642,136 +14332,136 @@ TrackerPropertyType _tmp13_; GString* _tmp14_; TrackerPropertyType _tmp15_; -#line 1336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OP_AND, &_inner_error_); -#line 1336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = _tmp4_; -#line 1336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13656 "tracker-sparql-expression.c" +#line 14346 "tracker-sparql-expression.c" } else { -#line 1336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13664 "tracker-sparql-expression.c" +#line 14354 "tracker-sparql-expression.c" } } -#line 1336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (!_tmp5_) { -#line 1336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 13671 "tracker-sparql-expression.c" +#line 14361 "tracker-sparql-expression.c" } -#line 1337 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1405 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = optype; -#line 1337 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1405 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp6_ != TRACKER_PROPERTY_TYPE_BOOLEAN) { -#line 13677 "tracker-sparql-expression.c" +#line 14367 "tracker-sparql-expression.c" GError* _tmp7_ = NULL; -#line 1338 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = tracker_sparql_expression_get_error (self, "expected boolean expression"); -#line 1338 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp7_; -#line 1338 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1338 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1338 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13689 "tracker-sparql-expression.c" +#line 14379 "tracker-sparql-expression.c" } else { -#line 1338 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1338 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1338 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13697 "tracker-sparql-expression.c" +#line 14387 "tracker-sparql-expression.c" } } -#line 1340 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = sql; -#line 1340 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = begin; -#line 1340 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_insert (_tmp8_, (gssize) _tmp9_, "("); -#line 1341 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = sql; -#line 1341 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp10_, " AND "); -#line 1342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = sql; -#line 1342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = tracker_sparql_expression_translate_value_logical (self, _tmp11_, &_inner_error_); -#line 1342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_ = _tmp12_; -#line 1342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13724 "tracker-sparql-expression.c" +#line 14414 "tracker-sparql-expression.c" } else { -#line 1342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13732 "tracker-sparql-expression.c" +#line 14422 "tracker-sparql-expression.c" } } -#line 1342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" optype = _tmp13_; -#line 1343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp14_ = sql; -#line 1343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp14_, ")"); -#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1412 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_ = optype; -#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1412 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp15_ != TRACKER_PROPERTY_TYPE_BOOLEAN) { -#line 13745 "tracker-sparql-expression.c" +#line 14435 "tracker-sparql-expression.c" GError* _tmp16_ = NULL; -#line 1345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp16_ = tracker_sparql_expression_get_error (self, "expected boolean expression"); -#line 1345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp16_; -#line 1345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13757 "tracker-sparql-expression.c" +#line 14447 "tracker-sparql-expression.c" } else { -#line 1345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13765 "tracker-sparql-expression.c" +#line 14455 "tracker-sparql-expression.c" } } } -#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = optype; -#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 13773 "tracker-sparql-expression.c" +#line 14463 "tracker-sparql-expression.c" } @@ -13784,44 +14474,44 @@ TrackerPropertyType _tmp3_ = 0; TrackerPropertyType optype; GError * _inner_error_ = NULL; -#line 1351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1419 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 1351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1419 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 1352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = sql; -#line 1352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = _tmp0_->len; -#line 1352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" begin = (glong) _tmp1_; -#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = sql; -#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = tracker_sparql_expression_translate_conditional_and_expression (self, _tmp2_, &_inner_error_); -#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" optype = _tmp3_; -#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13810 "tracker-sparql-expression.c" +#line 14500 "tracker-sparql-expression.c" } else { -#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13818 "tracker-sparql-expression.c" +#line 14508 "tracker-sparql-expression.c" } } -#line 1354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" while (TRUE) { -#line 13823 "tracker-sparql-expression.c" +#line 14513 "tracker-sparql-expression.c" gboolean _tmp4_ = FALSE; gboolean _tmp5_; TrackerPropertyType _tmp6_; @@ -13833,136 +14523,136 @@ TrackerPropertyType _tmp13_; GString* _tmp14_; TrackerPropertyType _tmp15_; -#line 1354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OP_OR, &_inner_error_); -#line 1354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = _tmp4_; -#line 1354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13847 "tracker-sparql-expression.c" +#line 14537 "tracker-sparql-expression.c" } else { -#line 1354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13855 "tracker-sparql-expression.c" +#line 14545 "tracker-sparql-expression.c" } } -#line 1354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (!_tmp5_) { -#line 1354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 13862 "tracker-sparql-expression.c" +#line 14552 "tracker-sparql-expression.c" } -#line 1355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1423 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = optype; -#line 1355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1423 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp6_ != TRACKER_PROPERTY_TYPE_BOOLEAN) { -#line 13868 "tracker-sparql-expression.c" +#line 14558 "tracker-sparql-expression.c" GError* _tmp7_ = NULL; -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = tracker_sparql_expression_get_error (self, "expected boolean expression"); -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp7_; -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13880 "tracker-sparql-expression.c" +#line 14570 "tracker-sparql-expression.c" } else { -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13888 "tracker-sparql-expression.c" +#line 14578 "tracker-sparql-expression.c" } } -#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1426 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = sql; -#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1426 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = begin; -#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1426 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_insert (_tmp8_, (gssize) _tmp9_, "("); -#line 1359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = sql; -#line 1359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp10_, " OR "); -#line 1360 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp11_ = sql; -#line 1360 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp12_ = tracker_sparql_expression_translate_conditional_and_expression (self, _tmp11_, &_inner_error_); -#line 1360 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp13_ = _tmp12_; -#line 1360 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1360 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1360 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1360 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13915 "tracker-sparql-expression.c" +#line 14605 "tracker-sparql-expression.c" } else { -#line 1360 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1360 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1360 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13923 "tracker-sparql-expression.c" +#line 14613 "tracker-sparql-expression.c" } } -#line 1360 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" optype = _tmp13_; -#line 1361 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1429 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp14_ = sql; -#line 1361 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1429 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp14_, ")"); -#line 1362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp15_ = optype; -#line 1362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp15_ != TRACKER_PROPERTY_TYPE_BOOLEAN) { -#line 13936 "tracker-sparql-expression.c" +#line 14626 "tracker-sparql-expression.c" GError* _tmp16_ = NULL; -#line 1363 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp16_ = tracker_sparql_expression_get_error (self, "expected boolean expression"); -#line 1363 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _inner_error_ = _tmp16_; -#line 1363 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1363 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1363 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13948 "tracker-sparql-expression.c" +#line 14638 "tracker-sparql-expression.c" } else { -#line 1363 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1363 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1363 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13956 "tracker-sparql-expression.c" +#line 14646 "tracker-sparql-expression.c" } } } -#line 1366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1434 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = optype; -#line 1366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1434 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 13964 "tracker-sparql-expression.c" +#line 14654 "tracker-sparql-expression.c" } @@ -13972,40 +14662,40 @@ TrackerPropertyType _tmp1_ = 0; TrackerPropertyType _tmp2_; GError * _inner_error_ = NULL; -#line 1369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 1369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = sql; -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = tracker_sparql_expression_translate_conditional_or_expression (self, _tmp0_, &_inner_error_); -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = _tmp1_; -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 13992 "tracker-sparql-expression.c" +#line 14682 "tracker-sparql-expression.c" } else { -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14000 "tracker-sparql-expression.c" +#line 14690 "tracker-sparql-expression.c" } } -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp2_; -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 14007 "tracker-sparql-expression.c" +#line 14697 "tracker-sparql-expression.c" } @@ -14016,36 +14706,36 @@ TrackerPropertyType _tmp10_ = 0; TrackerPropertyType optype; GError * _inner_error_ = NULL; -#line 1373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 1373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 1374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 1374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14032 "tracker-sparql-expression.c" +#line 14722 "tracker-sparql-expression.c" } else { -#line 1374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14040 "tracker-sparql-expression.c" +#line 14730 "tracker-sparql-expression.c" } } -#line 1376 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = tracker_sparql_expression_current (self); -#line 1376 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp0_ == TRACKER_SPARQL_TOKEN_TYPE_SELECT) { -#line 14047 "tracker-sparql-expression.c" +#line 14737 "tracker-sparql-expression.c" GString* _tmp1_; TrackerSparqlPattern* _tmp2_; TrackerSparqlPattern* _tmp3_; @@ -14055,131 +14745,131 @@ GString* _tmp6_; TrackerSparqlSelectContext* _tmp7_; TrackerPropertyType _tmp8_; -#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1447 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = sql; -#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1447 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp1_, "("); -#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = tracker_sparql_expression_get_pattern (self); -#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = _tmp2_; -#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = sql; -#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = tracker_sparql_pattern_translate_select (_tmp3_, _tmp4_, TRUE, TRUE, &_inner_error_); -#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" select_context = _tmp5_; -#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14079 "tracker-sparql-expression.c" +#line 14769 "tracker-sparql-expression.c" } else { -#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14087 "tracker-sparql-expression.c" +#line 14777 "tracker-sparql-expression.c" } } -#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1449 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = sql; -#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1449 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp6_, ")"); -#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1451 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1451 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1451 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1451 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1451 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tracker_sparql_context_unref0 (select_context); -#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1451 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14106 "tracker-sparql-expression.c" +#line 14796 "tracker-sparql-expression.c" } else { -#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1451 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tracker_sparql_context_unref0 (select_context); -#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1451 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1451 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1451 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14116 "tracker-sparql-expression.c" +#line 14806 "tracker-sparql-expression.c" } } -#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp7_ = select_context; -#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp8_ = _tmp7_->type; -#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp8_; -#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tracker_sparql_context_unref0 (select_context); -#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 14129 "tracker-sparql-expression.c" +#line 14819 "tracker-sparql-expression.c" } -#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp9_ = sql; -#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp10_ = tracker_sparql_expression_translate_expression (self, _tmp9_, &_inner_error_); -#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" optype = _tmp10_; -#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14145 "tracker-sparql-expression.c" +#line 14835 "tracker-sparql-expression.c" } else { -#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14153 "tracker-sparql-expression.c" +#line 14843 "tracker-sparql-expression.c" } } -#line 1388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 1388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14166 "tracker-sparql-expression.c" +#line 14856 "tracker-sparql-expression.c" } else { -#line 1388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14174 "tracker-sparql-expression.c" +#line 14864 "tracker-sparql-expression.c" } } -#line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1457 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = optype; -#line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1457 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 14181 "tracker-sparql-expression.c" +#line 14871 "tracker-sparql-expression.c" } @@ -14191,115 +14881,115 @@ TrackerPropertyType _tmp4_ = 0; TrackerPropertyType optype; GError * _inner_error_ = NULL; -#line 1392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1460 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 1392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1460 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 1393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 1393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14207 "tracker-sparql-expression.c" +#line 14897 "tracker-sparql-expression.c" } else { -#line 1393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14215 "tracker-sparql-expression.c" +#line 14905 "tracker-sparql-expression.c" } } -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = tracker_sparql_expression_accept (self, TRACKER_SPARQL_TOKEN_TYPE_DISTINCT, &_inner_error_); -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = _tmp0_; -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14230 "tracker-sparql-expression.c" +#line 14920 "tracker-sparql-expression.c" } else { -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14238 "tracker-sparql-expression.c" +#line 14928 "tracker-sparql-expression.c" } } -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_tmp1_) { -#line 14243 "tracker-sparql-expression.c" +#line 14933 "tracker-sparql-expression.c" GString* _tmp2_; -#line 1395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = sql; -#line 1395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_string_append (_tmp2_, "DISTINCT "); -#line 14249 "tracker-sparql-expression.c" +#line 14939 "tracker-sparql-expression.c" } -#line 1397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1465 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = sql; -#line 1397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1465 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = tracker_sparql_expression_translate_expression (self, _tmp3_, &_inner_error_); -#line 1397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1465 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" optype = _tmp4_; -#line 1397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1465 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1465 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1465 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1465 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14265 "tracker-sparql-expression.c" +#line 14955 "tracker-sparql-expression.c" } else { -#line 1397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1465 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1465 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1465 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14273 "tracker-sparql-expression.c" +#line 14963 "tracker-sparql-expression.c" } } -#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1466 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" tracker_sparql_expression_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1466 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1466 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1466 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1466 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14286 "tracker-sparql-expression.c" +#line 14976 "tracker-sparql-expression.c" } else { -#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1466 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1466 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1466 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14294 "tracker-sparql-expression.c" +#line 14984 "tracker-sparql-expression.c" } } -#line 1399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1467 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = optype; -#line 1399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1467 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 14301 "tracker-sparql-expression.c" +#line 14991 "tracker-sparql-expression.c" } @@ -14307,113 +14997,113 @@ TrackerPropertyType result = 0; TrackerSparqlTokenType _tmp0_ = 0; GError * _inner_error_ = NULL; -#line 1402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, 0); -#line 1402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (sql != NULL, 0); -#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = tracker_sparql_expression_current (self); -#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" switch (_tmp0_) { -#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_STR: -#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_LANG: -#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_LANGMATCHES: -#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_DATATYPE: -#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_BOUND: -#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_IF: -#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_SAMETERM: -#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_ISIRI: -#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_ISURI: -#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_ISBLANK: -#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_ISLITERAL: -#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_REGEX: -#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_EXISTS: -#line 1403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" case TRACKER_SPARQL_TOKEN_TYPE_NOT: -#line 14345 "tracker-sparql-expression.c" +#line 15035 "tracker-sparql-expression.c" { GString* _tmp1_; TrackerPropertyType _tmp2_ = 0; TrackerPropertyType _tmp3_; -#line 1418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = sql; -#line 1418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp2_ = tracker_sparql_expression_translate_primary_expression (self, _tmp1_, &_inner_error_); -#line 1418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp3_ = _tmp2_; -#line 1418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14364 "tracker-sparql-expression.c" +#line 15054 "tracker-sparql-expression.c" } else { -#line 1418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14372 "tracker-sparql-expression.c" +#line 15062 "tracker-sparql-expression.c" } } -#line 1418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp3_; -#line 1418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 14379 "tracker-sparql-expression.c" +#line 15069 "tracker-sparql-expression.c" } default: { GString* _tmp4_; TrackerPropertyType _tmp5_ = 0; TrackerPropertyType _tmp6_; -#line 1420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp4_ = sql; -#line 1420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp5_ = tracker_sparql_expression_translate_bracketted_expression (self, _tmp4_, &_inner_error_); -#line 1420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp6_ = _tmp5_; -#line 1420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_ != NULL) { -#line 1420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_propagate_error (error, _inner_error_); -#line 1420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14400 "tracker-sparql-expression.c" +#line 15090 "tracker-sparql-expression.c" } else { -#line 1420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_clear_error (&_inner_error_); -#line 1420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return 0; -#line 14408 "tracker-sparql-expression.c" +#line 15098 "tracker-sparql-expression.c" } } -#line 1420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp6_; -#line 1420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 1488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 14415 "tracker-sparql-expression.c" +#line 15105 "tracker-sparql-expression.c" } } } @@ -14423,17 +15113,17 @@ TrackerSparqlContext* result; TrackerSparqlQuery* _tmp0_; TrackerSparqlContext* _tmp1_; -#line 34 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 36 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, NULL); -#line 34 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 36 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = self->priv->query; -#line 34 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 36 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = _tmp0_->context; -#line 34 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 36 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp1_; -#line 34 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 36 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 14435 "tracker-sparql-expression.c" +#line 15125 "tracker-sparql-expression.c" } @@ -14441,17 +15131,17 @@ TrackerSparqlPattern* result; TrackerSparqlQuery* _tmp0_; TrackerSparqlPattern* _tmp1_; -#line 38 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 40 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" g_return_val_if_fail (self != NULL, NULL); -#line 38 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 40 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp0_ = self->priv->query; -#line 38 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 40 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" _tmp1_ = _tmp0_->pattern; -#line 38 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 40 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" result = _tmp1_; -#line 38 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" +#line 40 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" return result; -#line 14453 "tracker-sparql-expression.c" +#line 15143 "tracker-sparql-expression.c" } @@ -14464,14 +15154,14 @@ G_OBJECT_CLASS (klass)->get_property = _vala_tracker_sparql_expression_get_property; #line 20 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" G_OBJECT_CLASS (klass)->finalize = tracker_sparql_expression_finalize; -#line 14466 "tracker-sparql-expression.c" +#line 15156 "tracker-sparql-expression.c" } static void tracker_sparql_expression_instance_init (TrackerSparqlExpression * self) { #line 20 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" self->priv = TRACKER_SPARQL_EXPRESSION_GET_PRIVATE (self); -#line 14473 "tracker-sparql-expression.c" +#line 15163 "tracker-sparql-expression.c" } @@ -14479,9 +15169,11 @@ TrackerSparqlExpression * self; #line 20 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" self = TRACKER_SPARQL_EXPRESSION (obj); +#line 29 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" + _g_free0 (self->priv->fts_sql); #line 20 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" G_OBJECT_CLASS (tracker_sparql_expression_parent_class)->finalize (obj); -#line 14483 "tracker-sparql-expression.c" +#line 15175 "tracker-sparql-expression.c" } @@ -14502,13 +15194,13 @@ self = TRACKER_SPARQL_EXPRESSION (object); #line 20 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" switch (property_id) { -#line 14504 "tracker-sparql-expression.c" +#line 15196 "tracker-sparql-expression.c" default: #line 20 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); #line 20 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-expression.vala" break; -#line 14510 "tracker-sparql-expression.c" +#line 15202 "tracker-sparql-expression.c" } } diff -Nru tracker-0.15.1/src/libtracker-data/tracker-sparql-expression.vala tracker-0.15.2/src/libtracker-data/tracker-sparql-expression.vala --- tracker-0.15.1/src/libtracker-data/tracker-sparql-expression.vala 2012-08-07 19:05:10.000000000 +0000 +++ tracker-0.15.2/src/libtracker-data/tracker-sparql-expression.vala 2013-02-14 19:30:47.000000000 +0000 @@ -26,6 +26,8 @@ const string FTS_NS = "http://www.tracker-project.org/ontologies/fts#"; const string TRACKER_NS = "http://www.tracker-project.org/ontologies/tracker#"; + string? fts_sql; + public Expression (Query query) { this.query = query; } @@ -188,6 +190,22 @@ } } + if (pattern.fts_subject != null) { + if (variable == null) { + // FTS matches still need aliases as the outer MATCH query + // will fetch futher values from the joined select + variable = context.get_variable ("var%d".printf (variable_index + 1)); + } + + if (fts_sql == null) { + pattern.fts_variables += variable.sql_expression; + sql.append_printf (" AS %s", variable.sql_expression); + } else { + pattern.fts_variables += fts_sql; + pattern.queries_fts_data = true; + } + } + if (expect_close_parens) { expect (SparqlTokenType.CLOSE_PARENS); } @@ -204,6 +222,8 @@ ((SelectContext) context).variable_names += "var%d".printf (variable_index + 1); } + fts_sql = null; + return type; } @@ -647,8 +667,56 @@ } else if (uri == FTS_NS + "offsets") { bool is_var; string v = pattern.parse_var_or_term (null, out is_var); - sql.append_printf ("\"%s_u_offsets\"", v); + var variable = context.get_variable (v); + sql.append (variable.sql_expression); + fts_sql = "tracker_offsets(offsets(\"fts\"),fts_property_names())"; + return PropertyType.STRING; + } else if (uri == FTS_NS + "snippet") { + bool is_var; + + string v = pattern.parse_var_or_term (null, out is_var); + var variable = context.get_variable (v); + var fts = new StringBuilder (); + + fts.append_printf ("snippet(\"fts\""); + + // "start match" text + if (accept (SparqlTokenType.COMMA)) { + fts.append (", "); + translate_expression_as_string (fts); + + // "end match" text + expect (SparqlTokenType.COMMA); + fts.append (", "); + translate_expression_as_string (fts); + } else { + fts.append(",'',''"); + } + + // "ellipsis" text + if (accept (SparqlTokenType.COMMA)) { + fts.append (", "); + translate_expression_as_string (fts); + } else { + fts.append (", '...'"); + } + + // lookup column + fts.append (", -1"); + + // Approximate number of words in context + if (accept (SparqlTokenType.COMMA)) { + fts.append (", "); + translate_expression_as_string (fts); + } else { + fts.append (", 5"); + } + + fts.append (")"); + + fts_sql = fts.str; + sql.append (variable.sql_expression); return PropertyType.STRING; } else if (uri == TRACKER_NS + "id") { var type = translate_expression (sql); diff -Nru tracker-0.15.1/src/libtracker-data/tracker-sparql-pattern.c tracker-0.15.2/src/libtracker-data/tracker-sparql-pattern.c --- tracker-0.15.1/src/libtracker-data/tracker-sparql-pattern.c 2013-01-24 16:46:03.000000000 +0000 +++ tracker-0.15.2/src/libtracker-data/tracker-sparql-pattern.c 2013-02-15 11:38:31.000000000 +0000 @@ -124,6 +124,16 @@ #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) typedef struct _TrackerSparqlPatternPrivate TrackerSparqlPatternPrivate; +#define TRACKER_SPARQL_TYPE_VARIABLE (tracker_sparql_variable_get_type ()) +#define TRACKER_SPARQL_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TRACKER_SPARQL_TYPE_VARIABLE, TrackerSparqlVariable)) +#define TRACKER_SPARQL_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TRACKER_SPARQL_TYPE_VARIABLE, TrackerSparqlVariableClass)) +#define TRACKER_SPARQL_IS_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TRACKER_SPARQL_TYPE_VARIABLE)) +#define TRACKER_SPARQL_IS_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TRACKER_SPARQL_TYPE_VARIABLE)) +#define TRACKER_SPARQL_VARIABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TRACKER_SPARQL_TYPE_VARIABLE, TrackerSparqlVariableClass)) + +typedef struct _TrackerSparqlVariable TrackerSparqlVariable; +typedef struct _TrackerSparqlVariableClass TrackerSparqlVariableClass; + #define TRACKER_SPARQL_PATTERN_TYPE_TRIPLE_CONTEXT (tracker_sparql_pattern_triple_context_get_type ()) #define TRACKER_SPARQL_PATTERN_TRIPLE_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TRACKER_SPARQL_PATTERN_TYPE_TRIPLE_CONTEXT, TrackerSparqlPatternTripleContext)) #define TRACKER_SPARQL_PATTERN_TRIPLE_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TRACKER_SPARQL_PATTERN_TYPE_TRIPLE_CONTEXT, TrackerSparqlPatternTripleContextClass)) @@ -152,16 +162,6 @@ #define __g_list_free__g_object_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_object_unref0_ (var), NULL))) typedef struct _TrackerSparqlContextPrivate TrackerSparqlContextPrivate; -#define TRACKER_SPARQL_TYPE_VARIABLE (tracker_sparql_variable_get_type ()) -#define TRACKER_SPARQL_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TRACKER_SPARQL_TYPE_VARIABLE, TrackerSparqlVariable)) -#define TRACKER_SPARQL_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TRACKER_SPARQL_TYPE_VARIABLE, TrackerSparqlVariableClass)) -#define TRACKER_SPARQL_IS_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TRACKER_SPARQL_TYPE_VARIABLE)) -#define TRACKER_SPARQL_IS_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TRACKER_SPARQL_TYPE_VARIABLE)) -#define TRACKER_SPARQL_VARIABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TRACKER_SPARQL_TYPE_VARIABLE, TrackerSparqlVariableClass)) - -typedef struct _TrackerSparqlVariable TrackerSparqlVariable; -typedef struct _TrackerSparqlVariableClass TrackerSparqlVariableClass; - #define TRACKER_SPARQL_TYPE_VARIABLE_STATE (tracker_sparql_variable_state_get_type ()) #define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL))) typedef struct _TrackerSparqlVariablePrivate TrackerSparqlVariablePrivate; @@ -246,6 +246,12 @@ GObject parent_instance; TrackerSparqlPatternPrivate * priv; gchar* current_graph; + TrackerSparqlVariable* fts_subject; + gchar** fts_variables; + gint fts_variables_length1; + gint _fts_variables_size_; + GString* match_str; + gboolean queries_fts_data; }; struct _TrackerSparqlPatternClass { @@ -501,6 +507,7 @@ TrackerSparqlPredicateVariable* tracker_sparql_predicate_variable_new (void); TrackerSparqlPredicateVariable* tracker_sparql_predicate_variable_construct (GType object_type); static void tracker_sparql_predicate_variable_finalize (GObject* obj); +GType tracker_sparql_variable_get_type (void) G_GNUC_CONST; static GType tracker_sparql_pattern_triple_context_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; #define TRACKER_SPARQL_PATTERN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TRACKER_SPARQL_TYPE_PATTERN, TrackerSparqlPatternPrivate)) enum { @@ -540,15 +547,14 @@ static void _g_list_free__g_object_unref0_ (GList* self); void tracker_sparql_expression_skip_select_variables (TrackerSparqlExpression* self, GError** error); TrackerSparqlContext* tracker_sparql_pattern_translate_group_graph_pattern (TrackerSparqlPattern* self, GString* sql, GError** error); -GType tracker_sparql_variable_get_type (void) G_GNUC_CONST; GType tracker_sparql_variable_state_get_type (void) G_GNUC_CONST; GType tracker_sparql_variable_binding_get_type (void) G_GNUC_CONST; const gchar* tracker_sparql_variable_get_name (TrackerSparqlVariable* self); const gchar* tracker_sparql_variable_get_sql_expression (TrackerSparqlVariable* self); -static void _vala_array_add3 (TrackerPropertyType** array, int* length, int* size, TrackerPropertyType value); -static void _vala_array_add4 (gchar*** array, int* length, int* size, gchar* value); -TrackerPropertyType tracker_sparql_expression_translate_select_expression (TrackerSparqlExpression* self, GString* sql, gboolean subquery, gint variable_index, GError** error); static void _vala_array_add5 (TrackerPropertyType** array, int* length, int* size, TrackerPropertyType value); +static void _vala_array_add6 (gchar*** array, int* length, int* size, gchar* value); +TrackerPropertyType tracker_sparql_expression_translate_select_expression (TrackerSparqlExpression* self, GString* sql, gboolean subquery, gint variable_index, GError** error); +static void _vala_array_add7 (TrackerPropertyType** array, int* length, int* size, TrackerPropertyType value); TrackerPropertyType tracker_sparql_expression_translate_expression (TrackerSparqlExpression* self, GString* sql, GError** error); TrackerPropertyType tracker_sparql_expression_translate_constraint (TrackerSparqlExpression* self, GString* sql, GError** error); void tracker_sparql_expression_translate_order_condition (TrackerSparqlExpression* self, GString* sql, GError** error); @@ -580,10 +586,10 @@ TrackerSparqlContext* tracker_sparql_context_construct (GType object_type, TrackerSparqlQuery* query, TrackerSparqlContext* parent_context); gchar* tracker_sparql_variable_get_extra_sql_expression (TrackerSparqlVariable* self, const gchar* suffix); static void tracker_sparql_pattern_translate_group_or_union_graph_pattern (TrackerSparqlPattern* self, GString* sql, GError** error); -static void _vala_array_add6 (TrackerSourceLocation** array, int* length, int* size, const TrackerSourceLocation* value); -static void _vala_array_add7 (glong** array, int* length, int* size, glong value); -static void _vala_array_add8 (TrackerSparqlContext*** array, int* length, int* size, TrackerSparqlContext* value); -static void _vala_array_add9 (TrackerSparqlVariable*** array, int* length, int* size, TrackerSparqlVariable* value); +static void _vala_array_add8 (TrackerSourceLocation** array, int* length, int* size, const TrackerSourceLocation* value); +static void _vala_array_add9 (glong** array, int* length, int* size, glong value); +static void _vala_array_add10 (TrackerSparqlContext*** array, int* length, int* size, TrackerSparqlContext* value); +static void _vala_array_add11 (TrackerSparqlVariable*** array, int* length, int* size, TrackerSparqlVariable* value); static TrackerSparqlVariableBindingList* tracker_sparql_pattern_get_variable_binding_list (TrackerSparqlPattern* self, TrackerSparqlVariable* variable); TrackerSparqlVariableBinding* tracker_sparql_variable_binding_new (void); TrackerSparqlVariableBinding* tracker_sparql_variable_binding_construct (GType object_type); @@ -610,7 +616,7 @@ static gpointer _g_object_ref0 (gpointer self) { #line 39 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return self ? g_object_ref (self) : NULL; -#line 614 "tracker-sparql-pattern.c" +#line 620 "tracker-sparql-pattern.c" } @@ -621,7 +627,7 @@ g_return_val_if_fail (self != NULL, NULL); #line 29 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (query != NULL, NULL); -#line 625 "tracker-sparql-pattern.c" +#line 631 "tracker-sparql-pattern.c" { GString* _tmp0_; GString* sql; @@ -637,7 +643,7 @@ _tmp1_ = self->subject; #line 33 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp1_ != NULL) { -#line 641 "tracker-sparql-pattern.c" +#line 647 "tracker-sparql-pattern.c" const gchar* _tmp2_; gint _tmp3_ = 0; gint subject_id; @@ -658,7 +664,7 @@ _tmp4_ = subject_id; #line 38 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp4_ > 0) { -#line 662 "tracker-sparql-pattern.c" +#line 668 "tracker-sparql-pattern.c" TrackerDBInterface* _tmp5_ = NULL; TrackerDBInterface* _tmp6_; TrackerDBInterface* iface; @@ -690,7 +696,7 @@ _g_object_unref0 (cursor); #line 40 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (sql); -#line 694 "tracker-sparql-pattern.c" +#line 700 "tracker-sparql-pattern.c" goto __catch0_g_error; } #line 43 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" @@ -715,7 +721,7 @@ _g_object_unref0 (cursor); #line 44 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (sql); -#line 719 "tracker-sparql-pattern.c" +#line 725 "tracker-sparql-pattern.c" goto __catch0_g_error; } #line 44 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" @@ -726,7 +732,7 @@ _g_object_unref0 (stmt); #line 38 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (iface); -#line 730 "tracker-sparql-pattern.c" +#line 736 "tracker-sparql-pattern.c" } #line 47 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first = TRUE; @@ -736,7 +742,7 @@ if (_tmp14_ != NULL) { #line 49 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" while (TRUE) { -#line 740 "tracker-sparql-pattern.c" +#line 746 "tracker-sparql-pattern.c" TrackerDBCursor* _tmp15_; gboolean _tmp16_ = FALSE; gboolean _tmp17_; @@ -759,14 +765,14 @@ _g_object_unref0 (cursor); #line 49 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (sql); -#line 763 "tracker-sparql-pattern.c" +#line 769 "tracker-sparql-pattern.c" goto __catch0_g_error; } #line 49 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp17_) { #line 49 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 770 "tracker-sparql-pattern.c" +#line 776 "tracker-sparql-pattern.c" } #line 50 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp18_ = cursor; @@ -780,7 +786,7 @@ domain = _tmp21_; #line 52 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp23_ = tracker_ontologies_get_properties (&_tmp22_); -#line 784 "tracker-sparql-pattern.c" +#line 790 "tracker-sparql-pattern.c" { TrackerProperty** prop_collection = NULL; gint prop_collection_length1 = 0; @@ -792,14 +798,14 @@ prop_collection_length1 = _tmp22_; #line 52 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (prop_it = 0; prop_it < _tmp22_; prop_it = prop_it + 1) { -#line 796 "tracker-sparql-pattern.c" +#line 802 "tracker-sparql-pattern.c" TrackerProperty* _tmp24_; TrackerProperty* prop = NULL; #line 52 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp24_ = _g_object_ref0 (prop_collection[prop_it]); #line 52 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" prop = _tmp24_; -#line 803 "tracker-sparql-pattern.c" +#line 809 "tracker-sparql-pattern.c" { TrackerProperty* _tmp25_; TrackerClass* _tmp26_; @@ -815,7 +821,7 @@ _tmp28_ = domain; #line 53 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp27_ == _tmp28_) { -#line 819 "tracker-sparql-pattern.c" +#line 825 "tracker-sparql-pattern.c" gboolean _tmp29_; GString* _tmp31_; TrackerProperty* _tmp32_; @@ -852,14 +858,14 @@ if (_tmp29_) { #line 55 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first = FALSE; -#line 856 "tracker-sparql-pattern.c" +#line 862 "tracker-sparql-pattern.c" } else { GString* _tmp30_; #line 57 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp30_ = sql; #line 57 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp30_, " UNION ALL "); -#line 863 "tracker-sparql-pattern.c" +#line 869 "tracker-sparql-pattern.c" } #line 59 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp31_ = sql; @@ -902,7 +908,7 @@ _tmp45_ = self->return_graph; #line 64 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp45_) { -#line 905 "tracker-sparql-pattern.c" +#line 911 "tracker-sparql-pattern.c" GString* _tmp46_; TrackerProperty* _tmp47_; const gchar* _tmp48_; @@ -917,7 +923,7 @@ _tmp49_ = _tmp48_; #line 65 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp46_, ", \"%s:graph\" AS \"graph\"", _tmp49_); -#line 920 "tracker-sparql-pattern.c" +#line 926 "tracker-sparql-pattern.c" } #line 67 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp50_ = sql; @@ -961,42 +967,42 @@ _tmp60_->bindings = g_list_append (_tmp60_->bindings, _tmp62_); #line 53 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (binding); -#line 964 "tracker-sparql-pattern.c" +#line 970 "tracker-sparql-pattern.c" } #line 52 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 968 "tracker-sparql-pattern.c" +#line 974 "tracker-sparql-pattern.c" } } } #line 49 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (domain); -#line 974 "tracker-sparql-pattern.c" +#line 980 "tracker-sparql-pattern.c" } } #line 80 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp63_ = first; #line 80 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp63_) { -#line 981 "tracker-sparql-pattern.c" +#line 987 "tracker-sparql-pattern.c" GString* _tmp64_; #line 82 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp64_ = sql; #line 82 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp64_, "SELECT NULL AS ID, NULL AS \"predicate\", NULL AS \"object\", NULL AS " \ "\"graph\""); -#line 987 "tracker-sparql-pattern.c" +#line 993 "tracker-sparql-pattern.c" } #line 33 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (cursor); -#line 991 "tracker-sparql-pattern.c" +#line 997 "tracker-sparql-pattern.c" } else { const gchar* _tmp65_; #line 84 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp65_ = self->object; #line 84 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp65_ != NULL) { -#line 998 "tracker-sparql-pattern.c" +#line 1004 "tracker-sparql-pattern.c" const gchar* _tmp66_; gint _tmp67_ = 0; gint object_id; @@ -1038,7 +1044,7 @@ _g_object_unref0 (iface); #line 89 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (sql); -#line 1040 "tracker-sparql-pattern.c" +#line 1046 "tracker-sparql-pattern.c" goto __catch0_g_error; } #line 92 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" @@ -1061,7 +1067,7 @@ _g_object_unref0 (iface); #line 93 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (sql); -#line 1063 "tracker-sparql-pattern.c" +#line 1069 "tracker-sparql-pattern.c" goto __catch0_g_error; } #line 95 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" @@ -1072,7 +1078,7 @@ if (_tmp76_ != NULL) { #line 97 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" while (TRUE) { -#line 1074 "tracker-sparql-pattern.c" +#line 1080 "tracker-sparql-pattern.c" TrackerDBCursor* _tmp77_; gboolean _tmp78_ = FALSE; gboolean _tmp79_; @@ -1099,14 +1105,14 @@ _g_object_unref0 (iface); #line 97 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (sql); -#line 1101 "tracker-sparql-pattern.c" +#line 1107 "tracker-sparql-pattern.c" goto __catch0_g_error; } #line 97 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp79_) { #line 97 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 1108 "tracker-sparql-pattern.c" +#line 1114 "tracker-sparql-pattern.c" } #line 98 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp80_ = cursor; @@ -1120,7 +1126,7 @@ range = _tmp83_; #line 100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp85_ = tracker_ontologies_get_properties (&_tmp84_); -#line 1122 "tracker-sparql-pattern.c" +#line 1128 "tracker-sparql-pattern.c" { TrackerProperty** prop_collection = NULL; gint prop_collection_length1 = 0; @@ -1132,14 +1138,14 @@ prop_collection_length1 = _tmp84_; #line 100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (prop_it = 0; prop_it < _tmp84_; prop_it = prop_it + 1) { -#line 1134 "tracker-sparql-pattern.c" +#line 1140 "tracker-sparql-pattern.c" TrackerProperty* _tmp86_; TrackerProperty* prop = NULL; #line 100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp86_ = _g_object_ref0 (prop_collection[prop_it]); #line 100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" prop = _tmp86_; -#line 1141 "tracker-sparql-pattern.c" +#line 1147 "tracker-sparql-pattern.c" { TrackerProperty* _tmp87_; TrackerClass* _tmp88_; @@ -1155,7 +1161,7 @@ _tmp90_ = range; #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp89_ == _tmp90_) { -#line 1157 "tracker-sparql-pattern.c" +#line 1163 "tracker-sparql-pattern.c" gboolean _tmp91_; GString* _tmp93_; TrackerProperty* _tmp94_; @@ -1182,14 +1188,14 @@ if (_tmp91_) { #line 103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first = FALSE; -#line 1184 "tracker-sparql-pattern.c" +#line 1190 "tracker-sparql-pattern.c" } else { GString* _tmp92_; #line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp92_ = sql; #line 105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp92_, " UNION ALL "); -#line 1191 "tracker-sparql-pattern.c" +#line 1197 "tracker-sparql-pattern.c" } #line 107 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp93_ = sql; @@ -1232,7 +1238,7 @@ _tmp107_ = self->return_graph; #line 112 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp107_) { -#line 1233 "tracker-sparql-pattern.c" +#line 1239 "tracker-sparql-pattern.c" GString* _tmp108_; TrackerProperty* _tmp109_; const gchar* _tmp110_; @@ -1247,7 +1253,7 @@ _tmp111_ = _tmp110_; #line 113 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp108_, ", \"%s:graph\" AS \"graph\"", _tmp111_); -#line 1248 "tracker-sparql-pattern.c" +#line 1254 "tracker-sparql-pattern.c" } #line 115 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp112_ = sql; @@ -1259,31 +1265,31 @@ _tmp115_ = _tmp114_; #line 115 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp112_, " FROM \"%s\"", _tmp115_); -#line 1260 "tracker-sparql-pattern.c" +#line 1266 "tracker-sparql-pattern.c" } #line 100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 1264 "tracker-sparql-pattern.c" +#line 1270 "tracker-sparql-pattern.c" } } } #line 97 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (range); -#line 1270 "tracker-sparql-pattern.c" +#line 1276 "tracker-sparql-pattern.c" } } #line 121 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp116_ = first; #line 121 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp116_) { -#line 1277 "tracker-sparql-pattern.c" +#line 1283 "tracker-sparql-pattern.c" GString* _tmp117_; #line 123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp117_ = sql; #line 123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp117_, "SELECT NULL AS ID, NULL AS \"predicate\", NULL AS \"object\", NULL AS " \ "\"graph\""); -#line 1283 "tracker-sparql-pattern.c" +#line 1289 "tracker-sparql-pattern.c" } #line 84 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (cursor); @@ -1291,14 +1297,14 @@ _g_object_unref0 (stmt); #line 84 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (iface); -#line 1291 "tracker-sparql-pattern.c" +#line 1297 "tracker-sparql-pattern.c" } else { TrackerClass* _tmp118_; #line 125 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp118_ = self->domain; #line 125 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp118_ != NULL) { -#line 1298 "tracker-sparql-pattern.c" +#line 1304 "tracker-sparql-pattern.c" gboolean first; gint _tmp119_ = 0; TrackerProperty** _tmp120_ = NULL; @@ -1306,7 +1312,7 @@ first = TRUE; #line 128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp120_ = tracker_ontologies_get_properties (&_tmp119_); -#line 1306 "tracker-sparql-pattern.c" +#line 1312 "tracker-sparql-pattern.c" { TrackerProperty** prop_collection = NULL; gint prop_collection_length1 = 0; @@ -1318,14 +1324,14 @@ prop_collection_length1 = _tmp119_; #line 128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (prop_it = 0; prop_it < _tmp119_; prop_it = prop_it + 1) { -#line 1318 "tracker-sparql-pattern.c" +#line 1324 "tracker-sparql-pattern.c" TrackerProperty* _tmp121_; TrackerProperty* prop = NULL; #line 128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp121_ = _g_object_ref0 (prop_collection[prop_it]); #line 128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" prop = _tmp121_; -#line 1325 "tracker-sparql-pattern.c" +#line 1331 "tracker-sparql-pattern.c" { TrackerProperty* _tmp122_; TrackerClass* _tmp123_; @@ -1341,7 +1347,7 @@ _tmp125_ = self->domain; #line 129 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp124_ == _tmp125_) { -#line 1341 "tracker-sparql-pattern.c" +#line 1347 "tracker-sparql-pattern.c" gboolean _tmp126_; GString* _tmp128_; TrackerProperty* _tmp129_; @@ -1368,14 +1374,14 @@ if (_tmp126_) { #line 131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first = FALSE; -#line 1368 "tracker-sparql-pattern.c" +#line 1374 "tracker-sparql-pattern.c" } else { GString* _tmp127_; #line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp127_ = sql; #line 133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp127_, " UNION ALL "); -#line 1375 "tracker-sparql-pattern.c" +#line 1381 "tracker-sparql-pattern.c" } #line 135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp128_ = sql; @@ -1418,7 +1424,7 @@ _tmp142_ = self->return_graph; #line 140 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp142_) { -#line 1417 "tracker-sparql-pattern.c" +#line 1423 "tracker-sparql-pattern.c" GString* _tmp143_; TrackerProperty* _tmp144_; const gchar* _tmp145_; @@ -1433,7 +1439,7 @@ _tmp146_ = _tmp145_; #line 141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp143_, ", \"%s:graph\" AS \"graph\"", _tmp146_); -#line 1432 "tracker-sparql-pattern.c" +#line 1438 "tracker-sparql-pattern.c" } #line 143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp147_ = sql; @@ -1445,11 +1451,11 @@ _tmp150_ = _tmp149_; #line 143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp147_, " FROM \"%s\"", _tmp150_); -#line 1444 "tracker-sparql-pattern.c" +#line 1450 "tracker-sparql-pattern.c" } #line 128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 1448 "tracker-sparql-pattern.c" +#line 1454 "tracker-sparql-pattern.c" } } } @@ -1464,7 +1470,7 @@ _inner_error_ = _tmp152_; #line 148 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (sql); -#line 1463 "tracker-sparql-pattern.c" +#line 1469 "tracker-sparql-pattern.c" goto __catch0_g_error; } } @@ -1481,7 +1487,7 @@ _g_string_free0 (sql); #line 150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 1480 "tracker-sparql-pattern.c" +#line 1486 "tracker-sparql-pattern.c" } goto __finally0; __catch0_g_error: @@ -1504,7 +1510,7 @@ _inner_error_ = _tmp158_; #line 152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_error_free0 (e); -#line 1503 "tracker-sparql-pattern.c" +#line 1509 "tracker-sparql-pattern.c" goto __finally0; } __finally0: @@ -1514,7 +1520,7 @@ g_propagate_error (error, _inner_error_); #line 30 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 1513 "tracker-sparql-pattern.c" +#line 1519 "tracker-sparql-pattern.c" } else { #line 30 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -1522,7 +1528,7 @@ g_clear_error (&_inner_error_); #line 30 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 1521 "tracker-sparql-pattern.c" +#line 1527 "tracker-sparql-pattern.c" } } @@ -1533,14 +1539,14 @@ self = (TrackerSparqlPredicateVariable*) g_object_new (object_type, NULL); #line 22 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return self; -#line 1532 "tracker-sparql-pattern.c" +#line 1538 "tracker-sparql-pattern.c" } TrackerSparqlPredicateVariable* tracker_sparql_predicate_variable_new (void) { #line 22 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return tracker_sparql_predicate_variable_construct (TRACKER_SPARQL_TYPE_PREDICATE_VARIABLE); -#line 1539 "tracker-sparql-pattern.c" +#line 1545 "tracker-sparql-pattern.c" } @@ -1549,7 +1555,7 @@ tracker_sparql_predicate_variable_parent_class = g_type_class_peek_parent (klass); #line 22 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" G_OBJECT_CLASS (klass)->finalize = tracker_sparql_predicate_variable_finalize; -#line 1548 "tracker-sparql-pattern.c" +#line 1554 "tracker-sparql-pattern.c" } @@ -1569,7 +1575,7 @@ _g_object_unref0 (self->domain); #line 22 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" G_OBJECT_CLASS (tracker_sparql_predicate_variable_parent_class)->finalize (obj); -#line 1568 "tracker-sparql-pattern.c" +#line 1574 "tracker-sparql-pattern.c" } @@ -1590,30 +1596,30 @@ TrackerSparqlQuery* _tmp0_; TrackerSparqlQuery* _tmp1_; TrackerSparqlExpression* _tmp2_; -#line 173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (query != NULL, NULL); -#line 173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self = (TrackerSparqlPattern*) g_object_new (object_type, NULL); -#line 174 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = query; -#line 174 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->query = _tmp0_; -#line 175 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = query; -#line 175 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = _tmp1_->expression; -#line 175 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->expression = _tmp2_; -#line 173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return self; -#line 1605 "tracker-sparql-pattern.c" +#line 1611 "tracker-sparql-pattern.c" } TrackerSparqlPattern* tracker_sparql_pattern_new (TrackerSparqlQuery* query) { -#line 173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return tracker_sparql_pattern_construct (TRACKER_SPARQL_TYPE_PATTERN, query); -#line 1612 "tracker-sparql-pattern.c" +#line 1618 "tracker-sparql-pattern.c" } @@ -1623,38 +1629,38 @@ gboolean _tmp1_ = FALSE; gboolean _tmp2_; GError * _inner_error_ = NULL; -#line 183 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (self != NULL, FALSE); -#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = self->priv->query; -#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = tracker_sparql_query_next (_tmp0_, &_inner_error_); -#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = _tmp1_; -#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return FALSE; -#line 1638 "tracker-sparql-pattern.c" +#line 1644 "tracker-sparql-pattern.c" } else { -#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return FALSE; -#line 1646 "tracker-sparql-pattern.c" +#line 1652 "tracker-sparql-pattern.c" } } -#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = _tmp2_; -#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 1653 "tracker-sparql-pattern.c" +#line 1659 "tracker-sparql-pattern.c" } @@ -1662,17 +1668,17 @@ TrackerSparqlTokenType result = 0; TrackerSparqlQuery* _tmp0_; TrackerSparqlTokenType _tmp1_ = 0; -#line 187 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 191 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (self != NULL, 0); -#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = self->priv->query; -#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = tracker_sparql_query_current (_tmp0_); -#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = _tmp1_; -#line 188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 1671 "tracker-sparql-pattern.c" +#line 1677 "tracker-sparql-pattern.c" } @@ -1683,40 +1689,40 @@ gboolean _tmp2_ = FALSE; gboolean _tmp3_; GError * _inner_error_ = NULL; -#line 191 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (self != NULL, FALSE); -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = self->priv->query; -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = type; -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = tracker_sparql_query_accept (_tmp0_, _tmp1_, &_inner_error_); -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = _tmp2_; -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return FALSE; -#line 1700 "tracker-sparql-pattern.c" +#line 1706 "tracker-sparql-pattern.c" } else { -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return FALSE; -#line 1708 "tracker-sparql-pattern.c" +#line 1714 "tracker-sparql-pattern.c" } } -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = _tmp3_; -#line 192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 1715 "tracker-sparql-pattern.c" +#line 1721 "tracker-sparql-pattern.c" } @@ -1725,21 +1731,21 @@ TrackerSparqlQuery* _tmp0_; const gchar* _tmp1_; GError* _tmp2_ = NULL; -#line 195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 199 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (self != NULL, NULL); -#line 195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 199 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (msg != NULL, NULL); -#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = self->priv->query; -#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = msg; -#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = tracker_sparql_query_get_error (_tmp0_, _tmp1_); -#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = _tmp2_; -#line 196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 1738 "tracker-sparql-pattern.c" +#line 1744 "tracker-sparql-pattern.c" } @@ -1750,74 +1756,74 @@ gboolean _tmp2_ = FALSE; gboolean _tmp3_; GError * _inner_error_ = NULL; -#line 199 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (self != NULL, FALSE); -#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = self->priv->query; -#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = type; -#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = tracker_sparql_query_expect (_tmp0_, _tmp1_, &_inner_error_); -#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = _tmp2_; -#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return FALSE; -#line 1767 "tracker-sparql-pattern.c" +#line 1773 "tracker-sparql-pattern.c" } else { -#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return FALSE; -#line 1775 "tracker-sparql-pattern.c" +#line 1781 "tracker-sparql-pattern.c" } } -#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = _tmp3_; -#line 200 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 1782 "tracker-sparql-pattern.c" +#line 1788 "tracker-sparql-pattern.c" } static void tracker_sparql_pattern_get_location (TrackerSparqlPattern* self, TrackerSourceLocation* result) { TrackerSparqlQuery* _tmp0_; TrackerSourceLocation _tmp1_ = {0}; -#line 203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 207 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (self != NULL); -#line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = self->priv->query; -#line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_query_get_location (_tmp0_, &_tmp1_); -#line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *result = _tmp1_; -#line 204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 1799 "tracker-sparql-pattern.c" +#line 1805 "tracker-sparql-pattern.c" } static void tracker_sparql_pattern_set_location (TrackerSparqlPattern* self, TrackerSourceLocation* location) { TrackerSparqlQuery* _tmp0_; TrackerSourceLocation _tmp1_; -#line 207 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (self != NULL); -#line 207 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (location != NULL); -#line 208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = self->priv->query; -#line 208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = *location; -#line 208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_query_set_location (_tmp0_, &_tmp1_); -#line 1816 "tracker-sparql-pattern.c" +#line 1822 "tracker-sparql-pattern.c" } @@ -1826,82 +1832,82 @@ TrackerSparqlQuery* _tmp0_; gint _tmp1_; gchar* _tmp2_ = NULL; -#line 211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (self != NULL, NULL); -#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 216 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = self->priv->query; -#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 216 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = strip; -#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 216 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = tracker_sparql_query_get_last_string (_tmp0_, _tmp1_); -#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 216 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = _tmp2_; -#line 212 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 216 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 1837 "tracker-sparql-pattern.c" +#line 1843 "tracker-sparql-pattern.c" } static void _g_object_unref0_ (gpointer var) { -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" (var == NULL) ? NULL : (var = (g_object_unref (var), NULL)); -#line 1844 "tracker-sparql-pattern.c" +#line 1850 "tracker-sparql-pattern.c" } static void _g_list_free__g_object_unref0_ (GList* self) { -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_list_foreach (self, (GFunc) _g_object_unref0_, NULL); -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_list_free (self); -#line 1853 "tracker-sparql-pattern.c" +#line 1859 "tracker-sparql-pattern.c" } -static void _vala_array_add3 (TrackerPropertyType** array, int* length, int* size, TrackerPropertyType value) { -#line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +static void _vala_array_add5 (TrackerPropertyType** array, int* length, int* size, TrackerPropertyType value) { +#line 312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if ((*length) == (*size)) { -#line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *size = (*size) ? (2 * (*size)) : 4; -#line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *array = g_renew (TrackerPropertyType, *array, *size); -#line 1864 "tracker-sparql-pattern.c" +#line 1870 "tracker-sparql-pattern.c" } -#line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" (*array)[(*length)++] = value; -#line 1868 "tracker-sparql-pattern.c" +#line 1874 "tracker-sparql-pattern.c" } -static void _vala_array_add4 (gchar*** array, int* length, int* size, gchar* value) { -#line 308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +static void _vala_array_add6 (gchar*** array, int* length, int* size, gchar* value) { +#line 313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if ((*length) == (*size)) { -#line 308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *size = (*size) ? (2 * (*size)) : 4; -#line 308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *array = g_renew (gchar*, *array, (*size) + 1); -#line 1879 "tracker-sparql-pattern.c" +#line 1885 "tracker-sparql-pattern.c" } -#line 308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" (*array)[(*length)++] = value; -#line 308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" (*array)[*length] = NULL; -#line 1885 "tracker-sparql-pattern.c" +#line 1891 "tracker-sparql-pattern.c" } -static void _vala_array_add5 (TrackerPropertyType** array, int* length, int* size, TrackerPropertyType value) { -#line 319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +static void _vala_array_add7 (TrackerPropertyType** array, int* length, int* size, TrackerPropertyType value) { +#line 324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if ((*length) == (*size)) { -#line 319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *size = (*size) ? (2 * (*size)) : 4; -#line 319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *array = g_renew (TrackerPropertyType, *array, *size); -#line 1896 "tracker-sparql-pattern.c" +#line 1902 "tracker-sparql-pattern.c" } -#line 319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" (*array)[(*length)++] = value; -#line 1900 "tracker-sparql-pattern.c" +#line 1906 "tracker-sparql-pattern.c" } @@ -1945,512 +1951,520 @@ gboolean first; gboolean _tmp52_ = FALSE; gboolean _tmp53_; - GList* _tmp105_; - gboolean _tmp110_; - GString* _tmp112_; - GString* _tmp113_; - GString* _tmp114_; - const gchar* _tmp115_; - GString* _tmp116_; - TrackerSourceLocation _tmp117_; - gboolean _tmp118_ = FALSE; - gboolean _tmp119_; - gboolean _tmp151_ = FALSE; - gboolean _tmp152_; + gboolean _tmp105_ = FALSE; + gboolean _tmp106_; + gboolean _tmp108_; + GList* _tmp117_; + gboolean _tmp122_; + GString* _tmp124_; + GString* _tmp125_; + GString* _tmp126_; + const gchar* _tmp127_; + GString* _tmp128_; + TrackerSourceLocation _tmp129_; + gboolean _tmp130_ = FALSE; + gboolean _tmp131_; + gboolean _tmp163_ = FALSE; + gboolean _tmp164_; gint limit; gint offset; - gboolean _tmp173_ = FALSE; - gboolean _tmp174_; - gint _tmp193_; - TrackerSparqlContext* _tmp223_; - TrackerSparqlContext* _tmp224_; - TrackerSparqlContext* _tmp225_; - TrackerSparqlSelectContext* _tmp226_; - TrackerPropertyType _tmp227_; + gboolean _tmp185_ = FALSE; + gboolean _tmp186_; + gint _tmp205_; + gboolean _tmp235_ = FALSE; + gboolean _tmp236_ = FALSE; + gboolean _tmp237_; + gboolean _tmp239_; + gboolean _tmp241_; + TrackerSparqlContext* _tmp258_; + TrackerSparqlContext* _tmp259_; + TrackerSparqlContext* _tmp260_; + TrackerSparqlSelectContext* _tmp261_; + TrackerPropertyType _tmp262_; GError * _inner_error_ = NULL; -#line 240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (self != NULL, NULL); -#line 240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (sql != NULL, NULL); -#line 242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = scalar_subquery; -#line 242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp0_) { -#line 1975 "tracker-sparql-pattern.c" +#line 1989 "tracker-sparql-pattern.c" TrackerSparqlQuery* _tmp1_; TrackerSparqlContext* _tmp2_; TrackerSparqlContext* _tmp3_; TrackerSparqlSelectContext* _tmp4_; -#line 243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = self->priv->query; -#line 243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = tracker_sparql_pattern_get_context (self); -#line 243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = _tmp2_; -#line 243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp4_ = tracker_sparql_select_context_new_subquery (_tmp1_, _tmp3_); -#line 243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp4_; -#line 1992 "tracker-sparql-pattern.c" +#line 2006 "tracker-sparql-pattern.c" } else { TrackerSparqlQuery* _tmp5_; TrackerSparqlContext* _tmp6_; TrackerSparqlContext* _tmp7_; TrackerSparqlSelectContext* _tmp8_; -#line 245 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_ = self->priv->query; -#line 245 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp6_ = tracker_sparql_pattern_get_context (self); -#line 245 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp7_ = _tmp6_; -#line 245 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp8_ = tracker_sparql_select_context_new (_tmp5_, _tmp7_); -#line 245 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 245 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp8_; -#line 2010 "tracker-sparql-pattern.c" +#line 2024 "tracker-sparql-pattern.c" } -#line 247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp9_ = _result_; -#line 247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_context (self, (TrackerSparqlContext*) _tmp9_); -#line 248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" type = TRACKER_PROPERTY_TYPE_UNKNOWN; -#line 250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp10_ = g_string_new (""); -#line 250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" pattern_sql = _tmp10_; -#line 251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp11_ = self->priv->query; -#line 251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp12_ = _tmp11_->bindings; -#line 251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp11_->bindings = NULL; -#line 251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" old_bindings = _tmp12_; -#line 253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp13_ = sql; -#line 253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp13_, "SELECT "); -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_SELECT, &_inner_error_); -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2050 "tracker-sparql-pattern.c" +#line 2064 "tracker-sparql-pattern.c" } else { -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2064 "tracker-sparql-pattern.c" +#line 2078 "tracker-sparql-pattern.c" } } -#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp14_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_DISTINCT, &_inner_error_); -#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp15_ = _tmp14_; -#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2085 "tracker-sparql-pattern.c" +#line 2099 "tracker-sparql-pattern.c" } else { -#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2099 "tracker-sparql-pattern.c" +#line 2113 "tracker-sparql-pattern.c" } } -#line 257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp15_) { -#line 2104 "tracker-sparql-pattern.c" +#line 2118 "tracker-sparql-pattern.c" GString* _tmp16_; -#line 258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 263 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp16_ = sql; -#line 258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 263 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp16_, "DISTINCT "); -#line 2110 "tracker-sparql-pattern.c" +#line 2124 "tracker-sparql-pattern.c" } else { gboolean _tmp17_ = FALSE; gboolean _tmp18_; -#line 259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp17_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_REDUCED, &_inner_error_); -#line 259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp18_ = _tmp17_; -#line 259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2132 "tracker-sparql-pattern.c" +#line 2146 "tracker-sparql-pattern.c" } else { -#line 259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2146 "tracker-sparql-pattern.c" +#line 2160 "tracker-sparql-pattern.c" } } -#line 259 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp18_) { -#line 2151 "tracker-sparql-pattern.c" +#line 2165 "tracker-sparql-pattern.c" } } -#line 263 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_get_location (self, &_tmp19_); -#line 263 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" select_variables_location = _tmp19_; -#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp20_ = self->priv->expression; -#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_expression_skip_select_variables (_tmp20_, &_inner_error_); -#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2176 "tracker-sparql-pattern.c" +#line 2190 "tracker-sparql-pattern.c" } else { -#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 264 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2190 "tracker-sparql-pattern.c" +#line 2204 "tracker-sparql-pattern.c" } } -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp21_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_FROM, &_inner_error_); -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp22_ = _tmp21_; -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2211 "tracker-sparql-pattern.c" +#line 2225 "tracker-sparql-pattern.c" } else { -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2225 "tracker-sparql-pattern.c" +#line 2239 "tracker-sparql-pattern.c" } } -#line 266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp22_) { -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_NAMED, &_inner_error_); -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2246 "tracker-sparql-pattern.c" +#line 2260 "tracker-sparql-pattern.c" } else { -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2260 "tracker-sparql-pattern.c" +#line 2274 "tracker-sparql-pattern.c" } } -#line 268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_IRI_REF, &_inner_error_); -#line 268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2279 "tracker-sparql-pattern.c" +#line 2293 "tracker-sparql-pattern.c" } else { -#line 268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2293 "tracker-sparql-pattern.c" +#line 2307 "tracker-sparql-pattern.c" } } } -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_WHERE, &_inner_error_); -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2313 "tracker-sparql-pattern.c" +#line 2327 "tracker-sparql-pattern.c" } else { -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2327 "tracker-sparql-pattern.c" +#line 2341 "tracker-sparql-pattern.c" } } -#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp23_ = pattern_sql; -#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp24_ = tracker_sparql_pattern_translate_group_graph_pattern (self, _tmp23_, &_inner_error_); -#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" pattern = _tmp24_; -#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2350 "tracker-sparql-pattern.c" +#line 2364 "tracker-sparql-pattern.c" } else { -#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 273 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2364 "tracker-sparql-pattern.c" +#line 2378 "tracker-sparql-pattern.c" } } -#line 274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 279 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp25_ = pattern; -#line 274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 279 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp26_ = _tmp25_->var_set; -#line 274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 279 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp27_ = g_hash_table_get_keys (_tmp26_); -#line 2373 "tracker-sparql-pattern.c" +#line 2387 "tracker-sparql-pattern.c" { GList* key_collection = NULL; GList* key_it = NULL; -#line 274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 279 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" key_collection = _tmp27_; -#line 274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 279 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (key_it = key_collection; key_it != NULL; key_it = key_it->next) { -#line 2381 "tracker-sparql-pattern.c" +#line 2395 "tracker-sparql-pattern.c" TrackerSparqlVariable* key = NULL; -#line 274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 279 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" key = (TrackerSparqlVariable*) key_it->data; -#line 2385 "tracker-sparql-pattern.c" +#line 2399 "tracker-sparql-pattern.c" { TrackerSparqlContext* _tmp28_; TrackerSparqlContext* _tmp29_; GHashTable* _tmp30_; TrackerSparqlVariable* _tmp31_; TrackerSparqlVariable* _tmp32_; -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp28_ = tracker_sparql_pattern_get_context (self); -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp29_ = _tmp28_; -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp30_ = _tmp29_->var_set; -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp31_ = key; -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp32_ = _g_object_ref0 (_tmp31_); -#line 275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_hash_table_insert (_tmp30_, _tmp32_, GINT_TO_POINTER ((gint) TRACKER_SPARQL_VARIABLE_STATE_BOUND)); -#line 2404 "tracker-sparql-pattern.c" +#line 2418 "tracker-sparql-pattern.c" } } -#line 274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 279 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_list_free0 (key_collection); -#line 2409 "tracker-sparql-pattern.c" +#line 2423 "tracker-sparql-pattern.c" } -#line 279 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_get_location (self, &_tmp33_); -#line 279 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" after_where = _tmp33_; -#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp34_ = select_variables_location; -#line 280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp34_); -#line 283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp35_ = tracker_sparql_pattern_get_context (self); -#line 283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp36_ = _tmp35_; -#line 283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp37_ = _tmp36_->var_set; -#line 283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp38_ = g_hash_table_get_keys (_tmp37_); -#line 2427 "tracker-sparql-pattern.c" +#line 2441 "tracker-sparql-pattern.c" { GList* variable_collection = NULL; GList* variable_it = NULL; -#line 283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" variable_collection = _tmp38_; -#line 283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (variable_it = variable_collection; variable_it != NULL; variable_it = variable_it->next) { -#line 2435 "tracker-sparql-pattern.c" +#line 2449 "tracker-sparql-pattern.c" TrackerSparqlVariable* variable = NULL; -#line 283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" variable = (TrackerSparqlVariable*) variable_it->data; -#line 2439 "tracker-sparql-pattern.c" +#line 2453 "tracker-sparql-pattern.c" { TrackerSparqlVariable* _tmp39_; TrackerSparqlVariableBinding* _tmp40_; -#line 284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp39_ = variable; -#line 284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp40_ = _tmp39_->binding; -#line 284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp40_ == NULL) { -#line 2449 "tracker-sparql-pattern.c" +#line 2463 "tracker-sparql-pattern.c" TrackerSparqlVariable* _tmp41_; const gchar* _tmp42_; const gchar* _tmp43_; @@ -2458,158 +2472,158 @@ gchar* _tmp45_; GError* _tmp46_ = NULL; GError* _tmp47_; -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp41_ = variable; -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp42_ = tracker_sparql_variable_get_name (_tmp41_); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp43_ = _tmp42_; -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp44_ = g_strdup_printf ("use of undefined variable `%s'", _tmp43_); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp45_ = _tmp44_; -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp46_ = tracker_sparql_pattern_get_error (self, _tmp45_); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp47_ = _tmp46_; -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp45_); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _inner_error_ = _tmp47_; -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_list_free0 (variable_collection); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2491 "tracker-sparql-pattern.c" +#line 2505 "tracker-sparql-pattern.c" } else { -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_list_free0 (variable_collection); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2509 "tracker-sparql-pattern.c" +#line 2523 "tracker-sparql-pattern.c" } } } } -#line 283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_list_free0 (variable_collection); -#line 2516 "tracker-sparql-pattern.c" +#line 2530 "tracker-sparql-pattern.c" } -#line 289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp48_ = self->priv->query; -#line 289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp49_ = _tmp48_->bindings; -#line 289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp48_->bindings = NULL; -#line 289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" where_bindings = _tmp49_; -#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp50_ = self->priv->query; -#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp51_ = old_bindings; -#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" old_bindings = NULL; -#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (_tmp50_->bindings); -#line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp50_->bindings = _tmp51_; -#line 292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first = TRUE; -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp52_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_STAR, &_inner_error_); -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp53_ = _tmp52_; -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2560 "tracker-sparql-pattern.c" +#line 2574 "tracker-sparql-pattern.c" } else { -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2578 "tracker-sparql-pattern.c" +#line 2592 "tracker-sparql-pattern.c" } } -#line 293 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp53_) { -#line 2583 "tracker-sparql-pattern.c" +#line 2597 "tracker-sparql-pattern.c" TrackerSparqlContext* _tmp54_; TrackerSparqlContext* _tmp55_; GHashTable* _tmp56_; GList* _tmp57_ = NULL; -#line 294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 299 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp54_ = tracker_sparql_pattern_get_context (self); -#line 294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 299 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp55_ = _tmp54_; -#line 294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 299 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp56_ = _tmp55_->var_set; -#line 294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 299 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp57_ = g_hash_table_get_keys (_tmp56_); -#line 2596 "tracker-sparql-pattern.c" +#line 2610 "tracker-sparql-pattern.c" { GList* variable_collection = NULL; GList* variable_it = NULL; -#line 294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 299 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" variable_collection = _tmp57_; -#line 294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 299 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (variable_it = variable_collection; variable_it != NULL; variable_it = variable_it->next) { -#line 2604 "tracker-sparql-pattern.c" +#line 2618 "tracker-sparql-pattern.c" TrackerSparqlVariable* variable = NULL; -#line 294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 299 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" variable = (TrackerSparqlVariable*) variable_it->data; -#line 2608 "tracker-sparql-pattern.c" +#line 2622 "tracker-sparql-pattern.c" { gboolean _tmp58_; gboolean _tmp60_; @@ -2628,42 +2642,42 @@ const gchar* _tmp86_; const gchar* _tmp87_; gchar* _tmp88_; -#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp58_ = first; -#line 295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp58_) { -#line 2631 "tracker-sparql-pattern.c" +#line 2645 "tracker-sparql-pattern.c" GString* _tmp59_; -#line 296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp59_ = sql; -#line 296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp59_, ", "); -#line 2637 "tracker-sparql-pattern.c" +#line 2651 "tracker-sparql-pattern.c" } else { -#line 298 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first = FALSE; -#line 2641 "tracker-sparql-pattern.c" +#line 2655 "tracker-sparql-pattern.c" } -#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp60_ = subquery; -#line 300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp60_) { -#line 2647 "tracker-sparql-pattern.c" +#line 2661 "tracker-sparql-pattern.c" GString* _tmp61_; TrackerSparqlVariable* _tmp62_; const gchar* _tmp63_; const gchar* _tmp64_; -#line 302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp61_ = sql; -#line 302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp62_ = variable; -#line 302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp63_ = tracker_sparql_variable_get_sql_expression (_tmp62_); -#line 302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp64_ = _tmp63_; -#line 302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp61_, _tmp64_); -#line 2662 "tracker-sparql-pattern.c" +#line 2676 "tracker-sparql-pattern.c" } else { GString* _tmp65_; TrackerSparqlVariable* _tmp66_; @@ -2676,88 +2690,88 @@ TrackerSparqlVariable* _tmp73_; const gchar* _tmp74_; const gchar* _tmp75_; -#line 304 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp65_ = sql; -#line 304 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp66_ = variable; -#line 304 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp67_ = tracker_sparql_variable_get_sql_expression (_tmp66_); -#line 304 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp68_ = _tmp67_; -#line 304 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp69_ = variable; -#line 304 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp70_ = _tmp69_->binding; -#line 304 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp71_ = ((TrackerSparqlDataBinding*) _tmp70_)->data_type; -#line 304 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_expression_append_expression_as_string (_tmp65_, _tmp68_, _tmp71_); -#line 305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp72_ = sql; -#line 305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp73_ = variable; -#line 305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp74_ = tracker_sparql_variable_get_name (_tmp73_); -#line 305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp75_ = _tmp74_; -#line 305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 310 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp72_, " AS \"%s\"", _tmp75_); -#line 2701 "tracker-sparql-pattern.c" +#line 2715 "tracker-sparql-pattern.c" } -#line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp76_ = _result_; -#line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp77_ = _result_; -#line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp78_ = _tmp77_->types; -#line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp78__length1 = _tmp77_->types_length1; -#line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp79_ = variable; -#line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp80_ = _tmp79_->binding; -#line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp81_ = ((TrackerSparqlDataBinding*) _tmp80_)->data_type; -#line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _vala_array_add3 (&_tmp76_->types, &_tmp76_->types_length1, &_tmp76_->_types_size_, _tmp81_); -#line 308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _vala_array_add5 (&_tmp76_->types, &_tmp76_->types_length1, &_tmp76_->_types_size_, _tmp81_); +#line 313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp82_ = _result_; -#line 308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp83_ = _result_; -#line 308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp84_ = _tmp83_->variable_names; -#line 308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp84__length1 = _tmp83_->variable_names_length1; -#line 308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp85_ = variable; -#line 308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp86_ = tracker_sparql_variable_get_name (_tmp85_); -#line 308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp87_ = _tmp86_; -#line 308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp88_ = g_strdup (_tmp87_); -#line 308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _vala_array_add4 (&_tmp82_->variable_names, &_tmp82_->variable_names_length1, &_tmp82_->_variable_names_size_, _tmp88_); -#line 2737 "tracker-sparql-pattern.c" +#line 313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _vala_array_add6 (&_tmp82_->variable_names, &_tmp82_->variable_names_length1, &_tmp82_->_variable_names_size_, _tmp88_); +#line 2751 "tracker-sparql-pattern.c" } } -#line 294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 299 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_list_free0 (variable_collection); -#line 2742 "tracker-sparql-pattern.c" +#line 2756 "tracker-sparql-pattern.c" } } else { { gint i; -#line 311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" i = 0; -#line 2749 "tracker-sparql-pattern.c" +#line 2763 "tracker-sparql-pattern.c" { gboolean _tmp89_; -#line 311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp89_ = TRUE; -#line 311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" while (TRUE) { -#line 2756 "tracker-sparql-pattern.c" +#line 2770 "tracker-sparql-pattern.c" gboolean _tmp90_; gint _tmp92_; TrackerSparqlExpression* _tmp94_; @@ -2772,1455 +2786,1667 @@ gint _tmp102__length1; TrackerPropertyType _tmp103_; TrackerSparqlTokenType _tmp104_ = 0; -#line 311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp90_ = _tmp89_; -#line 311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp90_) { -#line 2775 "tracker-sparql-pattern.c" +#line 2789 "tracker-sparql-pattern.c" gint _tmp91_; -#line 311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp91_ = i; -#line 311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" i = _tmp91_ + 1; -#line 2781 "tracker-sparql-pattern.c" +#line 2795 "tracker-sparql-pattern.c" } -#line 311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp89_ = FALSE; -#line 312 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first = FALSE; -#line 314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp92_ = i; -#line 314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp92_ > 0) { -#line 2791 "tracker-sparql-pattern.c" +#line 2805 "tracker-sparql-pattern.c" GString* _tmp93_; -#line 315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp93_ = sql; -#line 315 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp93_, ", "); -#line 2797 "tracker-sparql-pattern.c" +#line 2811 "tracker-sparql-pattern.c" } -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp94_ = self->priv->expression; -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp95_ = sql; -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp96_ = subquery; -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp97_ = i; -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp98_ = tracker_sparql_expression_translate_select_expression (_tmp94_, _tmp95_, _tmp96_, _tmp97_, &_inner_error_); -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp99_ = _tmp98_; -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2829 "tracker-sparql-pattern.c" +#line 2843 "tracker-sparql-pattern.c" } else { -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2847 "tracker-sparql-pattern.c" +#line 2861 "tracker-sparql-pattern.c" } } -#line 318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" type = _tmp99_; -#line 319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp100_ = _result_; -#line 319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp101_ = _result_; -#line 319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp102_ = _tmp101_->types; -#line 319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp102__length1 = _tmp101_->types_length1; -#line 319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp103_ = type; -#line 319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _vala_array_add5 (&_tmp100_->types, &_tmp100_->types_length1, &_tmp100_->_types_size_, _tmp103_); -#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 324 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _vala_array_add7 (&_tmp100_->types, &_tmp100_->types_length1, &_tmp100_->_types_size_, _tmp103_); +#line 326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp104_ = tracker_sparql_pattern_current (self); -#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" switch (_tmp104_) { -#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_FROM: -#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_WHERE: -#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_OPEN_BRACE: -#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_GROUP: -#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_ORDER: -#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_LIMIT: -#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_OFFSET: -#line 321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_EOF: -#line 2884 "tracker-sparql-pattern.c" +#line 2898 "tracker-sparql-pattern.c" { -#line 330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 2888 "tracker-sparql-pattern.c" +#line 2902 "tracker-sparql-pattern.c" } default: { -#line 332 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 337 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" continue; -#line 2894 "tracker-sparql-pattern.c" +#line 2908 "tracker-sparql-pattern.c" } } -#line 334 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 339 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 2899 "tracker-sparql-pattern.c" +#line 2913 "tracker-sparql-pattern.c" } } } } -#line 339 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp105_ = where_bindings; -#line 2906 "tracker-sparql-pattern.c" +#line 343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp106_ = self->queries_fts_data; +#line 343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp106_) { +#line 2922 "tracker-sparql-pattern.c" + TrackerSparqlVariable* _tmp107_; +#line 343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp107_ = self->fts_subject; +#line 343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp105_ = _tmp107_ != NULL; +#line 2928 "tracker-sparql-pattern.c" + } else { +#line 343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp105_ = FALSE; +#line 2932 "tracker-sparql-pattern.c" + } +#line 343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp108_ = _tmp105_; +#line 343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp108_) { +#line 2938 "tracker-sparql-pattern.c" + gboolean _tmp109_; + GString* _tmp111_; + TrackerSparqlVariable* _tmp112_; + const gchar* _tmp113_; + const gchar* _tmp114_; + gchar* _tmp115_ = NULL; + gchar* _tmp116_; +#line 345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp109_ = first; +#line 345 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (!_tmp109_) { +#line 2950 "tracker-sparql-pattern.c" + GString* _tmp110_; +#line 346 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp110_ = sql; +#line 346 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp110_, ", "); +#line 2956 "tracker-sparql-pattern.c" + } else { +#line 348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + first = FALSE; +#line 2960 "tracker-sparql-pattern.c" + } +#line 351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp111_ = sql; +#line 351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp112_ = self->fts_subject; +#line 351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp113_ = tracker_sparql_variable_get_sql_expression (_tmp112_); +#line 351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp114_ = _tmp113_; +#line 351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp115_ = g_strdup_printf ("%s AS docid ", _tmp114_); +#line 351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp116_ = _tmp115_; +#line 351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp111_, _tmp116_); +#line 351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (_tmp116_); +#line 2978 "tracker-sparql-pattern.c" + } +#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp117_ = where_bindings; +#line 2982 "tracker-sparql-pattern.c" { GList* binding_collection = NULL; GList* binding_it = NULL; -#line 339 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - binding_collection = _tmp105_; -#line 339 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + binding_collection = _tmp117_; +#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (binding_it = binding_collection; binding_it != NULL; binding_it = binding_it->next) { -#line 2914 "tracker-sparql-pattern.c" - TrackerSparqlLiteralBinding* _tmp106_; +#line 2990 "tracker-sparql-pattern.c" + TrackerSparqlLiteralBinding* _tmp118_; TrackerSparqlLiteralBinding* binding = NULL; -#line 339 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp106_ = _g_object_ref0 ((TrackerSparqlLiteralBinding*) binding_it->data); -#line 339 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - binding = _tmp106_; -#line 2921 "tracker-sparql-pattern.c" +#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp118_ = _g_object_ref0 ((TrackerSparqlLiteralBinding*) binding_it->data); +#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + binding = _tmp118_; +#line 2997 "tracker-sparql-pattern.c" { - TrackerSparqlQuery* _tmp107_; - TrackerSparqlLiteralBinding* _tmp108_; - TrackerSparqlLiteralBinding* _tmp109_; -#line 340 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp107_ = self->priv->query; -#line 340 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp108_ = binding; -#line 340 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp109_ = _g_object_ref0 (_tmp108_); -#line 340 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp107_->bindings = g_list_append (_tmp107_->bindings, _tmp109_); -#line 339 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + TrackerSparqlQuery* _tmp119_; + TrackerSparqlLiteralBinding* _tmp120_; + TrackerSparqlLiteralBinding* _tmp121_; +#line 356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp119_ = self->priv->query; +#line 356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp120_ = binding; +#line 356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp121_ = _g_object_ref0 (_tmp120_); +#line 356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp119_->bindings = g_list_append (_tmp119_->bindings, _tmp121_); +#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (binding); -#line 2936 "tracker-sparql-pattern.c" +#line 3012 "tracker-sparql-pattern.c" } } } -#line 343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp110_ = first; -#line 343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp110_) { -#line 2944 "tracker-sparql-pattern.c" - GString* _tmp111_; -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp111_ = sql; -#line 344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append (_tmp111_, "NULL"); -#line 2950 "tracker-sparql-pattern.c" +#line 359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp122_ = first; +#line 359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp122_) { +#line 3020 "tracker-sparql-pattern.c" + GString* _tmp123_; +#line 360 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp123_ = sql; +#line 360 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp123_, "NULL"); +#line 3026 "tracker-sparql-pattern.c" } -#line 348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp112_ = sql; -#line 348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append (_tmp112_, " FROM ("); -#line 349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp113_ = sql; -#line 349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp114_ = pattern_sql; -#line 349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp115_ = _tmp114_->str; -#line 349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append (_tmp113_, _tmp115_); -#line 350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp116_ = sql; -#line 350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append (_tmp116_, ")"); -#line 352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp117_ = after_where; -#line 352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - tracker_sparql_pattern_set_location (self, &_tmp117_); -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp118_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_GROUP, &_inner_error_); -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp119_ = _tmp118_; -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp124_ = sql; +#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp124_, " FROM ("); +#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp125_ = sql; +#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp126_ = pattern_sql; +#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp127_ = _tmp126_->str; +#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp125_, _tmp127_); +#line 366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp128_ = sql; +#line 366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp128_, ")"); +#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp129_ = after_where; +#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + tracker_sparql_pattern_set_location (self, &_tmp129_); +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp130_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_GROUP, &_inner_error_); +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp131_ = _tmp130_; +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 2994 "tracker-sparql-pattern.c" +#line 3070 "tracker-sparql-pattern.c" } else { -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3012 "tracker-sparql-pattern.c" +#line 3088 "tracker-sparql-pattern.c" } } -#line 354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp119_) { -#line 3017 "tracker-sparql-pattern.c" - GString* _tmp120_; +#line 370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp131_) { +#line 3093 "tracker-sparql-pattern.c" + GString* _tmp132_; gboolean first_group; - gboolean _tmp146_ = FALSE; - gboolean _tmp147_; -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + gboolean _tmp158_ = FALSE; + gboolean _tmp159_; +#line 371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_BY, &_inner_error_); -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3042 "tracker-sparql-pattern.c" +#line 3118 "tracker-sparql-pattern.c" } else { -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 371 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3060 "tracker-sparql-pattern.c" +#line 3136 "tracker-sparql-pattern.c" } } -#line 356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp120_ = sql; -#line 356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append (_tmp120_, " GROUP BY "); -#line 357 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 372 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp132_ = sql; +#line 372 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp132_, " GROUP BY "); +#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first_group = TRUE; -#line 3069 "tracker-sparql-pattern.c" +#line 3145 "tracker-sparql-pattern.c" { - gboolean _tmp121_; -#line 358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp121_ = TRUE; -#line 358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + gboolean _tmp133_; +#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp133_ = TRUE; +#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" while (TRUE) { -#line 3076 "tracker-sparql-pattern.c" - gboolean _tmp122_; - gboolean _tmp142_; - TrackerSparqlExpression* _tmp144_; - GString* _tmp145_; -#line 358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp122_ = _tmp121_; -#line 358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (!_tmp122_) { -#line 3085 "tracker-sparql-pattern.c" - gboolean _tmp123_ = FALSE; - gboolean _tmp124_ = FALSE; - gboolean _tmp125_ = FALSE; - gboolean _tmp126_ = FALSE; - gboolean _tmp127_ = FALSE; - gboolean _tmp128_ = FALSE; - TrackerSparqlTokenType _tmp129_ = 0; - gboolean _tmp131_; - gboolean _tmp133_; - gboolean _tmp135_; - gboolean _tmp137_; - gboolean _tmp139_; - gboolean _tmp141_; -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp129_ = tracker_sparql_pattern_current (self); -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp129_ != TRACKER_SPARQL_TOKEN_TYPE_HAVING) { -#line 3103 "tracker-sparql-pattern.c" - TrackerSparqlTokenType _tmp130_ = 0; -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp130_ = tracker_sparql_pattern_current (self); -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp128_ = _tmp130_ != TRACKER_SPARQL_TOKEN_TYPE_ORDER; -#line 3109 "tracker-sparql-pattern.c" +#line 3152 "tracker-sparql-pattern.c" + gboolean _tmp134_; + gboolean _tmp154_; + TrackerSparqlExpression* _tmp156_; + GString* _tmp157_; +#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp134_ = _tmp133_; +#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (!_tmp134_) { +#line 3161 "tracker-sparql-pattern.c" + gboolean _tmp135_ = FALSE; + gboolean _tmp136_ = FALSE; + gboolean _tmp137_ = FALSE; + gboolean _tmp138_ = FALSE; + gboolean _tmp139_ = FALSE; + gboolean _tmp140_ = FALSE; + TrackerSparqlTokenType _tmp141_ = 0; + gboolean _tmp143_; + gboolean _tmp145_; + gboolean _tmp147_; + gboolean _tmp149_; + gboolean _tmp151_; + gboolean _tmp153_; +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp141_ = tracker_sparql_pattern_current (self); +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp141_ != TRACKER_SPARQL_TOKEN_TYPE_HAVING) { +#line 3179 "tracker-sparql-pattern.c" + TrackerSparqlTokenType _tmp142_ = 0; +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp142_ = tracker_sparql_pattern_current (self); +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp140_ = _tmp142_ != TRACKER_SPARQL_TOKEN_TYPE_ORDER; +#line 3185 "tracker-sparql-pattern.c" } else { -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp128_ = FALSE; -#line 3113 "tracker-sparql-pattern.c" +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp140_ = FALSE; +#line 3189 "tracker-sparql-pattern.c" } -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp131_ = _tmp128_; -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp131_) { -#line 3119 "tracker-sparql-pattern.c" - TrackerSparqlTokenType _tmp132_ = 0; -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp132_ = tracker_sparql_pattern_current (self); -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp127_ = _tmp132_ != TRACKER_SPARQL_TOKEN_TYPE_LIMIT; -#line 3125 "tracker-sparql-pattern.c" +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp143_ = _tmp140_; +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp143_) { +#line 3195 "tracker-sparql-pattern.c" + TrackerSparqlTokenType _tmp144_ = 0; +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp144_ = tracker_sparql_pattern_current (self); +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp139_ = _tmp144_ != TRACKER_SPARQL_TOKEN_TYPE_LIMIT; +#line 3201 "tracker-sparql-pattern.c" } else { -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp127_ = FALSE; -#line 3129 "tracker-sparql-pattern.c" +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp139_ = FALSE; +#line 3205 "tracker-sparql-pattern.c" } -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp133_ = _tmp127_; -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp133_) { -#line 3135 "tracker-sparql-pattern.c" - TrackerSparqlTokenType _tmp134_ = 0; -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp134_ = tracker_sparql_pattern_current (self); -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp126_ = _tmp134_ != TRACKER_SPARQL_TOKEN_TYPE_OFFSET; -#line 3141 "tracker-sparql-pattern.c" +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp145_ = _tmp139_; +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp145_) { +#line 3211 "tracker-sparql-pattern.c" + TrackerSparqlTokenType _tmp146_ = 0; +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp146_ = tracker_sparql_pattern_current (self); +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp138_ = _tmp146_ != TRACKER_SPARQL_TOKEN_TYPE_OFFSET; +#line 3217 "tracker-sparql-pattern.c" } else { -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp126_ = FALSE; -#line 3145 "tracker-sparql-pattern.c" +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp138_ = FALSE; +#line 3221 "tracker-sparql-pattern.c" } -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp135_ = _tmp126_; -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp135_) { -#line 3151 "tracker-sparql-pattern.c" - TrackerSparqlTokenType _tmp136_ = 0; -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp136_ = tracker_sparql_pattern_current (self); -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp125_ = _tmp136_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACE; -#line 3157 "tracker-sparql-pattern.c" +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp147_ = _tmp138_; +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp147_) { +#line 3227 "tracker-sparql-pattern.c" + TrackerSparqlTokenType _tmp148_ = 0; +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp148_ = tracker_sparql_pattern_current (self); +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp137_ = _tmp148_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACE; +#line 3233 "tracker-sparql-pattern.c" } else { -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp125_ = FALSE; -#line 3161 "tracker-sparql-pattern.c" +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp137_ = FALSE; +#line 3237 "tracker-sparql-pattern.c" } -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp137_ = _tmp125_; -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp137_) { -#line 3167 "tracker-sparql-pattern.c" - TrackerSparqlTokenType _tmp138_ = 0; -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp138_ = tracker_sparql_pattern_current (self); -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp124_ = _tmp138_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS; -#line 3173 "tracker-sparql-pattern.c" +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp149_ = _tmp137_; +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp149_) { +#line 3243 "tracker-sparql-pattern.c" + TrackerSparqlTokenType _tmp150_ = 0; +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp150_ = tracker_sparql_pattern_current (self); +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp136_ = _tmp150_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS; +#line 3249 "tracker-sparql-pattern.c" } else { -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp124_ = FALSE; -#line 3177 "tracker-sparql-pattern.c" +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp136_ = FALSE; +#line 3253 "tracker-sparql-pattern.c" } -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp139_ = _tmp124_; -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp139_) { -#line 3183 "tracker-sparql-pattern.c" - TrackerSparqlTokenType _tmp140_ = 0; -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp140_ = tracker_sparql_pattern_current (self); -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp123_ = _tmp140_ != TRACKER_SPARQL_TOKEN_TYPE_EOF; -#line 3189 "tracker-sparql-pattern.c" +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp151_ = _tmp136_; +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp151_) { +#line 3259 "tracker-sparql-pattern.c" + TrackerSparqlTokenType _tmp152_ = 0; +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp152_ = tracker_sparql_pattern_current (self); +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp135_ = _tmp152_ != TRACKER_SPARQL_TOKEN_TYPE_EOF; +#line 3265 "tracker-sparql-pattern.c" } else { -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp123_ = FALSE; -#line 3193 "tracker-sparql-pattern.c" +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp135_ = FALSE; +#line 3269 "tracker-sparql-pattern.c" } -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp141_ = _tmp123_; -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (!_tmp141_) { -#line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp153_ = _tmp135_; +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (!_tmp153_) { +#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 3201 "tracker-sparql-pattern.c" +#line 3277 "tracker-sparql-pattern.c" } } -#line 358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp121_ = FALSE; -#line 359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp142_ = first_group; -#line 359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp142_) { -#line 360 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp133_ = FALSE; +#line 375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp154_ = first_group; +#line 375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp154_) { +#line 376 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first_group = FALSE; -#line 3212 "tracker-sparql-pattern.c" +#line 3288 "tracker-sparql-pattern.c" } else { - GString* _tmp143_; -#line 362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp143_ = sql; -#line 362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append (_tmp143_, ", "); -#line 3219 "tracker-sparql-pattern.c" + GString* _tmp155_; +#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp155_ = sql; +#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp155_, ", "); +#line 3295 "tracker-sparql-pattern.c" } -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp144_ = self->priv->expression; -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp145_ = sql; -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - tracker_sparql_expression_translate_expression (_tmp144_, _tmp145_, &_inner_error_); -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp156_ = self->priv->expression; +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp157_ = sql; +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + tracker_sparql_expression_translate_expression (_tmp156_, _tmp157_, &_inner_error_); +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3245 "tracker-sparql-pattern.c" +#line 3321 "tracker-sparql-pattern.c" } else { -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3263 "tracker-sparql-pattern.c" +#line 3339 "tracker-sparql-pattern.c" } } } } -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp146_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_HAVING, &_inner_error_); -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp147_ = _tmp146_; -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp158_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_HAVING, &_inner_error_); +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp159_ = _tmp158_; +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3290 "tracker-sparql-pattern.c" +#line 3366 "tracker-sparql-pattern.c" } else { -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3308 "tracker-sparql-pattern.c" +#line 3384 "tracker-sparql-pattern.c" } } -#line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp147_) { -#line 3313 "tracker-sparql-pattern.c" - GString* _tmp148_; - TrackerSparqlExpression* _tmp149_; - GString* _tmp150_; -#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp148_ = sql; -#line 368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append (_tmp148_, " HAVING "); -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp149_ = self->priv->expression; -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp150_ = sql; -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - tracker_sparql_expression_translate_constraint (_tmp149_, _tmp150_, &_inner_error_); -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp159_) { +#line 3389 "tracker-sparql-pattern.c" + GString* _tmp160_; + TrackerSparqlExpression* _tmp161_; + GString* _tmp162_; +#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp160_ = sql; +#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp160_, " HAVING "); +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp161_ = self->priv->expression; +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp162_ = sql; +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + tracker_sparql_expression_translate_constraint (_tmp161_, _tmp162_, &_inner_error_); +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3345 "tracker-sparql-pattern.c" +#line 3421 "tracker-sparql-pattern.c" } else { -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3363 "tracker-sparql-pattern.c" +#line 3439 "tracker-sparql-pattern.c" } } } } -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp151_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_ORDER, &_inner_error_); -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp152_ = _tmp151_; -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp163_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_ORDER, &_inner_error_); +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp164_ = _tmp163_; +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3390 "tracker-sparql-pattern.c" +#line 3466 "tracker-sparql-pattern.c" } else { -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3408 "tracker-sparql-pattern.c" +#line 3484 "tracker-sparql-pattern.c" } } -#line 373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp152_) { -#line 3413 "tracker-sparql-pattern.c" - GString* _tmp153_; +#line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp164_) { +#line 3489 "tracker-sparql-pattern.c" + GString* _tmp165_; gboolean first_order; -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_BY, &_inner_error_); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3436 "tracker-sparql-pattern.c" +#line 3512 "tracker-sparql-pattern.c" } else { -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 374 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3454 "tracker-sparql-pattern.c" +#line 3530 "tracker-sparql-pattern.c" } } -#line 375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp153_ = sql; -#line 375 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append (_tmp153_, " ORDER BY "); -#line 376 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp165_ = sql; +#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp165_, " ORDER BY "); +#line 392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first_order = TRUE; -#line 3463 "tracker-sparql-pattern.c" +#line 3539 "tracker-sparql-pattern.c" { - gboolean _tmp154_; -#line 377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp154_ = TRUE; -#line 377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + gboolean _tmp166_; +#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp166_ = TRUE; +#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" while (TRUE) { -#line 3470 "tracker-sparql-pattern.c" - gboolean _tmp155_; - gboolean _tmp169_; - TrackerSparqlExpression* _tmp171_; - GString* _tmp172_; -#line 377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp155_ = _tmp154_; -#line 377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (!_tmp155_) { -#line 3479 "tracker-sparql-pattern.c" - gboolean _tmp156_ = FALSE; - gboolean _tmp157_ = FALSE; - gboolean _tmp158_ = FALSE; - gboolean _tmp159_ = FALSE; - TrackerSparqlTokenType _tmp160_ = 0; - gboolean _tmp162_; - gboolean _tmp164_; - gboolean _tmp166_; - gboolean _tmp168_; -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp160_ = tracker_sparql_pattern_current (self); -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp160_ != TRACKER_SPARQL_TOKEN_TYPE_LIMIT) { -#line 3493 "tracker-sparql-pattern.c" - TrackerSparqlTokenType _tmp161_ = 0; -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp161_ = tracker_sparql_pattern_current (self); -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp159_ = _tmp161_ != TRACKER_SPARQL_TOKEN_TYPE_OFFSET; -#line 3499 "tracker-sparql-pattern.c" +#line 3546 "tracker-sparql-pattern.c" + gboolean _tmp167_; + gboolean _tmp181_; + TrackerSparqlExpression* _tmp183_; + GString* _tmp184_; +#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp167_ = _tmp166_; +#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (!_tmp167_) { +#line 3555 "tracker-sparql-pattern.c" + gboolean _tmp168_ = FALSE; + gboolean _tmp169_ = FALSE; + gboolean _tmp170_ = FALSE; + gboolean _tmp171_ = FALSE; + TrackerSparqlTokenType _tmp172_ = 0; + gboolean _tmp174_; + gboolean _tmp176_; + gboolean _tmp178_; + gboolean _tmp180_; +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp172_ = tracker_sparql_pattern_current (self); +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp172_ != TRACKER_SPARQL_TOKEN_TYPE_LIMIT) { +#line 3569 "tracker-sparql-pattern.c" + TrackerSparqlTokenType _tmp173_ = 0; +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp173_ = tracker_sparql_pattern_current (self); +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp171_ = _tmp173_ != TRACKER_SPARQL_TOKEN_TYPE_OFFSET; +#line 3575 "tracker-sparql-pattern.c" } else { -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp159_ = FALSE; -#line 3503 "tracker-sparql-pattern.c" +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp171_ = FALSE; +#line 3579 "tracker-sparql-pattern.c" } -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp162_ = _tmp159_; -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp162_) { -#line 3509 "tracker-sparql-pattern.c" - TrackerSparqlTokenType _tmp163_ = 0; -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp163_ = tracker_sparql_pattern_current (self); -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp158_ = _tmp163_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACE; -#line 3515 "tracker-sparql-pattern.c" +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp174_ = _tmp171_; +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp174_) { +#line 3585 "tracker-sparql-pattern.c" + TrackerSparqlTokenType _tmp175_ = 0; +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp175_ = tracker_sparql_pattern_current (self); +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp170_ = _tmp175_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACE; +#line 3591 "tracker-sparql-pattern.c" } else { -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp158_ = FALSE; -#line 3519 "tracker-sparql-pattern.c" +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp170_ = FALSE; +#line 3595 "tracker-sparql-pattern.c" } -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp164_ = _tmp158_; -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp164_) { -#line 3525 "tracker-sparql-pattern.c" - TrackerSparqlTokenType _tmp165_ = 0; -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp165_ = tracker_sparql_pattern_current (self); -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp157_ = _tmp165_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS; -#line 3531 "tracker-sparql-pattern.c" +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp176_ = _tmp170_; +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp176_) { +#line 3601 "tracker-sparql-pattern.c" + TrackerSparqlTokenType _tmp177_ = 0; +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp177_ = tracker_sparql_pattern_current (self); +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp169_ = _tmp177_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS; +#line 3607 "tracker-sparql-pattern.c" } else { -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp157_ = FALSE; -#line 3535 "tracker-sparql-pattern.c" +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp169_ = FALSE; +#line 3611 "tracker-sparql-pattern.c" } -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp166_ = _tmp157_; -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp166_) { -#line 3541 "tracker-sparql-pattern.c" - TrackerSparqlTokenType _tmp167_ = 0; -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp167_ = tracker_sparql_pattern_current (self); -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp156_ = _tmp167_ != TRACKER_SPARQL_TOKEN_TYPE_EOF; -#line 3547 "tracker-sparql-pattern.c" +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp178_ = _tmp169_; +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp178_) { +#line 3617 "tracker-sparql-pattern.c" + TrackerSparqlTokenType _tmp179_ = 0; +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp179_ = tracker_sparql_pattern_current (self); +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp168_ = _tmp179_ != TRACKER_SPARQL_TOKEN_TYPE_EOF; +#line 3623 "tracker-sparql-pattern.c" } else { -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp156_ = FALSE; -#line 3551 "tracker-sparql-pattern.c" +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp168_ = FALSE; +#line 3627 "tracker-sparql-pattern.c" } -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp168_ = _tmp156_; -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (!_tmp168_) { -#line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp180_ = _tmp168_; +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (!_tmp180_) { +#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 3559 "tracker-sparql-pattern.c" +#line 3635 "tracker-sparql-pattern.c" } } -#line 377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp154_ = FALSE; -#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp169_ = first_order; -#line 378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp169_) { -#line 379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp166_ = FALSE; +#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp181_ = first_order; +#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp181_) { +#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first_order = FALSE; -#line 3570 "tracker-sparql-pattern.c" +#line 3646 "tracker-sparql-pattern.c" } else { - GString* _tmp170_; -#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp170_ = sql; -#line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append (_tmp170_, ", "); -#line 3577 "tracker-sparql-pattern.c" + GString* _tmp182_; +#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp182_ = sql; +#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp182_, ", "); +#line 3653 "tracker-sparql-pattern.c" } -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp171_ = self->priv->expression; -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp172_ = sql; -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - tracker_sparql_expression_translate_order_condition (_tmp171_, _tmp172_, &_inner_error_); -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp183_ = self->priv->expression; +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp184_ = sql; +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + tracker_sparql_expression_translate_order_condition (_tmp183_, _tmp184_, &_inner_error_); +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3603 "tracker-sparql-pattern.c" +#line 3679 "tracker-sparql-pattern.c" } else { -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3621 "tracker-sparql-pattern.c" +#line 3697 "tracker-sparql-pattern.c" } } } } } -#line 387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 403 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" limit = -1; -#line 388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" offset = -1; -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp173_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_LIMIT, &_inner_error_); -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp174_ = _tmp173_; -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp185_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_LIMIT, &_inner_error_); +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp186_ = _tmp185_; +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3653 "tracker-sparql-pattern.c" +#line 3729 "tracker-sparql-pattern.c" } else { -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3671 "tracker-sparql-pattern.c" +#line 3747 "tracker-sparql-pattern.c" } } -#line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp174_) { -#line 3676 "tracker-sparql-pattern.c" - gchar* _tmp175_ = NULL; - gchar* _tmp176_; - gint _tmp177_ = 0; - gboolean _tmp178_ = FALSE; - gboolean _tmp179_; -#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 406 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp186_) { +#line 3752 "tracker-sparql-pattern.c" + gchar* _tmp187_ = NULL; + gchar* _tmp188_; + gint _tmp189_ = 0; + gboolean _tmp190_ = FALSE; + gboolean _tmp191_; +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_INTEGER, &_inner_error_); -#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3702 "tracker-sparql-pattern.c" +#line 3778 "tracker-sparql-pattern.c" } else { -#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3720 "tracker-sparql-pattern.c" +#line 3796 "tracker-sparql-pattern.c" } } -#line 392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp175_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp176_ = _tmp175_; -#line 392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp177_ = atoi (_tmp176_); -#line 392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - limit = _tmp177_; -#line 392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (_tmp176_); -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp178_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OFFSET, &_inner_error_); -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp179_ = _tmp178_; -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp187_ = tracker_sparql_pattern_get_last_string (self, 0); +#line 408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp188_ = _tmp187_; +#line 408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp189_ = atoi (_tmp188_); +#line 408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + limit = _tmp189_; +#line 408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (_tmp188_); +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp190_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OFFSET, &_inner_error_); +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp191_ = _tmp190_; +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3755 "tracker-sparql-pattern.c" +#line 3831 "tracker-sparql-pattern.c" } else { -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3773 "tracker-sparql-pattern.c" +#line 3849 "tracker-sparql-pattern.c" } } -#line 393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp179_) { -#line 3778 "tracker-sparql-pattern.c" - gchar* _tmp180_ = NULL; - gchar* _tmp181_; - gint _tmp182_ = 0; -#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp191_) { +#line 3854 "tracker-sparql-pattern.c" + gchar* _tmp192_ = NULL; + gchar* _tmp193_; + gint _tmp194_ = 0; +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_INTEGER, &_inner_error_); -#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3802 "tracker-sparql-pattern.c" +#line 3878 "tracker-sparql-pattern.c" } else { -#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3820 "tracker-sparql-pattern.c" +#line 3896 "tracker-sparql-pattern.c" } } -#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp180_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp181_ = _tmp180_; -#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp182_ = atoi (_tmp181_); -#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - offset = _tmp182_; -#line 395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (_tmp181_); -#line 3833 "tracker-sparql-pattern.c" +#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp192_ = tracker_sparql_pattern_get_last_string (self, 0); +#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp193_ = _tmp192_; +#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp194_ = atoi (_tmp193_); +#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + offset = _tmp194_; +#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (_tmp193_); +#line 3909 "tracker-sparql-pattern.c" } } else { - gboolean _tmp183_ = FALSE; - gboolean _tmp184_; -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp183_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OFFSET, &_inner_error_); -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp184_ = _tmp183_; -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + gboolean _tmp195_ = FALSE; + gboolean _tmp196_; +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp195_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OFFSET, &_inner_error_); +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp196_ = _tmp195_; +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3860 "tracker-sparql-pattern.c" +#line 3936 "tracker-sparql-pattern.c" } else { -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3878 "tracker-sparql-pattern.c" +#line 3954 "tracker-sparql-pattern.c" } } -#line 397 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp184_) { -#line 3883 "tracker-sparql-pattern.c" - gchar* _tmp185_ = NULL; - gchar* _tmp186_; - gint _tmp187_ = 0; - gboolean _tmp188_ = FALSE; - gboolean _tmp189_; -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp196_) { +#line 3959 "tracker-sparql-pattern.c" + gchar* _tmp197_ = NULL; + gchar* _tmp198_; + gint _tmp199_ = 0; + gboolean _tmp200_ = FALSE; + gboolean _tmp201_; +#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_INTEGER, &_inner_error_); -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3909 "tracker-sparql-pattern.c" +#line 3985 "tracker-sparql-pattern.c" } else { -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3927 "tracker-sparql-pattern.c" +#line 4003 "tracker-sparql-pattern.c" } } -#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp185_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp186_ = _tmp185_; -#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp187_ = atoi (_tmp186_); -#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - offset = _tmp187_; -#line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (_tmp186_); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp188_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_LIMIT, &_inner_error_); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp189_ = _tmp188_; -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp197_ = tracker_sparql_pattern_get_last_string (self, 0); +#line 415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp198_ = _tmp197_; +#line 415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp199_ = atoi (_tmp198_); +#line 415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + offset = _tmp199_; +#line 415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (_tmp198_); +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp200_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_LIMIT, &_inner_error_); +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp201_ = _tmp200_; +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3962 "tracker-sparql-pattern.c" +#line 4038 "tracker-sparql-pattern.c" } else { -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 3980 "tracker-sparql-pattern.c" +#line 4056 "tracker-sparql-pattern.c" } } -#line 400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp189_) { -#line 3985 "tracker-sparql-pattern.c" - gchar* _tmp190_ = NULL; - gchar* _tmp191_; - gint _tmp192_ = 0; -#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp201_) { +#line 4061 "tracker-sparql-pattern.c" + gchar* _tmp202_ = NULL; + gchar* _tmp203_; + gint _tmp204_ = 0; +#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_INTEGER, &_inner_error_); -#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 4009 "tracker-sparql-pattern.c" +#line 4085 "tracker-sparql-pattern.c" } else { -#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 4027 "tracker-sparql-pattern.c" +#line 4103 "tracker-sparql-pattern.c" } } -#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp190_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp191_ = _tmp190_; -#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp192_ = atoi (_tmp191_); -#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - limit = _tmp192_; -#line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (_tmp191_); -#line 4040 "tracker-sparql-pattern.c" - } - } - } -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp193_ = limit; -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp193_ >= 0) { -#line 4048 "tracker-sparql-pattern.c" - GString* _tmp194_; - TrackerSparqlLiteralBinding* _tmp195_; - TrackerSparqlLiteralBinding* binding; - TrackerSparqlLiteralBinding* _tmp196_; - gint _tmp197_; - gchar* _tmp198_ = NULL; - TrackerSparqlLiteralBinding* _tmp199_; - TrackerSparqlQuery* _tmp200_; - TrackerSparqlLiteralBinding* _tmp201_; - TrackerSparqlLiteralBinding* _tmp202_; - gint _tmp203_; -#line 408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp194_ = sql; -#line 408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append (_tmp194_, " LIMIT ?"); -#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp195_ = tracker_sparql_literal_binding_new (); -#line 410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - binding = _tmp195_; -#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp196_ = binding; -#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp197_ = limit; -#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp198_ = g_strdup_printf ("%i", _tmp197_); -#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (_tmp196_->literal); -#line 411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp196_->literal = _tmp198_; -#line 412 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp199_ = binding; -#line 412 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp199_)->data_type = TRACKER_PROPERTY_TYPE_INTEGER; -#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp200_ = self->priv->query; -#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp201_ = binding; -#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp202_ = _g_object_ref0 (_tmp201_); -#line 413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp200_->bindings = g_list_append (_tmp200_->bindings, _tmp202_); -#line 415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp203_ = offset; -#line 415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp203_ >= 0) { -#line 4094 "tracker-sparql-pattern.c" - GString* _tmp204_; - TrackerSparqlLiteralBinding* _tmp205_; - TrackerSparqlLiteralBinding* _tmp206_; - gint _tmp207_; - gchar* _tmp208_ = NULL; - TrackerSparqlLiteralBinding* _tmp209_; - TrackerSparqlQuery* _tmp210_; - TrackerSparqlLiteralBinding* _tmp211_; - TrackerSparqlLiteralBinding* _tmp212_; -#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp204_ = sql; -#line 416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append (_tmp204_, " OFFSET ?"); #line 418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp205_ = tracker_sparql_literal_binding_new (); + _tmp202_ = tracker_sparql_pattern_get_last_string (self, 0); #line 418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (binding); + _tmp203_ = _tmp202_; +#line 418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp204_ = atoi (_tmp203_); #line 418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - binding = _tmp205_; -#line 419 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp206_ = binding; -#line 419 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp207_ = offset; -#line 419 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp208_ = g_strdup_printf ("%i", _tmp207_); -#line 419 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (_tmp206_->literal); -#line 419 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp206_->literal = _tmp208_; -#line 420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp209_ = binding; -#line 420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp209_)->data_type = TRACKER_PROPERTY_TYPE_INTEGER; -#line 421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp210_ = self->priv->query; -#line 421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp211_ = binding; -#line 421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp212_ = _g_object_ref0 (_tmp211_); -#line 421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp210_->bindings = g_list_append (_tmp210_->bindings, _tmp212_); -#line 4136 "tracker-sparql-pattern.c" + limit = _tmp204_; +#line 418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (_tmp203_); +#line 4116 "tracker-sparql-pattern.c" + } } -#line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (binding); -#line 4140 "tracker-sparql-pattern.c" - } else { - gint _tmp213_; + } #line 423 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp213_ = offset; + _tmp205_ = limit; #line 423 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp213_ >= 0) { -#line 4147 "tracker-sparql-pattern.c" - GString* _tmp214_; - TrackerSparqlLiteralBinding* _tmp215_; - TrackerSparqlLiteralBinding* binding; - TrackerSparqlLiteralBinding* _tmp216_; - gint _tmp217_; - gchar* _tmp218_ = NULL; - TrackerSparqlLiteralBinding* _tmp219_; - TrackerSparqlQuery* _tmp220_; - TrackerSparqlLiteralBinding* _tmp221_; - TrackerSparqlLiteralBinding* _tmp222_; + if (_tmp205_ >= 0) { +#line 4124 "tracker-sparql-pattern.c" + GString* _tmp206_; + TrackerSparqlLiteralBinding* _tmp207_; + TrackerSparqlLiteralBinding* binding; + TrackerSparqlLiteralBinding* _tmp208_; + gint _tmp209_; + gchar* _tmp210_ = NULL; + TrackerSparqlLiteralBinding* _tmp211_; + TrackerSparqlQuery* _tmp212_; + TrackerSparqlLiteralBinding* _tmp213_; + TrackerSparqlLiteralBinding* _tmp214_; + gint _tmp215_; #line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp214_ = sql; + _tmp206_ = sql; #line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append (_tmp214_, " LIMIT -1 OFFSET ?"); + g_string_append (_tmp206_, " LIMIT ?"); #line 426 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp215_ = tracker_sparql_literal_binding_new (); + _tmp207_ = tracker_sparql_literal_binding_new (); #line 426 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - binding = _tmp215_; + binding = _tmp207_; #line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp216_ = binding; + _tmp208_ = binding; #line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp217_ = offset; + _tmp209_ = limit; #line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp218_ = g_strdup_printf ("%i", _tmp217_); + _tmp210_ = g_strdup_printf ("%i", _tmp209_); #line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (_tmp216_->literal); + _g_free0 (_tmp208_->literal); #line 427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp216_->literal = _tmp218_; + _tmp208_->literal = _tmp210_; #line 428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp219_ = binding; + _tmp211_ = binding; #line 428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp219_)->data_type = TRACKER_PROPERTY_TYPE_INTEGER; + ((TrackerSparqlDataBinding*) _tmp211_)->data_type = TRACKER_PROPERTY_TYPE_INTEGER; #line 429 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp220_ = self->priv->query; + _tmp212_ = self->priv->query; #line 429 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp221_ = binding; + _tmp213_ = binding; #line 429 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp222_ = _g_object_ref0 (_tmp221_); + _tmp214_ = _g_object_ref0 (_tmp213_); #line 429 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp220_->bindings = g_list_append (_tmp220_->bindings, _tmp222_); -#line 423 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (binding); -#line 4190 "tracker-sparql-pattern.c" - } - } -#line 432 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp223_ = tracker_sparql_pattern_get_context (self); -#line 432 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp224_ = _tmp223_; + _tmp212_->bindings = g_list_append (_tmp212_->bindings, _tmp214_); +#line 431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp215_ = offset; +#line 431 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp215_ >= 0) { +#line 4170 "tracker-sparql-pattern.c" + GString* _tmp216_; + TrackerSparqlLiteralBinding* _tmp217_; + TrackerSparqlLiteralBinding* _tmp218_; + gint _tmp219_; + gchar* _tmp220_ = NULL; + TrackerSparqlLiteralBinding* _tmp221_; + TrackerSparqlQuery* _tmp222_; + TrackerSparqlLiteralBinding* _tmp223_; + TrackerSparqlLiteralBinding* _tmp224_; #line 432 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp225_ = _tmp224_->parent_context; + _tmp216_ = sql; #line 432 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - tracker_sparql_pattern_set_context (self, _tmp225_); + g_string_append (_tmp216_, " OFFSET ?"); #line 434 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp226_ = _result_; + _tmp217_ = tracker_sparql_literal_binding_new (); #line 434 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp227_ = type; + _g_object_unref0 (binding); #line 434 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp226_->type = _tmp227_; + binding = _tmp217_; +#line 435 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp218_ = binding; +#line 435 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp219_ = offset; +#line 435 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp220_ = g_strdup_printf ("%i", _tmp219_); +#line 435 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (_tmp218_->literal); +#line 435 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp218_->literal = _tmp220_; #line 436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - result = _result_; + _tmp221_ = binding; #line 436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp221_)->data_type = TRACKER_PROPERTY_TYPE_INTEGER; +#line 437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp222_ = self->priv->query; +#line 437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp223_ = binding; +#line 437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp224_ = _g_object_ref0 (_tmp223_); +#line 437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp222_->bindings = g_list_append (_tmp222_->bindings, _tmp224_); +#line 4212 "tracker-sparql-pattern.c" + } +#line 423 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (binding); +#line 4216 "tracker-sparql-pattern.c" + } else { + gint _tmp225_; +#line 439 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp225_ = offset; +#line 439 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp225_ >= 0) { +#line 4223 "tracker-sparql-pattern.c" + GString* _tmp226_; + TrackerSparqlLiteralBinding* _tmp227_; + TrackerSparqlLiteralBinding* binding; + TrackerSparqlLiteralBinding* _tmp228_; + gint _tmp229_; + gchar* _tmp230_ = NULL; + TrackerSparqlLiteralBinding* _tmp231_; + TrackerSparqlQuery* _tmp232_; + TrackerSparqlLiteralBinding* _tmp233_; + TrackerSparqlLiteralBinding* _tmp234_; +#line 440 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp226_ = sql; +#line 440 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp226_, " LIMIT -1 OFFSET ?"); +#line 442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp227_ = tracker_sparql_literal_binding_new (); +#line 442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + binding = _tmp227_; +#line 443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp228_ = binding; +#line 443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp229_ = offset; +#line 443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp230_ = g_strdup_printf ("%i", _tmp229_); +#line 443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (_tmp228_->literal); +#line 443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp228_->literal = _tmp230_; +#line 444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp231_ = binding; +#line 444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp231_)->data_type = TRACKER_PROPERTY_TYPE_INTEGER; +#line 445 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp232_ = self->priv->query; +#line 445 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp233_ = binding; +#line 445 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp234_ = _g_object_ref0 (_tmp233_); +#line 445 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp232_->bindings = g_list_append (_tmp232_->bindings, _tmp234_); +#line 439 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (binding); +#line 4266 "tracker-sparql-pattern.c" + } + } +#line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp237_ = self->queries_fts_data; +#line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp237_) { +#line 4273 "tracker-sparql-pattern.c" + GString* _tmp238_; +#line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp238_ = self->match_str; +#line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp236_ = _tmp238_ != NULL; +#line 4279 "tracker-sparql-pattern.c" + } else { +#line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp236_ = FALSE; +#line 4283 "tracker-sparql-pattern.c" + } +#line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp239_ = _tmp236_; +#line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp239_) { +#line 4289 "tracker-sparql-pattern.c" + TrackerSparqlVariable* _tmp240_; +#line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp240_ = self->fts_subject; +#line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp235_ = _tmp240_ != NULL; +#line 4295 "tracker-sparql-pattern.c" + } else { +#line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp235_ = FALSE; +#line 4299 "tracker-sparql-pattern.c" + } +#line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp241_ = _tmp235_; +#line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp241_) { +#line 4305 "tracker-sparql-pattern.c" + GString* _tmp242_; + GString* str; + gchar** _tmp243_; + gint _tmp243__length1; + GString* _tmp249_; + GString* _tmp250_; + GString* _tmp251_; + const gchar* _tmp252_; + GString* _tmp253_; + GString* _tmp254_; + const gchar* _tmp255_; + gchar* _tmp256_ = NULL; + gchar* _tmp257_; +#line 449 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp242_ = g_string_new ("SELECT "); +#line 449 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + str = _tmp242_; +#line 450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + first = TRUE; +#line 452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp243_ = self->fts_variables; +#line 452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp243__length1 = self->fts_variables_length1; +#line 4329 "tracker-sparql-pattern.c" + { + gchar** fts_var_collection = NULL; + gint fts_var_collection_length1 = 0; + gint _fts_var_collection_size_ = 0; + gint fts_var_it = 0; +#line 452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + fts_var_collection = _tmp243_; +#line 452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + fts_var_collection_length1 = _tmp243__length1; +#line 452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + for (fts_var_it = 0; fts_var_it < _tmp243__length1; fts_var_it = fts_var_it + 1) { +#line 4341 "tracker-sparql-pattern.c" + gchar* _tmp244_; + gchar* fts_var = NULL; +#line 452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp244_ = g_strdup (fts_var_collection[fts_var_it]); +#line 452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + fts_var = _tmp244_; +#line 4348 "tracker-sparql-pattern.c" + { + gboolean _tmp245_; + GString* _tmp247_; + const gchar* _tmp248_; +#line 453 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp245_ = first; +#line 453 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (!_tmp245_) { +#line 4357 "tracker-sparql-pattern.c" + GString* _tmp246_; +#line 454 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp246_ = str; +#line 454 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp246_, ", "); +#line 4363 "tracker-sparql-pattern.c" + } else { +#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + first = FALSE; +#line 4367 "tracker-sparql-pattern.c" + } +#line 459 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp247_ = str; +#line 459 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp248_ = fts_var; +#line 459 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp247_, _tmp248_); +#line 452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (fts_var); +#line 4377 "tracker-sparql-pattern.c" + } + } + } +#line 462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp249_ = str; +#line 462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp249_, " FROM fts JOIN ("); +#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp250_ = sql; +#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp251_ = str; +#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp252_ = _tmp251_->str; +#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_prepend (_tmp250_, _tmp252_); +#line 464 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp253_ = sql; +#line 464 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp254_ = self->match_str; +#line 464 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp255_ = _tmp254_->str; +#line 464 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp256_ = g_strdup_printf (") AS ranks USING (docid) WHERE fts %s", _tmp255_); +#line 464 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp257_ = _tmp256_; +#line 464 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append_printf (_tmp253_, "%s", _tmp257_); +#line 464 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (_tmp257_); +#line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_string_free0 (str); +#line 4409 "tracker-sparql-pattern.c" + } +#line 467 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp258_ = tracker_sparql_pattern_get_context (self); +#line 467 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp259_ = _tmp258_; +#line 467 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp260_ = _tmp259_->parent_context; +#line 467 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + tracker_sparql_pattern_set_context (self, _tmp260_); +#line 469 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp261_ = _result_; +#line 469 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp262_ = type; +#line 469 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp261_->type = _tmp262_; +#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_string_free0 (self->match_str); +#line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + self->match_str = NULL; +#line 471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (self->fts_subject); +#line 471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + self->fts_subject = NULL; +#line 473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + result = _result_; +#line 473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (where_bindings); -#line 436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (old_bindings); -#line 436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (pattern_sql); -#line 436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 4219 "tracker-sparql-pattern.c" +#line 4445 "tracker-sparql-pattern.c" } @@ -4249,193 +4475,193 @@ TrackerSparqlContext* _tmp34_; TrackerSparqlContext* _tmp35_; GError * _inner_error_ = NULL; -#line 439 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (self != NULL); -#line 439 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (sql != NULL); -#line 440 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_NOT, &_inner_error_); -#line 440 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" not = _tmp0_; -#line 440 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 440 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 440 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 440 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 4264 "tracker-sparql-pattern.c" +#line 4490 "tracker-sparql-pattern.c" } else { -#line 440 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 440 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 440 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 4272 "tracker-sparql-pattern.c" +#line 4498 "tracker-sparql-pattern.c" } } -#line 441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_EXISTS, &_inner_error_); -#line 441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 4285 "tracker-sparql-pattern.c" +#line 4511 "tracker-sparql-pattern.c" } else { -#line 441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 4293 "tracker-sparql-pattern.c" +#line 4519 "tracker-sparql-pattern.c" } } -#line 444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 481 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = self->priv->query; -#line 444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 481 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = tracker_sparql_pattern_get_context (self); -#line 444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 481 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = _tmp2_; -#line 444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 481 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp4_ = tracker_sparql_select_context_new_subquery (_tmp1_, _tmp3_); -#line 444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 481 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 481 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp4_; -#line 445 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_ = _result_; -#line 445 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_context (self, (TrackerSparqlContext*) _tmp5_); -#line 447 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp6_ = not; -#line 447 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp6_) { -#line 4316 "tracker-sparql-pattern.c" +#line 4542 "tracker-sparql-pattern.c" GString* _tmp7_; -#line 449 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp7_ = sql; -#line 449 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp7_, "NOT EXISTS ("); -#line 4322 "tracker-sparql-pattern.c" +#line 4548 "tracker-sparql-pattern.c" } else { GString* _tmp8_; -#line 452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 489 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp8_ = sql; -#line 452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 489 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp8_, "EXISTS ("); -#line 4329 "tracker-sparql-pattern.c" +#line 4555 "tracker-sparql-pattern.c" } -#line 455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp9_ = sql; -#line 455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp10_ = tracker_sparql_pattern_translate_group_graph_pattern (self, _tmp9_, &_inner_error_); -#line 455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" pattern = _tmp10_; -#line 455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 4347 "tracker-sparql-pattern.c" +#line 4573 "tracker-sparql-pattern.c" } else { -#line 455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 4357 "tracker-sparql-pattern.c" +#line 4583 "tracker-sparql-pattern.c" } } -#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 493 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp11_ = pattern; -#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 493 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp12_ = _tmp11_->var_set; -#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 493 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp13_ = g_hash_table_get_keys (_tmp12_); -#line 4366 "tracker-sparql-pattern.c" +#line 4592 "tracker-sparql-pattern.c" { GList* key_collection = NULL; GList* key_it = NULL; -#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 493 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" key_collection = _tmp13_; -#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 493 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (key_it = key_collection; key_it != NULL; key_it = key_it->next) { -#line 4374 "tracker-sparql-pattern.c" +#line 4600 "tracker-sparql-pattern.c" TrackerSparqlVariable* key = NULL; -#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 493 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" key = (TrackerSparqlVariable*) key_it->data; -#line 4378 "tracker-sparql-pattern.c" +#line 4604 "tracker-sparql-pattern.c" { TrackerSparqlContext* _tmp14_; TrackerSparqlContext* _tmp15_; GHashTable* _tmp16_; TrackerSparqlVariable* _tmp17_; TrackerSparqlVariable* _tmp18_; -#line 457 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp14_ = tracker_sparql_pattern_get_context (self); -#line 457 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp15_ = _tmp14_; -#line 457 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp16_ = _tmp15_->var_set; -#line 457 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp17_ = key; -#line 457 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp18_ = _g_object_ref0 (_tmp17_); -#line 457 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_hash_table_insert (_tmp16_, _tmp18_, GINT_TO_POINTER ((gint) TRACKER_SPARQL_VARIABLE_STATE_BOUND)); -#line 4397 "tracker-sparql-pattern.c" +#line 4623 "tracker-sparql-pattern.c" } } -#line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 493 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_list_free0 (key_collection); -#line 4402 "tracker-sparql-pattern.c" +#line 4628 "tracker-sparql-pattern.c" } -#line 461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp19_ = tracker_sparql_pattern_get_context (self); -#line 461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp20_ = _tmp19_; -#line 461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp21_ = _tmp20_->var_set; -#line 461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp22_ = g_hash_table_get_keys (_tmp21_); -#line 4412 "tracker-sparql-pattern.c" +#line 4638 "tracker-sparql-pattern.c" { GList* variable_collection = NULL; GList* variable_it = NULL; -#line 461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" variable_collection = _tmp22_; -#line 461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (variable_it = variable_collection; variable_it != NULL; variable_it = variable_it->next) { -#line 4420 "tracker-sparql-pattern.c" +#line 4646 "tracker-sparql-pattern.c" TrackerSparqlVariable* variable = NULL; -#line 461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" variable = (TrackerSparqlVariable*) variable_it->data; -#line 4424 "tracker-sparql-pattern.c" +#line 4650 "tracker-sparql-pattern.c" { TrackerSparqlVariable* _tmp23_; TrackerSparqlVariableBinding* _tmp24_; -#line 462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp23_ = variable; -#line 462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp24_ = _tmp23_->binding; -#line 462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp24_ == NULL) { -#line 4434 "tracker-sparql-pattern.c" +#line 4660 "tracker-sparql-pattern.c" TrackerSparqlVariable* _tmp25_; const gchar* _tmp26_; const gchar* _tmp27_; @@ -4443,76 +4669,76 @@ gchar* _tmp29_; GError* _tmp30_ = NULL; GError* _tmp31_; -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp25_ = variable; -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp26_ = tracker_sparql_variable_get_name (_tmp25_); -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp27_ = _tmp26_; -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp28_ = g_strdup_printf ("use of undefined variable `%s'", _tmp27_); -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp29_ = _tmp28_; -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp30_ = tracker_sparql_pattern_get_error (self, _tmp29_); -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp31_ = _tmp30_; -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp29_); -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _inner_error_ = _tmp31_; -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_list_free0 (variable_collection); -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 4472 "tracker-sparql-pattern.c" +#line 4698 "tracker-sparql-pattern.c" } else { -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_list_free0 (variable_collection); -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 4486 "tracker-sparql-pattern.c" +#line 4712 "tracker-sparql-pattern.c" } } } } -#line 461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_list_free0 (variable_collection); -#line 4493 "tracker-sparql-pattern.c" +#line 4719 "tracker-sparql-pattern.c" } -#line 467 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 504 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp32_ = sql; -#line 467 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 504 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp32_, ")"); -#line 469 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp33_ = tracker_sparql_pattern_get_context (self); -#line 469 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp34_ = _tmp33_; -#line 469 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp35_ = _tmp34_->parent_context; -#line 469 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_context (self, _tmp35_); -#line 439 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (pattern); -#line 439 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 4511 "tracker-sparql-pattern.c" +#line 4737 "tracker-sparql-pattern.c" } @@ -4535,7 +4761,7 @@ _tmp3_ = end; #line 1339 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" if (_tmp3_ == NULL) { -#line 4534 "tracker-sparql-pattern.c" +#line 4760 "tracker-sparql-pattern.c" glong _tmp4_; #line 1340 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp4_ = maxlen; @@ -4543,7 +4769,7 @@ result = _tmp4_; #line 1340 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" return result; -#line 4542 "tracker-sparql-pattern.c" +#line 4768 "tracker-sparql-pattern.c" } else { gchar* _tmp5_; gchar* _tmp6_; @@ -4555,7 +4781,7 @@ result = (glong) (_tmp5_ - _tmp6_); #line 1342 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" return result; -#line 4554 "tracker-sparql-pattern.c" +#line 4780 "tracker-sparql-pattern.c" } } @@ -4580,23 +4806,23 @@ _tmp1_ = offset; #line 1351 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" if (_tmp1_ >= ((glong) 0)) { -#line 4579 "tracker-sparql-pattern.c" +#line 4805 "tracker-sparql-pattern.c" glong _tmp2_; #line 1351 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp2_ = len; #line 1351 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp0_ = _tmp2_ >= ((glong) 0); -#line 4585 "tracker-sparql-pattern.c" +#line 4811 "tracker-sparql-pattern.c" } else { #line 1351 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp0_ = FALSE; -#line 4589 "tracker-sparql-pattern.c" +#line 4815 "tracker-sparql-pattern.c" } #line 1351 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp3_ = _tmp0_; #line 1351 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" if (_tmp3_) { -#line 4595 "tracker-sparql-pattern.c" +#line 4821 "tracker-sparql-pattern.c" glong _tmp4_; glong _tmp5_; glong _tmp6_ = 0L; @@ -4608,7 +4834,7 @@ _tmp6_ = string_strnlen ((gchar*) self, _tmp4_ + _tmp5_); #line 1353 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" string_length = _tmp6_; -#line 4607 "tracker-sparql-pattern.c" +#line 4833 "tracker-sparql-pattern.c" } else { gint _tmp7_; gint _tmp8_; @@ -4618,13 +4844,13 @@ _tmp8_ = _tmp7_; #line 1355 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" string_length = (glong) _tmp8_; -#line 4617 "tracker-sparql-pattern.c" +#line 4843 "tracker-sparql-pattern.c" } #line 1358 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp9_ = offset; #line 1358 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" if (_tmp9_ < ((glong) 0)) { -#line 4623 "tracker-sparql-pattern.c" +#line 4849 "tracker-sparql-pattern.c" glong _tmp10_; glong _tmp11_; glong _tmp12_; @@ -4638,7 +4864,7 @@ _tmp12_ = offset; #line 1360 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" g_return_val_if_fail (_tmp12_ >= ((glong) 0), NULL); -#line 4637 "tracker-sparql-pattern.c" +#line 4863 "tracker-sparql-pattern.c" } else { glong _tmp13_; glong _tmp14_; @@ -4648,13 +4874,13 @@ _tmp14_ = string_length; #line 1362 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" g_return_val_if_fail (_tmp13_ <= _tmp14_, NULL); -#line 4647 "tracker-sparql-pattern.c" +#line 4873 "tracker-sparql-pattern.c" } #line 1364 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp15_ = len; #line 1364 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" if (_tmp15_ < ((glong) 0)) { -#line 4653 "tracker-sparql-pattern.c" +#line 4879 "tracker-sparql-pattern.c" glong _tmp16_; glong _tmp17_; #line 1365 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" @@ -4663,7 +4889,7 @@ _tmp17_ = offset; #line 1365 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" len = _tmp16_ - _tmp17_; -#line 4662 "tracker-sparql-pattern.c" +#line 4888 "tracker-sparql-pattern.c" } #line 1367 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp18_ = offset; @@ -4683,7 +4909,7 @@ result = _tmp23_; #line 1368 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" return result; -#line 4682 "tracker-sparql-pattern.c" +#line 4908 "tracker-sparql-pattern.c" } @@ -4694,109 +4920,109 @@ gchar* _result_; TrackerSparqlTokenType _tmp1_ = 0; GError * _inner_error_ = NULL; -#line 472 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 509 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (self != NULL, NULL); -#line 473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 510 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = g_strdup (""); -#line 473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 510 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp0_; -#line 474 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _vala_is_var = FALSE; -#line 475 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = tracker_sparql_pattern_current (self); -#line 475 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp1_ == TRACKER_SPARQL_TOKEN_TYPE_VAR) { -#line 4705 "tracker-sparql-pattern.c" +#line 4931 "tracker-sparql-pattern.c" gchar* _tmp2_ = NULL; gchar* _tmp3_; gchar* _tmp4_ = NULL; -#line 476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 513 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _vala_is_var = TRUE; -#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_next (self, &_inner_error_); -#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 4723 "tracker-sparql-pattern.c" +#line 4949 "tracker-sparql-pattern.c" } else { -#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 4733 "tracker-sparql-pattern.c" +#line 4959 "tracker-sparql-pattern.c" } } -#line 478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 515 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 515 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = _tmp2_; -#line 478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 515 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp4_ = string_substring (_tmp3_, (glong) 1, (glong) (-1)); -#line 478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 515 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 515 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp4_; -#line 478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 515 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp3_); -#line 4748 "tracker-sparql-pattern.c" +#line 4974 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp5_ = 0; -#line 479 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 516 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_ = tracker_sparql_pattern_current (self); -#line 479 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 516 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp5_ == TRACKER_SPARQL_TOKEN_TYPE_IRI_REF) { -#line 4755 "tracker-sparql-pattern.c" +#line 4981 "tracker-sparql-pattern.c" gchar* _tmp6_ = NULL; -#line 480 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_next (self, &_inner_error_); -#line 480 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 480 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 480 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 480 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 480 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 4769 "tracker-sparql-pattern.c" +#line 4995 "tracker-sparql-pattern.c" } else { -#line 480 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 480 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 480 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 480 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 4779 "tracker-sparql-pattern.c" +#line 5005 "tracker-sparql-pattern.c" } } -#line 481 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp6_ = tracker_sparql_pattern_get_last_string (self, 1); -#line 481 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 481 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp6_; -#line 4788 "tracker-sparql-pattern.c" +#line 5014 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp7_ = 0; -#line 482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp7_ = tracker_sparql_pattern_current (self); -#line 482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp7_ == TRACKER_SPARQL_TOKEN_TYPE_PN_PREFIX) { -#line 4795 "tracker-sparql-pattern.c" +#line 5021 "tracker-sparql-pattern.c" gchar* _tmp8_ = NULL; gchar* ns; TrackerSparqlQuery* _tmp9_; @@ -4808,127 +5034,127 @@ gchar* _tmp15_ = NULL; gchar* _tmp16_; gchar* _tmp17_; -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 521 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_next (self, &_inner_error_); -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 521 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 521 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 521 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 521 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 521 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 4819 "tracker-sparql-pattern.c" +#line 5045 "tracker-sparql-pattern.c" } else { -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 521 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 521 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 521 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 521 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 4829 "tracker-sparql-pattern.c" +#line 5055 "tracker-sparql-pattern.c" } } -#line 485 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 522 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp8_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 485 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 522 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" ns = _tmp8_; -#line 486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COLON, &_inner_error_); -#line 486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (ns); -#line 486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 4850 "tracker-sparql-pattern.c" +#line 5076 "tracker-sparql-pattern.c" } else { -#line 486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (ns); -#line 486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 4862 "tracker-sparql-pattern.c" +#line 5088 "tracker-sparql-pattern.c" } } -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp9_ = self->priv->query; -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp10_ = ns; -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp11_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp12_ = _tmp11_; -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp13_ = string_substring (_tmp12_, (glong) 1, (glong) (-1)); -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp14_ = _tmp13_; -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp15_ = tracker_sparql_query_resolve_prefixed_name (_tmp9_, _tmp10_, _tmp14_, &_inner_error_); -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp16_ = _tmp15_; -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp14_); -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp12_); -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp17_ = _tmp16_; -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (ns); -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 4899 "tracker-sparql-pattern.c" +#line 5125 "tracker-sparql-pattern.c" } else { -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (ns); -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 4911 "tracker-sparql-pattern.c" +#line 5137 "tracker-sparql-pattern.c" } } -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 487 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp17_; -#line 482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (ns); -#line 4920 "tracker-sparql-pattern.c" +#line 5146 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp18_ = 0; -#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 525 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp18_ = tracker_sparql_pattern_current (self); -#line 488 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 525 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp18_ == TRACKER_SPARQL_TOKEN_TYPE_COLON) { -#line 4927 "tracker-sparql-pattern.c" +#line 5153 "tracker-sparql-pattern.c" TrackerSparqlQuery* _tmp19_; gchar* _tmp20_ = NULL; gchar* _tmp21_; @@ -4937,547 +5163,547 @@ gchar* _tmp24_ = NULL; gchar* _tmp25_; gchar* _tmp26_; -#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_next (self, &_inner_error_); -#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 4948 "tracker-sparql-pattern.c" +#line 5174 "tracker-sparql-pattern.c" } else { -#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 4958 "tracker-sparql-pattern.c" +#line 5184 "tracker-sparql-pattern.c" } } -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp19_ = self->priv->query; -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp20_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp21_ = _tmp20_; -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp22_ = string_substring (_tmp21_, (glong) 1, (glong) (-1)); -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp23_ = _tmp22_; -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp24_ = tracker_sparql_query_resolve_prefixed_name (_tmp19_, "", _tmp23_, &_inner_error_); -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp25_ = _tmp24_; -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp23_); -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp21_); -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp26_ = _tmp25_; -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 4991 "tracker-sparql-pattern.c" +#line 5217 "tracker-sparql-pattern.c" } else { -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5001 "tracker-sparql-pattern.c" +#line 5227 "tracker-sparql-pattern.c" } } -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp26_; -#line 5008 "tracker-sparql-pattern.c" +#line 5234 "tracker-sparql-pattern.c" } else { gboolean _tmp27_ = FALSE; gboolean _tmp28_; -#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp27_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_BLANK_NODE, &_inner_error_); -#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp28_ = _tmp27_; -#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5026 "tracker-sparql-pattern.c" +#line 5252 "tracker-sparql-pattern.c" } else { -#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5036 "tracker-sparql-pattern.c" +#line 5262 "tracker-sparql-pattern.c" } } -#line 492 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp28_) { -#line 5041 "tracker-sparql-pattern.c" +#line 5267 "tracker-sparql-pattern.c" TrackerSparqlQuery* _tmp29_; gchar* _tmp30_ = NULL; gchar* _tmp31_; gchar* _tmp32_ = NULL; gchar* _tmp33_; gchar* _tmp34_ = NULL; -#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 531 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COLON, &_inner_error_); -#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 531 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 531 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 531 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 531 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 531 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5060 "tracker-sparql-pattern.c" +#line 5286 "tracker-sparql-pattern.c" } else { -#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 531 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 531 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 531 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 531 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5070 "tracker-sparql-pattern.c" +#line 5296 "tracker-sparql-pattern.c" } } -#line 495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp29_ = self->priv->query; -#line 495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp30_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp31_ = _tmp30_; -#line 495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp32_ = string_substring (_tmp31_, (glong) 1, (glong) (-1)); -#line 495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp33_ = _tmp32_; -#line 495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp34_ = tracker_sparql_query_generate_bnodeid (_tmp29_, _tmp33_); -#line 495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp34_; -#line 495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp33_); -#line 495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp31_); -#line 5093 "tracker-sparql-pattern.c" +#line 5319 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp35_ = 0; -#line 496 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 533 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp35_ = tracker_sparql_pattern_current (self); -#line 496 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 533 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp35_ == TRACKER_SPARQL_TOKEN_TYPE_STRING_LITERAL1) { -#line 5100 "tracker-sparql-pattern.c" +#line 5326 "tracker-sparql-pattern.c" TrackerSparqlExpression* _tmp36_; gchar* _tmp37_ = NULL; gchar* _tmp38_; -#line 497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp36_ = self->priv->expression; -#line 497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp37_ = tracker_sparql_expression_parse_string_literal (_tmp36_, NULL, &_inner_error_); -#line 497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp38_ = _tmp37_; -#line 497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5120 "tracker-sparql-pattern.c" +#line 5346 "tracker-sparql-pattern.c" } else { -#line 497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5130 "tracker-sparql-pattern.c" +#line 5356 "tracker-sparql-pattern.c" } } -#line 497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp38_; -#line 5137 "tracker-sparql-pattern.c" +#line 5363 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp39_ = 0; -#line 498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 535 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp39_ = tracker_sparql_pattern_current (self); -#line 498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 535 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp39_ == TRACKER_SPARQL_TOKEN_TYPE_STRING_LITERAL2) { -#line 5144 "tracker-sparql-pattern.c" +#line 5370 "tracker-sparql-pattern.c" TrackerSparqlExpression* _tmp40_; gchar* _tmp41_ = NULL; gchar* _tmp42_; -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 536 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp40_ = self->priv->expression; -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 536 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp41_ = tracker_sparql_expression_parse_string_literal (_tmp40_, NULL, &_inner_error_); -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 536 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp42_ = _tmp41_; -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 536 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 536 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 536 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 536 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 536 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5164 "tracker-sparql-pattern.c" +#line 5390 "tracker-sparql-pattern.c" } else { -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 536 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 536 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 536 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 536 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5174 "tracker-sparql-pattern.c" +#line 5400 "tracker-sparql-pattern.c" } } -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 536 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 536 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp42_; -#line 5181 "tracker-sparql-pattern.c" +#line 5407 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp43_ = 0; -#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp43_ = tracker_sparql_pattern_current (self); -#line 500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp43_ == TRACKER_SPARQL_TOKEN_TYPE_STRING_LITERAL_LONG1) { -#line 5188 "tracker-sparql-pattern.c" +#line 5414 "tracker-sparql-pattern.c" TrackerSparqlExpression* _tmp44_; gchar* _tmp45_ = NULL; gchar* _tmp46_; -#line 501 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp44_ = self->priv->expression; -#line 501 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp45_ = tracker_sparql_expression_parse_string_literal (_tmp44_, NULL, &_inner_error_); -#line 501 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp46_ = _tmp45_; -#line 501 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 501 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 501 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 501 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 501 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5208 "tracker-sparql-pattern.c" +#line 5434 "tracker-sparql-pattern.c" } else { -#line 501 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 501 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 501 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 501 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5218 "tracker-sparql-pattern.c" +#line 5444 "tracker-sparql-pattern.c" } } -#line 501 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 501 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp46_; -#line 5225 "tracker-sparql-pattern.c" +#line 5451 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp47_ = 0; -#line 502 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp47_ = tracker_sparql_pattern_current (self); -#line 502 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp47_ == TRACKER_SPARQL_TOKEN_TYPE_STRING_LITERAL_LONG2) { -#line 5232 "tracker-sparql-pattern.c" +#line 5458 "tracker-sparql-pattern.c" TrackerSparqlExpression* _tmp48_; gchar* _tmp49_ = NULL; gchar* _tmp50_; -#line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp48_ = self->priv->expression; -#line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp49_ = tracker_sparql_expression_parse_string_literal (_tmp48_, NULL, &_inner_error_); -#line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp50_ = _tmp49_; -#line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5252 "tracker-sparql-pattern.c" +#line 5478 "tracker-sparql-pattern.c" } else { -#line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5262 "tracker-sparql-pattern.c" +#line 5488 "tracker-sparql-pattern.c" } } -#line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp50_; -#line 5269 "tracker-sparql-pattern.c" +#line 5495 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp51_ = 0; -#line 504 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 541 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp51_ = tracker_sparql_pattern_current (self); -#line 504 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 541 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp51_ == TRACKER_SPARQL_TOKEN_TYPE_INTEGER) { -#line 5276 "tracker-sparql-pattern.c" +#line 5502 "tracker-sparql-pattern.c" gchar* _tmp52_ = NULL; -#line 505 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_next (self, &_inner_error_); -#line 505 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 505 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 505 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 505 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 505 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5290 "tracker-sparql-pattern.c" +#line 5516 "tracker-sparql-pattern.c" } else { -#line 505 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 505 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 505 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 505 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5300 "tracker-sparql-pattern.c" +#line 5526 "tracker-sparql-pattern.c" } } -#line 506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 543 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp52_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 543 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 543 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp52_; -#line 5309 "tracker-sparql-pattern.c" +#line 5535 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp53_ = 0; -#line 507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp53_ = tracker_sparql_pattern_current (self); -#line 507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp53_ == TRACKER_SPARQL_TOKEN_TYPE_DECIMAL) { -#line 5316 "tracker-sparql-pattern.c" +#line 5542 "tracker-sparql-pattern.c" gchar* _tmp54_ = NULL; -#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_next (self, &_inner_error_); -#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5330 "tracker-sparql-pattern.c" +#line 5556 "tracker-sparql-pattern.c" } else { -#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5340 "tracker-sparql-pattern.c" +#line 5566 "tracker-sparql-pattern.c" } } -#line 509 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp54_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 509 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 509 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp54_; -#line 5349 "tracker-sparql-pattern.c" +#line 5575 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp55_ = 0; -#line 510 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 547 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp55_ = tracker_sparql_pattern_current (self); -#line 510 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 547 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp55_ == TRACKER_SPARQL_TOKEN_TYPE_DOUBLE) { -#line 5356 "tracker-sparql-pattern.c" +#line 5582 "tracker-sparql-pattern.c" gchar* _tmp56_ = NULL; -#line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_next (self, &_inner_error_); -#line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5370 "tracker-sparql-pattern.c" +#line 5596 "tracker-sparql-pattern.c" } else { -#line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5380 "tracker-sparql-pattern.c" +#line 5606 "tracker-sparql-pattern.c" } } -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp56_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp56_; -#line 5389 "tracker-sparql-pattern.c" +#line 5615 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp57_ = 0; -#line 513 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 550 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp57_ = tracker_sparql_pattern_current (self); -#line 513 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 550 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp57_ == TRACKER_SPARQL_TOKEN_TYPE_TRUE) { -#line 5396 "tracker-sparql-pattern.c" +#line 5622 "tracker-sparql-pattern.c" gchar* _tmp58_; -#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_next (self, &_inner_error_); -#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5410 "tracker-sparql-pattern.c" +#line 5636 "tracker-sparql-pattern.c" } else { -#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5420 "tracker-sparql-pattern.c" +#line 5646 "tracker-sparql-pattern.c" } } -#line 515 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 552 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp58_ = g_strdup ("true"); -#line 515 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 552 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 515 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 552 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp58_; -#line 5429 "tracker-sparql-pattern.c" +#line 5655 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp59_ = 0; -#line 516 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp59_ = tracker_sparql_pattern_current (self); -#line 516 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp59_ == TRACKER_SPARQL_TOKEN_TYPE_FALSE) { -#line 5436 "tracker-sparql-pattern.c" +#line 5662 "tracker-sparql-pattern.c" gchar* _tmp60_; -#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_next (self, &_inner_error_); -#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5450 "tracker-sparql-pattern.c" +#line 5676 "tracker-sparql-pattern.c" } else { -#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5460 "tracker-sparql-pattern.c" +#line 5686 "tracker-sparql-pattern.c" } } -#line 518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp60_ = g_strdup ("false"); -#line 518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp60_; -#line 5469 "tracker-sparql-pattern.c" +#line 5695 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp61_ = 0; -#line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 556 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp61_ = tracker_sparql_pattern_current (self); -#line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 556 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp61_ == TRACKER_SPARQL_TOKEN_TYPE_OPEN_BRACKET) { -#line 5476 "tracker-sparql-pattern.c" +#line 5702 "tracker-sparql-pattern.c" TrackerSparqlQuery* _tmp62_; gchar* _tmp63_ = NULL; const gchar* _tmp64_; @@ -5491,161 +5717,161 @@ const gchar* _tmp70_; gchar* _tmp71_; gboolean _tmp72_; -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_next (self, &_inner_error_); -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5502 "tracker-sparql-pattern.c" +#line 5728 "tracker-sparql-pattern.c" } else { -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5512 "tracker-sparql-pattern.c" +#line 5738 "tracker-sparql-pattern.c" } } -#line 522 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp62_ = self->priv->query; -#line 522 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp63_ = tracker_sparql_query_generate_bnodeid (_tmp62_, NULL); -#line 522 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 522 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp63_; -#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp64_ = self->priv->current_subject; -#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp65_ = g_strdup (_tmp64_); -#line 524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" old_subject = _tmp65_; -#line 525 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 562 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp66_ = self->priv->current_subject_is_var; -#line 525 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 562 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" old_subject_is_var = _tmp66_; -#line 527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp67_ = _result_; -#line 527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp68_ = g_strdup (_tmp67_); -#line 527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (self->priv->current_subject); -#line 527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_subject = _tmp68_; -#line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 565 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_subject_is_var = TRUE; -#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp69_ = sql; -#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_parse_property_list_not_empty (self, _tmp69_, FALSE, &_inner_error_); -#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_subject); -#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5559 "tracker-sparql-pattern.c" +#line 5785 "tracker-sparql-pattern.c" } else { -#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_subject); -#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5571 "tracker-sparql-pattern.c" +#line 5797 "tracker-sparql-pattern.c" } } -#line 530 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACKET, &_inner_error_); -#line 530 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 530 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 530 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 530 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_subject); -#line 530 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 530 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5588 "tracker-sparql-pattern.c" +#line 5814 "tracker-sparql-pattern.c" } else { -#line 530 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_subject); -#line 530 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 530 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 530 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 530 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5600 "tracker-sparql-pattern.c" +#line 5826 "tracker-sparql-pattern.c" } } -#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp70_ = old_subject; -#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp71_ = g_strdup (_tmp70_); -#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (self->priv->current_subject); -#line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_subject = _tmp71_; -#line 533 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp72_ = old_subject_is_var; -#line 533 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_subject_is_var = _tmp72_; -#line 535 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _vala_is_var = TRUE; -#line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 556 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_subject); -#line 5619 "tracker-sparql-pattern.c" +#line 5845 "tracker-sparql-pattern.c" } else { GError* _tmp73_ = NULL; -#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 574 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp73_ = tracker_sparql_pattern_get_error (self, "expected variable or term"); -#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 574 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _inner_error_ = _tmp73_; -#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 574 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 574 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 574 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 574 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5634 "tracker-sparql-pattern.c" +#line 5860 "tracker-sparql-pattern.c" } else { -#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 574 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_result_); -#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 574 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 574 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 574 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 5644 "tracker-sparql-pattern.c" +#line 5870 "tracker-sparql-pattern.c" } } } @@ -5662,103 +5888,103 @@ } } } -#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = _result_; -#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (is_var) { -#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *is_var = _vala_is_var; -#line 5667 "tracker-sparql-pattern.c" +#line 5893 "tracker-sparql-pattern.c" } -#line 539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 5671 "tracker-sparql-pattern.c" +#line 5897 "tracker-sparql-pattern.c" } static void tracker_sparql_pattern_parse_object_list (TrackerSparqlPattern* self, GString* sql, gboolean in_simple_optional, GError** error) { GError * _inner_error_ = NULL; -#line 542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 579 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (self != NULL); -#line 542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 579 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (sql != NULL); -#line 543 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" while (TRUE) { -#line 5683 "tracker-sparql-pattern.c" +#line 5909 "tracker-sparql-pattern.c" GString* _tmp0_; gboolean _tmp1_; gboolean _tmp2_ = FALSE; gboolean _tmp3_; -#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = sql; -#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = in_simple_optional; -#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_parse_object (self, _tmp0_, _tmp1_, &_inner_error_); -#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 5702 "tracker-sparql-pattern.c" +#line 5928 "tracker-sparql-pattern.c" } else { -#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 581 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 5710 "tracker-sparql-pattern.c" +#line 5936 "tracker-sparql-pattern.c" } } -#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_COMMA, &_inner_error_); -#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = _tmp2_; -#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 5725 "tracker-sparql-pattern.c" +#line 5951 "tracker-sparql-pattern.c" } else { -#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 5733 "tracker-sparql-pattern.c" +#line 5959 "tracker-sparql-pattern.c" } } -#line 545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp3_) { -#line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 583 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" continue; -#line 5740 "tracker-sparql-pattern.c" +#line 5966 "tracker-sparql-pattern.c" } -#line 548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 585 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 5744 "tracker-sparql-pattern.c" +#line 5970 "tracker-sparql-pattern.c" } } static void tracker_sparql_pattern_parse_property_list_not_empty (TrackerSparqlPattern* self, GString* sql, gboolean in_simple_optional, GError** error) { GError * _inner_error_ = NULL; -#line 552 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 589 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (self != NULL); -#line 552 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 589 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (sql != NULL); -#line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 590 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" while (TRUE) { -#line 5757 "tracker-sparql-pattern.c" +#line 5983 "tracker-sparql-pattern.c" const gchar* _tmp0_; gchar* _tmp1_; gchar* old_predicate; @@ -5772,117 +5998,117 @@ gboolean _tmp36_; gboolean _tmp37_ = FALSE; gboolean _tmp38_; -#line 554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 591 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = self->priv->current_predicate; -#line 554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 591 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = g_strdup (_tmp0_); -#line 554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 591 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" old_predicate = _tmp1_; -#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = self->priv->current_predicate_is_var; -#line 555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" old_predicate_is_var = _tmp2_; -#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 594 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (self->priv->current_predicate); -#line 557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 594 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_predicate = NULL; -#line 558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 595 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_predicate_is_var = FALSE; -#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = tracker_sparql_pattern_current (self); -#line 559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp3_ == TRACKER_SPARQL_TOKEN_TYPE_VAR) { -#line 5791 "tracker-sparql-pattern.c" +#line 6017 "tracker-sparql-pattern.c" gchar* _tmp4_ = NULL; gchar* _tmp5_; gchar* _tmp6_ = NULL; -#line 560 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_predicate_is_var = TRUE; -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_next (self, &_inner_error_); -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 5809 "tracker-sparql-pattern.c" +#line 6035 "tracker-sparql-pattern.c" } else { -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 5819 "tracker-sparql-pattern.c" +#line 6045 "tracker-sparql-pattern.c" } } -#line 562 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 599 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp4_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 562 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 599 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_ = _tmp4_; -#line 562 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 599 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp6_ = string_substring (_tmp5_, (glong) 1, (glong) (-1)); -#line 562 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 599 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (self->priv->current_predicate); -#line 562 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 599 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_predicate = _tmp6_; -#line 562 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 599 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp5_); -#line 5834 "tracker-sparql-pattern.c" +#line 6060 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp7_ = 0; -#line 563 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp7_ = tracker_sparql_pattern_current (self); -#line 563 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp7_ == TRACKER_SPARQL_TOKEN_TYPE_IRI_REF) { -#line 5841 "tracker-sparql-pattern.c" +#line 6067 "tracker-sparql-pattern.c" gchar* _tmp8_ = NULL; -#line 564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_next (self, &_inner_error_); -#line 564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 5855 "tracker-sparql-pattern.c" +#line 6081 "tracker-sparql-pattern.c" } else { -#line 564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 5865 "tracker-sparql-pattern.c" +#line 6091 "tracker-sparql-pattern.c" } } -#line 565 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp8_ = tracker_sparql_pattern_get_last_string (self, 1); -#line 565 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (self->priv->current_predicate); -#line 565 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_predicate = _tmp8_; -#line 5874 "tracker-sparql-pattern.c" +#line 6100 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp9_ = 0; -#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 603 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp9_ = tracker_sparql_pattern_current (self); -#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 603 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp9_ == TRACKER_SPARQL_TOKEN_TYPE_PN_PREFIX) { -#line 5881 "tracker-sparql-pattern.c" +#line 6107 "tracker-sparql-pattern.c" gchar* _tmp10_ = NULL; gchar* ns; TrackerSparqlQuery* _tmp11_; @@ -5894,127 +6120,127 @@ gchar* _tmp17_ = NULL; gchar* _tmp18_; gchar* _tmp19_; -#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_next (self, &_inner_error_); -#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 5905 "tracker-sparql-pattern.c" +#line 6131 "tracker-sparql-pattern.c" } else { -#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 5915 "tracker-sparql-pattern.c" +#line 6141 "tracker-sparql-pattern.c" } } -#line 568 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 605 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp10_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 568 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 605 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" ns = _tmp10_; -#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COLON, &_inner_error_); -#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (ns); -#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 5936 "tracker-sparql-pattern.c" +#line 6162 "tracker-sparql-pattern.c" } else { -#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (ns); -#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 606 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 5948 "tracker-sparql-pattern.c" +#line 6174 "tracker-sparql-pattern.c" } } -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp11_ = self->priv->query; -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp12_ = ns; -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp13_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp14_ = _tmp13_; -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp15_ = string_substring (_tmp14_, (glong) 1, (glong) (-1)); -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp16_ = _tmp15_; -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp17_ = tracker_sparql_query_resolve_prefixed_name (_tmp11_, _tmp12_, _tmp16_, &_inner_error_); -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp18_ = _tmp17_; -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp16_); -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp14_); -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp19_ = _tmp18_; -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (ns); -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 5985 "tracker-sparql-pattern.c" +#line 6211 "tracker-sparql-pattern.c" } else { -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (ns); -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 5997 "tracker-sparql-pattern.c" +#line 6223 "tracker-sparql-pattern.c" } } -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (self->priv->current_predicate); -#line 570 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 607 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_predicate = _tmp19_; -#line 566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 603 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (ns); -#line 6006 "tracker-sparql-pattern.c" +#line 6232 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp20_ = 0; -#line 571 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 608 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp20_ = tracker_sparql_pattern_current (self); -#line 571 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 608 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp20_ == TRACKER_SPARQL_TOKEN_TYPE_COLON) { -#line 6013 "tracker-sparql-pattern.c" +#line 6239 "tracker-sparql-pattern.c" TrackerSparqlQuery* _tmp21_; gchar* _tmp22_ = NULL; gchar* _tmp23_; @@ -6023,243 +6249,243 @@ gchar* _tmp26_ = NULL; gchar* _tmp27_; gchar* _tmp28_; -#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 609 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_next (self, &_inner_error_); -#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 609 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 609 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 609 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 609 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 609 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6034 "tracker-sparql-pattern.c" +#line 6260 "tracker-sparql-pattern.c" } else { -#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 609 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 609 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 609 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 609 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6044 "tracker-sparql-pattern.c" +#line 6270 "tracker-sparql-pattern.c" } } -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp21_ = self->priv->query; -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp22_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp23_ = _tmp22_; -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp24_ = string_substring (_tmp23_, (glong) 1, (glong) (-1)); -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp25_ = _tmp24_; -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp26_ = tracker_sparql_query_resolve_prefixed_name (_tmp21_, "", _tmp25_, &_inner_error_); -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp27_ = _tmp26_; -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp25_); -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp23_); -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp28_ = _tmp27_; -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6077 "tracker-sparql-pattern.c" +#line 6303 "tracker-sparql-pattern.c" } else { -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6087 "tracker-sparql-pattern.c" +#line 6313 "tracker-sparql-pattern.c" } } -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (self->priv->current_predicate); -#line 573 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_predicate = _tmp28_; -#line 6094 "tracker-sparql-pattern.c" +#line 6320 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp29_ = 0; -#line 574 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 611 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp29_ = tracker_sparql_pattern_current (self); -#line 574 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 611 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp29_ == TRACKER_SPARQL_TOKEN_TYPE_A) { -#line 6101 "tracker-sparql-pattern.c" +#line 6327 "tracker-sparql-pattern.c" gchar* _tmp30_; -#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 612 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_next (self, &_inner_error_); -#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 612 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 612 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 612 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 612 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 612 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6115 "tracker-sparql-pattern.c" +#line 6341 "tracker-sparql-pattern.c" } else { -#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 612 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 612 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 612 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 612 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6125 "tracker-sparql-pattern.c" +#line 6351 "tracker-sparql-pattern.c" } } -#line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 613 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp30_ = g_strdup ("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"); -#line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 613 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (self->priv->current_predicate); -#line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 613 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_predicate = _tmp30_; -#line 6134 "tracker-sparql-pattern.c" +#line 6360 "tracker-sparql-pattern.c" } else { GError* _tmp31_ = NULL; -#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 615 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp31_ = tracker_sparql_pattern_get_error (self, "expected non-empty property list"); -#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 615 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _inner_error_ = _tmp31_; -#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 615 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 615 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 615 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 615 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6149 "tracker-sparql-pattern.c" +#line 6375 "tracker-sparql-pattern.c" } else { -#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 615 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 615 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 615 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 578 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 615 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6159 "tracker-sparql-pattern.c" +#line 6385 "tracker-sparql-pattern.c" } } } } } } -#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp32_ = sql; -#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp33_ = in_simple_optional; -#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_parse_object_list (self, _tmp32_, _tmp33_, &_inner_error_); -#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6182 "tracker-sparql-pattern.c" +#line 6408 "tracker-sparql-pattern.c" } else { -#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6192 "tracker-sparql-pattern.c" +#line 6418 "tracker-sparql-pattern.c" } } -#line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 619 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp34_ = old_predicate; -#line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 619 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp35_ = g_strdup (_tmp34_); -#line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 619 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (self->priv->current_predicate); -#line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 619 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_predicate = _tmp35_; -#line 583 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 620 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp36_ = old_predicate_is_var; -#line 583 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 620 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_predicate_is_var = _tmp36_; -#line 585 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp37_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_SEMICOLON, &_inner_error_); -#line 585 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp38_ = _tmp37_; -#line 585 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 585 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 585 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 585 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 585 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6221 "tracker-sparql-pattern.c" +#line 6447 "tracker-sparql-pattern.c" } else { -#line 585 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 585 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 585 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 585 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6231 "tracker-sparql-pattern.c" +#line 6457 "tracker-sparql-pattern.c" } } -#line 585 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp38_) { -#line 6236 "tracker-sparql-pattern.c" +#line 6462 "tracker-sparql-pattern.c" TrackerSparqlTokenType _tmp39_ = 0; -#line 586 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 623 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp39_ = tracker_sparql_pattern_current (self); -#line 586 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 623 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp39_ == TRACKER_SPARQL_TOKEN_TYPE_DOT) { -#line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 625 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 625 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 6246 "tracker-sparql-pattern.c" +#line 6472 "tracker-sparql-pattern.c" } -#line 590 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 590 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" continue; -#line 6252 "tracker-sparql-pattern.c" +#line 6478 "tracker-sparql-pattern.c" } -#line 592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 629 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_predicate); -#line 592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 629 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 6258 "tracker-sparql-pattern.c" +#line 6484 "tracker-sparql-pattern.c" } } @@ -6268,54 +6494,54 @@ TrackerSparqlExpression* _tmp0_; GString* _tmp1_; GError * _inner_error_ = NULL; -#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 633 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (self != NULL); -#line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 633 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (sql != NULL); -#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 634 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_FILTER, &_inner_error_); -#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 634 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 634 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 634 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 634 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6281 "tracker-sparql-pattern.c" +#line 6507 "tracker-sparql-pattern.c" } else { -#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 634 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 634 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 634 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6289 "tracker-sparql-pattern.c" +#line 6515 "tracker-sparql-pattern.c" } } -#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 635 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = self->priv->expression; -#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 635 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = sql; -#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 635 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_expression_translate_constraint (_tmp0_, _tmp1_, &_inner_error_); -#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 635 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 635 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 635 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 635 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6306 "tracker-sparql-pattern.c" +#line 6532 "tracker-sparql-pattern.c" } else { -#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 635 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 635 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 635 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6314 "tracker-sparql-pattern.c" +#line 6540 "tracker-sparql-pattern.c" } } } @@ -6325,241 +6551,241 @@ TrackerSparqlTokenType _tmp0_ = 0; gint n_parens; GError * _inner_error_ = NULL; -#line 601 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 638 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (self != NULL); -#line 602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 639 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_FILTER, &_inner_error_); -#line 602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 639 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 639 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 639 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 639 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6336 "tracker-sparql-pattern.c" +#line 6562 "tracker-sparql-pattern.c" } else { -#line 602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 639 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 639 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 639 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6344 "tracker-sparql-pattern.c" +#line 6570 "tracker-sparql-pattern.c" } } -#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = tracker_sparql_pattern_current (self); -#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" switch (_tmp0_) { -#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_STR: -#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_LANG: -#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_LANGMATCHES: -#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_DATATYPE: -#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_BOUND: -#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_SAMETERM: -#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_ISIRI: -#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_ISURI: -#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_ISBLANK: -#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_ISLITERAL: -#line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" case TRACKER_SPARQL_TOKEN_TYPE_REGEX: -#line 6373 "tracker-sparql-pattern.c" +#line 6599 "tracker-sparql-pattern.c" { -#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 653 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_next (self, &_inner_error_); -#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 653 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 653 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 653 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 653 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6385 "tracker-sparql-pattern.c" +#line 6611 "tracker-sparql-pattern.c" } else { -#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 653 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 653 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 616 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 653 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6393 "tracker-sparql-pattern.c" +#line 6619 "tracker-sparql-pattern.c" } } -#line 617 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 654 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 6398 "tracker-sparql-pattern.c" +#line 6624 "tracker-sparql-pattern.c" } default: { -#line 619 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 656 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 6404 "tracker-sparql-pattern.c" +#line 6630 "tracker-sparql-pattern.c" } } -#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6417 "tracker-sparql-pattern.c" +#line 6643 "tracker-sparql-pattern.c" } else { -#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6425 "tracker-sparql-pattern.c" +#line 6651 "tracker-sparql-pattern.c" } } -#line 623 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 660 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" n_parens = 1; -#line 624 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" while (TRUE) { -#line 6432 "tracker-sparql-pattern.c" +#line 6658 "tracker-sparql-pattern.c" gint _tmp1_; gboolean _tmp2_ = FALSE; gboolean _tmp3_; -#line 624 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = n_parens; -#line 624 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!(_tmp1_ > 0)) { -#line 624 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 6442 "tracker-sparql-pattern.c" +#line 6668 "tracker-sparql-pattern.c" } -#line 625 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 662 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_PARENS, &_inner_error_); -#line 625 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 662 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = _tmp2_; -#line 625 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 662 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 625 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 662 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 625 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 662 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 625 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 662 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6456 "tracker-sparql-pattern.c" +#line 6682 "tracker-sparql-pattern.c" } else { -#line 625 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 662 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 625 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 662 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 625 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 662 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6464 "tracker-sparql-pattern.c" +#line 6690 "tracker-sparql-pattern.c" } } -#line 625 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 662 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp3_) { -#line 6469 "tracker-sparql-pattern.c" +#line 6695 "tracker-sparql-pattern.c" gint _tmp4_; -#line 626 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp4_ = n_parens; -#line 626 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" n_parens = _tmp4_ + 1; -#line 6475 "tracker-sparql-pattern.c" +#line 6701 "tracker-sparql-pattern.c" } else { gboolean _tmp5_ = FALSE; gboolean _tmp6_; -#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_); -#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp6_ = _tmp5_; -#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6491 "tracker-sparql-pattern.c" +#line 6717 "tracker-sparql-pattern.c" } else { -#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6499 "tracker-sparql-pattern.c" +#line 6725 "tracker-sparql-pattern.c" } } -#line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp6_) { -#line 6504 "tracker-sparql-pattern.c" +#line 6730 "tracker-sparql-pattern.c" gint _tmp7_; -#line 628 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 665 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp7_ = n_parens; -#line 628 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 665 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" n_parens = _tmp7_ - 1; -#line 6510 "tracker-sparql-pattern.c" +#line 6736 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp8_ = 0; -#line 629 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 666 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp8_ = tracker_sparql_pattern_current (self); -#line 629 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 666 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp8_ == TRACKER_SPARQL_TOKEN_TYPE_EOF) { -#line 6517 "tracker-sparql-pattern.c" +#line 6743 "tracker-sparql-pattern.c" GError* _tmp9_ = NULL; -#line 630 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 667 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp9_ = tracker_sparql_pattern_get_error (self, "unexpected end of query, expected )"); -#line 630 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 667 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _inner_error_ = _tmp9_; -#line 630 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 667 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 630 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 667 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 630 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 667 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6529 "tracker-sparql-pattern.c" +#line 6755 "tracker-sparql-pattern.c" } else { -#line 630 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 667 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 630 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 667 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 630 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 667 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6537 "tracker-sparql-pattern.c" +#line 6763 "tracker-sparql-pattern.c" } } else { -#line 633 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 670 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_next (self, &_inner_error_); -#line 633 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 670 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 633 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 670 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 633 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 670 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 633 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 670 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6550 "tracker-sparql-pattern.c" +#line 6776 "tracker-sparql-pattern.c" } else { -#line 633 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 670 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 633 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 670 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 633 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 670 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6558 "tracker-sparql-pattern.c" +#line 6784 "tracker-sparql-pattern.c" } } } @@ -6576,31 +6802,31 @@ TrackerSparqlPatternTripleContext* _tmp3_; TrackerSparqlPatternTripleContext* _tmp4_; GString* _tmp5_; -#line 638 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 675 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (self != NULL); -#line 638 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 675 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (sql != NULL); -#line 639 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 676 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = self->priv->query; -#line 639 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 676 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = tracker_sparql_pattern_get_context (self); -#line 639 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 676 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = _tmp1_; -#line 639 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 676 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = tracker_sparql_pattern_triple_context_new (_tmp0_, _tmp2_); -#line 639 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 676 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (self->priv->triple_context); -#line 639 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 676 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->triple_context = _tmp3_; -#line 639 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 676 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp4_ = self->priv->triple_context; -#line 639 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 676 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_context (self, (TrackerSparqlContext*) _tmp4_); -#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_ = sql; -#line 641 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp5_, "SELECT "); -#line 6599 "tracker-sparql-pattern.c" +#line 6825 "tracker-sparql-pattern.c" } @@ -6616,53 +6842,53 @@ GList* _tmp25_; TrackerSparqlPatternTripleContext* _tmp84_; GList* _tmp85_; - gboolean _tmp113_; - TrackerSparqlContext* _tmp115_; - TrackerSparqlContext* _tmp116_; - GHashTable* _tmp117_; - GList* _tmp118_ = NULL; - TrackerSparqlContext* _tmp125_; - TrackerSparqlContext* _tmp126_; - TrackerSparqlContext* _tmp127_; + gboolean _tmp117_; + TrackerSparqlContext* _tmp119_; + TrackerSparqlContext* _tmp120_; + GHashTable* _tmp121_; + GList* _tmp122_ = NULL; + TrackerSparqlContext* _tmp129_; + TrackerSparqlContext* _tmp130_; + TrackerSparqlContext* _tmp131_; GError * _inner_error_ = NULL; -#line 644 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 681 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (self != NULL); -#line 644 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 681 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (sql != NULL); -#line 646 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 683 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = sql; -#line 646 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 683 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = sql; -#line 646 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 683 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = _tmp1_->len; -#line 646 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 683 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_truncate (_tmp0_, (gsize) (_tmp2_ - 2)); -#line 648 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = sql; -#line 648 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp3_, " FROM "); -#line 649 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 686 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first = TRUE; -#line 650 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp4_ = self->priv->triple_context; -#line 650 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_ = _tmp4_->tables; -#line 6646 "tracker-sparql-pattern.c" +#line 6872 "tracker-sparql-pattern.c" { GList* table_collection = NULL; GList* table_it = NULL; -#line 650 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" table_collection = _tmp5_; -#line 650 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (table_it = table_collection; table_it != NULL; table_it = table_it->next) { -#line 6654 "tracker-sparql-pattern.c" +#line 6880 "tracker-sparql-pattern.c" TrackerSparqlDataTable* _tmp6_; TrackerSparqlDataTable* table = NULL; -#line 650 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp6_ = _g_object_ref0 ((TrackerSparqlDataTable*) table_it->data); -#line 650 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" table = _tmp6_; -#line 6661 "tracker-sparql-pattern.c" +#line 6887 "tracker-sparql-pattern.c" { gboolean _tmp7_; TrackerSparqlDataTable* _tmp9_; @@ -6670,41 +6896,41 @@ GString* _tmp21_; TrackerSparqlDataTable* _tmp22_; const gchar* _tmp23_; -#line 651 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 688 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp7_ = first; -#line 651 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 688 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp7_) { -#line 6673 "tracker-sparql-pattern.c" +#line 6899 "tracker-sparql-pattern.c" GString* _tmp8_; -#line 652 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 689 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp8_ = sql; -#line 652 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 689 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp8_, ", "); -#line 6679 "tracker-sparql-pattern.c" +#line 6905 "tracker-sparql-pattern.c" } else { -#line 654 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 691 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first = FALSE; -#line 6683 "tracker-sparql-pattern.c" +#line 6909 "tracker-sparql-pattern.c" } -#line 656 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 693 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp9_ = table; -#line 656 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 693 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp10_ = _tmp9_->sql_db_tablename; -#line 656 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 693 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp10_ != NULL) { -#line 6691 "tracker-sparql-pattern.c" +#line 6917 "tracker-sparql-pattern.c" GString* _tmp11_; TrackerSparqlDataTable* _tmp12_; const gchar* _tmp13_; -#line 657 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 694 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp11_ = sql; -#line 657 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 694 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp12_ = table; -#line 657 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 694 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp13_ = _tmp12_->sql_db_tablename; -#line 657 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 694 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp11_, "\"%s\"", _tmp13_); -#line 6703 "tracker-sparql-pattern.c" +#line 6929 "tracker-sparql-pattern.c" } else { TrackerSparqlDataTable* _tmp14_; TrackerSparqlPredicateVariable* _tmp15_; @@ -6713,83 +6939,83 @@ gchar* _tmp18_; GString* _tmp19_; gchar* _tmp20_; -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp14_ = table; -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp15_ = _tmp14_->predicate_variable; -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp16_ = self->priv->query; -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp17_ = tracker_sparql_predicate_variable_get_sql_query (_tmp15_, _tmp16_, &_inner_error_); -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp18_ = _tmp17_; -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (table); -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6732 "tracker-sparql-pattern.c" +#line 6958 "tracker-sparql-pattern.c" } else { -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (table); -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 6742 "tracker-sparql-pattern.c" +#line 6968 "tracker-sparql-pattern.c" } } -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp19_ = sql; -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp20_ = _tmp18_; -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp19_, "(%s)", _tmp20_); -#line 659 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp20_); -#line 6753 "tracker-sparql-pattern.c" +#line 6979 "tracker-sparql-pattern.c" } -#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp21_ = sql; -#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp22_ = table; -#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp23_ = _tmp22_->sql_query_tablename; -#line 661 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp21_, " AS \"%s\"", _tmp23_); -#line 650 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (table); -#line 6765 "tracker-sparql-pattern.c" +#line 6991 "tracker-sparql-pattern.c" } } } -#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp24_ = self->priv->triple_context; -#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp25_ = _tmp24_->variables; -#line 6773 "tracker-sparql-pattern.c" +#line 6999 "tracker-sparql-pattern.c" { GList* variable_collection = NULL; GList* variable_it = NULL; -#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" variable_collection = _tmp25_; -#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (variable_it = variable_collection; variable_it != NULL; variable_it = variable_it->next) { -#line 6781 "tracker-sparql-pattern.c" +#line 7007 "tracker-sparql-pattern.c" TrackerSparqlVariable* _tmp26_; TrackerSparqlVariable* variable = NULL; -#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp26_ = _g_object_ref0 ((TrackerSparqlVariable*) variable_it->data); -#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" variable = _tmp26_; -#line 6788 "tracker-sparql-pattern.c" +#line 7014 "tracker-sparql-pattern.c" { gboolean maybe_null; gboolean in_simple_optional; @@ -6803,40 +7029,40 @@ gboolean _tmp73_ = FALSE; gboolean _tmp74_; gboolean _tmp76_; -#line 665 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 702 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" maybe_null = TRUE; -#line 666 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 703 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" in_simple_optional = FALSE; -#line 667 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 704 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" last_type = TRACKER_PROPERTY_TYPE_UNKNOWN; -#line 668 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 705 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" last_name = NULL; -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 706 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp27_ = self->priv->triple_context; -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 706 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp28_ = _tmp27_->var_bindings; -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 706 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp29_ = variable; -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 706 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp30_ = g_hash_table_lookup (_tmp28_, _tmp29_); -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 706 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp31_ = ((TrackerSparqlVariableBindingList*) _tmp30_)->list; -#line 6820 "tracker-sparql-pattern.c" +#line 7046 "tracker-sparql-pattern.c" { GList* binding_collection = NULL; GList* binding_it = NULL; -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 706 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" binding_collection = _tmp31_; -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 706 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (binding_it = binding_collection; binding_it != NULL; binding_it = binding_it->next) { -#line 6828 "tracker-sparql-pattern.c" +#line 7054 "tracker-sparql-pattern.c" TrackerSparqlVariableBinding* _tmp32_; TrackerSparqlVariableBinding* binding = NULL; -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 706 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp32_ = _g_object_ref0 ((TrackerSparqlVariableBinding*) binding_it->data); -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 706 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" binding = _tmp32_; -#line 6835 "tracker-sparql-pattern.c" +#line 7061 "tracker-sparql-pattern.c" { gchar* name = NULL; TrackerSparqlVariableBinding* _tmp33_; @@ -6852,60 +7078,60 @@ gboolean _tmp70_; TrackerSparqlVariableBinding* _tmp71_; gboolean _tmp72_; -#line 671 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 708 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp33_ = binding; -#line 671 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 708 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp34_ = ((TrackerSparqlDataBinding*) _tmp33_)->table; -#line 671 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 708 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp34_ != NULL) { -#line 6857 "tracker-sparql-pattern.c" +#line 7083 "tracker-sparql-pattern.c" TrackerSparqlVariableBinding* _tmp35_; const gchar* _tmp36_; const gchar* _tmp37_; gchar* _tmp38_; -#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp35_ = binding; -#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp36_ = tracker_sparql_data_binding_get_sql_expression ((TrackerSparqlDataBinding*) _tmp35_); -#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp37_ = _tmp36_; -#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp38_ = g_strdup (_tmp37_); -#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (name); -#line 672 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" name = _tmp38_; -#line 6874 "tracker-sparql-pattern.c" +#line 7100 "tracker-sparql-pattern.c" } else { TrackerSparqlVariable* _tmp39_; const gchar* _tmp40_; const gchar* _tmp41_; gchar* _tmp42_; -#line 676 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 713 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp39_ = variable; -#line 676 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 713 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp40_ = tracker_sparql_variable_get_sql_expression (_tmp39_); -#line 676 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 713 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp41_ = _tmp40_; -#line 676 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 713 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp42_ = g_strdup (_tmp41_); -#line 676 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 713 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (name); -#line 676 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 713 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" name = _tmp42_; -#line 6892 "tracker-sparql-pattern.c" +#line 7118 "tracker-sparql-pattern.c" } -#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 715 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp43_ = binding; -#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 715 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp44_ = ((TrackerSparqlDataBinding*) _tmp43_)->data_type; -#line 678 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 715 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" type = _tmp44_; -#line 679 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 716 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp45_ = last_name; -#line 679 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 716 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp45_ != NULL) { -#line 6904 "tracker-sparql-pattern.c" +#line 7130 "tracker-sparql-pattern.c" gboolean _tmp46_; gboolean _tmp49_ = FALSE; TrackerPropertyType _tmp50_; @@ -6914,237 +7140,237 @@ gboolean _tmp58_ = FALSE; TrackerPropertyType _tmp59_; gboolean _tmp61_; -#line 680 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 717 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp46_ = *first_where; -#line 680 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 717 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp46_) { -#line 6917 "tracker-sparql-pattern.c" +#line 7143 "tracker-sparql-pattern.c" GString* _tmp47_; -#line 681 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 718 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp47_ = sql; -#line 681 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 718 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp47_, " AND "); -#line 6923 "tracker-sparql-pattern.c" +#line 7149 "tracker-sparql-pattern.c" } else { GString* _tmp48_; -#line 683 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 720 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp48_ = sql; -#line 683 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 720 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp48_, " WHERE "); -#line 684 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 721 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *first_where = FALSE; -#line 6932 "tracker-sparql-pattern.c" +#line 7158 "tracker-sparql-pattern.c" } -#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp50_ = last_type; -#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp50_ == TRACKER_PROPERTY_TYPE_STRING) { -#line 6938 "tracker-sparql-pattern.c" +#line 7164 "tracker-sparql-pattern.c" TrackerPropertyType _tmp51_; -#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp51_ = type; -#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp49_ = _tmp51_ == TRACKER_PROPERTY_TYPE_RESOURCE; -#line 6944 "tracker-sparql-pattern.c" +#line 7170 "tracker-sparql-pattern.c" } else { -#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp49_ = FALSE; -#line 6948 "tracker-sparql-pattern.c" +#line 7174 "tracker-sparql-pattern.c" } -#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp52_ = _tmp49_; -#line 687 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 724 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp52_) { -#line 6954 "tracker-sparql-pattern.c" +#line 7180 "tracker-sparql-pattern.c" GString* _tmp53_; const gchar* _tmp54_; -#line 688 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 725 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp53_ = sql; -#line 688 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 725 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp54_ = last_name; -#line 688 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 725 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp53_, "(SELECT ID FROM Resource WHERE Uri = %s)", _tmp54_); -#line 6963 "tracker-sparql-pattern.c" +#line 7189 "tracker-sparql-pattern.c" } else { GString* _tmp55_; const gchar* _tmp56_; -#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 727 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp55_ = sql; -#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 727 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp56_ = last_name; -#line 690 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 727 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp55_, _tmp56_); -#line 6973 "tracker-sparql-pattern.c" +#line 7199 "tracker-sparql-pattern.c" } -#line 693 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 730 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp57_ = sql; -#line 693 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 730 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp57_, " = "); -#line 695 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 732 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp59_ = last_type; -#line 695 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 732 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp59_ == TRACKER_PROPERTY_TYPE_RESOURCE) { -#line 6983 "tracker-sparql-pattern.c" +#line 7209 "tracker-sparql-pattern.c" TrackerPropertyType _tmp60_; -#line 695 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 732 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp60_ = type; -#line 695 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 732 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp58_ = _tmp60_ == TRACKER_PROPERTY_TYPE_STRING; -#line 6989 "tracker-sparql-pattern.c" +#line 7215 "tracker-sparql-pattern.c" } else { -#line 695 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 732 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp58_ = FALSE; -#line 6993 "tracker-sparql-pattern.c" +#line 7219 "tracker-sparql-pattern.c" } -#line 695 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 732 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp61_ = _tmp58_; -#line 695 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 732 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp61_) { -#line 6999 "tracker-sparql-pattern.c" +#line 7225 "tracker-sparql-pattern.c" GString* _tmp62_; const gchar* _tmp63_; -#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 733 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp62_ = sql; -#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 733 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp63_ = name; -#line 696 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 733 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp62_, "(SELECT ID FROM Resource WHERE Uri = %s)", _tmp63_); -#line 7008 "tracker-sparql-pattern.c" +#line 7234 "tracker-sparql-pattern.c" } else { GString* _tmp64_; const gchar* _tmp65_; -#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 735 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp64_ = sql; -#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 735 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp65_ = name; -#line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 735 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp64_, _tmp65_); -#line 7018 "tracker-sparql-pattern.c" +#line 7244 "tracker-sparql-pattern.c" } } -#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 738 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp66_ = name; -#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 738 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp67_ = g_strdup (_tmp66_); -#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 738 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (last_name); -#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 738 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" last_name = _tmp67_; -#line 702 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 739 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp68_ = type; -#line 702 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 739 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" last_type = _tmp68_; -#line 703 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 740 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp69_ = binding; -#line 703 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 740 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp70_ = _tmp69_->maybe_null; -#line 703 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 740 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp70_) { -#line 704 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 741 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" maybe_null = FALSE; -#line 7041 "tracker-sparql-pattern.c" +#line 7267 "tracker-sparql-pattern.c" } -#line 706 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 743 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp71_ = binding; -#line 706 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 743 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp72_ = _tmp71_->in_simple_optional; -#line 706 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 743 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" in_simple_optional = _tmp72_; -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 706 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (name); -#line 669 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 706 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (binding); -#line 7053 "tracker-sparql-pattern.c" +#line 7279 "tracker-sparql-pattern.c" } } } -#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 746 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp74_ = maybe_null; -#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 746 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp74_) { -#line 7061 "tracker-sparql-pattern.c" +#line 7287 "tracker-sparql-pattern.c" gboolean _tmp75_; -#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 746 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp75_ = in_simple_optional; -#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 746 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp73_ = !_tmp75_; -#line 7067 "tracker-sparql-pattern.c" +#line 7293 "tracker-sparql-pattern.c" } else { -#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 746 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp73_ = FALSE; -#line 7071 "tracker-sparql-pattern.c" +#line 7297 "tracker-sparql-pattern.c" } -#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 746 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp76_ = _tmp73_; -#line 709 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 746 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp76_) { -#line 7077 "tracker-sparql-pattern.c" +#line 7303 "tracker-sparql-pattern.c" gboolean _tmp77_; GString* _tmp80_; TrackerSparqlVariable* _tmp81_; const gchar* _tmp82_; const gchar* _tmp83_; -#line 712 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 749 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp77_ = *first_where; -#line 712 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 749 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp77_) { -#line 7087 "tracker-sparql-pattern.c" +#line 7313 "tracker-sparql-pattern.c" GString* _tmp78_; -#line 713 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 750 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp78_ = sql; -#line 713 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 750 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp78_, " AND "); -#line 7093 "tracker-sparql-pattern.c" +#line 7319 "tracker-sparql-pattern.c" } else { GString* _tmp79_; -#line 715 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 752 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp79_ = sql; -#line 715 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 752 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp79_, " WHERE "); -#line 716 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *first_where = FALSE; -#line 7102 "tracker-sparql-pattern.c" +#line 7328 "tracker-sparql-pattern.c" } -#line 718 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 755 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp80_ = sql; -#line 718 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 755 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp81_ = variable; -#line 718 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 755 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp82_ = tracker_sparql_variable_get_sql_expression (_tmp81_); -#line 718 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 755 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp83_ = _tmp82_; -#line 718 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 755 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp80_, "%s IS NOT NULL", _tmp83_); -#line 7114 "tracker-sparql-pattern.c" +#line 7340 "tracker-sparql-pattern.c" } -#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (last_name); -#line 664 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 701 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (variable); -#line 7120 "tracker-sparql-pattern.c" +#line 7346 "tracker-sparql-pattern.c" } } } -#line 721 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp84_ = self->priv->triple_context; -#line 721 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp85_ = _tmp84_->bindings; -#line 7128 "tracker-sparql-pattern.c" +#line 7354 "tracker-sparql-pattern.c" { GList* binding_collection = NULL; GList* binding_it = NULL; -#line 721 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" binding_collection = _tmp85_; -#line 721 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (binding_it = binding_collection; binding_it != NULL; binding_it = binding_it->next) { -#line 7136 "tracker-sparql-pattern.c" +#line 7362 "tracker-sparql-pattern.c" TrackerSparqlLiteralBinding* _tmp86_; TrackerSparqlLiteralBinding* binding = NULL; -#line 721 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp86_ = _g_object_ref0 ((TrackerSparqlLiteralBinding*) binding_it->data); -#line 721 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" binding = _tmp86_; -#line 7143 "tracker-sparql-pattern.c" +#line 7369 "tracker-sparql-pattern.c" { gboolean _tmp87_; GString* _tmp90_; @@ -7153,44 +7379,44 @@ const gchar* _tmp93_; TrackerSparqlLiteralBinding* _tmp94_; gboolean _tmp95_; -#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 759 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp87_ = *first_where; -#line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 759 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp87_) { -#line 7156 "tracker-sparql-pattern.c" +#line 7382 "tracker-sparql-pattern.c" GString* _tmp88_; -#line 723 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 760 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp88_ = sql; -#line 723 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 760 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp88_, " AND "); -#line 7162 "tracker-sparql-pattern.c" +#line 7388 "tracker-sparql-pattern.c" } else { GString* _tmp89_; -#line 725 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 762 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp89_ = sql; -#line 725 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 762 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp89_, " WHERE "); -#line 726 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 763 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *first_where = FALSE; -#line 7171 "tracker-sparql-pattern.c" +#line 7397 "tracker-sparql-pattern.c" } -#line 728 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp90_ = sql; -#line 728 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp91_ = binding; -#line 728 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp92_ = tracker_sparql_data_binding_get_sql_expression ((TrackerSparqlDataBinding*) _tmp91_); -#line 728 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp93_ = _tmp92_; -#line 728 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp90_, _tmp93_); -#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 766 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp94_ = binding; -#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 766 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp95_ = _tmp94_->is_fts_match; -#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 766 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp95_) { -#line 7189 "tracker-sparql-pattern.c" +#line 7415 "tracker-sparql-pattern.c" TrackerSparqlLiteralBinding* _tmp96_; const gchar* _tmp97_; gchar** _tmp98_; @@ -7202,167 +7428,190 @@ gchar* escaped_literal; GString* _tmp103_; const gchar* _tmp104_; -#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + GString* _tmp105_; +#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp96_ = binding; -#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp97_ = _tmp96_->literal; -#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp99_ = _tmp98_ = g_strsplit (_tmp97_, "'", 0); -#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp100_ = _tmp99_; -#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp100__length1 = _vala_array_length (_tmp98_); -#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp101_ = g_strjoinv ("''", _tmp100_); -#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp102_ = _tmp101_; -#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp100_ = (_vala_array_free (_tmp100_, _tmp100__length1, (GDestroyNotify) g_free), NULL); -#line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" escaped_literal = _tmp102_; -#line 732 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp103_ = sql; -#line 732 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp104_ = escaped_literal; -#line 732 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp103_, " MATCH '%s'", _tmp104_); -#line 729 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp105_ = self->match_str; +#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp105_ == NULL) { +#line 7456 "tracker-sparql-pattern.c" + GString* _tmp106_; + GString* _tmp107_; + const gchar* _tmp108_; +#line 772 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp106_ = g_string_new (""); +#line 772 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_string_free0 (self->match_str); +#line 772 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + self->match_str = _tmp106_; +#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp107_ = self->match_str; +#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp108_ = escaped_literal; +#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append_printf (_tmp107_, " MATCH '%s'", _tmp108_); +#line 7472 "tracker-sparql-pattern.c" + } +#line 766 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (escaped_literal); -#line 7227 "tracker-sparql-pattern.c" +#line 7476 "tracker-sparql-pattern.c" } else { - GString* _tmp105_; - TrackerSparqlLiteralBinding* _tmp106_; - TrackerPropertyType _tmp107_; - TrackerSparqlQuery* _tmp110_; - TrackerSparqlLiteralBinding* _tmp111_; - TrackerSparqlLiteralBinding* _tmp112_; -#line 734 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp105_ = sql; -#line 734 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append (_tmp105_, " = "); -#line 735 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp106_ = binding; -#line 735 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp107_ = ((TrackerSparqlDataBinding*) _tmp106_)->data_type; -#line 735 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp107_ == TRACKER_PROPERTY_TYPE_RESOURCE) { -#line 7245 "tracker-sparql-pattern.c" - GString* _tmp108_; -#line 736 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp108_ = sql; -#line 736 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append (_tmp108_, "(SELECT ID FROM Resource WHERE Uri = ?)"); -#line 7251 "tracker-sparql-pattern.c" + GString* _tmp109_; + TrackerSparqlLiteralBinding* _tmp110_; + TrackerPropertyType _tmp111_; + TrackerSparqlQuery* _tmp114_; + TrackerSparqlLiteralBinding* _tmp115_; + TrackerSparqlLiteralBinding* _tmp116_; +#line 776 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp109_ = sql; +#line 776 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp109_, " = "); +#line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp110_ = binding; +#line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp111_ = ((TrackerSparqlDataBinding*) _tmp110_)->data_type; +#line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp111_ == TRACKER_PROPERTY_TYPE_RESOURCE) { +#line 7494 "tracker-sparql-pattern.c" + GString* _tmp112_; +#line 778 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp112_ = sql; +#line 778 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp112_, "(SELECT ID FROM Resource WHERE Uri = ?)"); +#line 7500 "tracker-sparql-pattern.c" } else { - GString* _tmp109_; -#line 738 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp109_ = sql; -#line 738 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append (_tmp109_, "?"); -#line 7258 "tracker-sparql-pattern.c" + GString* _tmp113_; +#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp113_ = sql; +#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp113_, "?"); +#line 7507 "tracker-sparql-pattern.c" } -#line 740 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp110_ = self->priv->query; -#line 740 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp111_ = binding; -#line 740 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp112_ = _g_object_ref0 (_tmp111_); -#line 740 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp110_->bindings = g_list_append (_tmp110_->bindings, _tmp112_); -#line 7268 "tracker-sparql-pattern.c" +#line 782 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp114_ = self->priv->query; +#line 782 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp115_ = binding; +#line 782 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp116_ = _g_object_ref0 (_tmp115_); +#line 782 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp114_->bindings = g_list_append (_tmp114_->bindings, _tmp116_); +#line 7517 "tracker-sparql-pattern.c" } -#line 721 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (binding); -#line 7272 "tracker-sparql-pattern.c" +#line 7521 "tracker-sparql-pattern.c" } } } -#line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp113_ = in_group_graph_pattern; -#line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp113_) { -#line 7280 "tracker-sparql-pattern.c" - GString* _tmp114_; -#line 745 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp114_ = sql; -#line 745 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append (_tmp114_, ")"); -#line 7286 "tracker-sparql-pattern.c" - } -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp115_ = tracker_sparql_pattern_get_context (self); -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp116_ = _tmp115_; -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp117_ = _tmp116_->var_set; -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp118_ = g_hash_table_get_keys (_tmp117_); -#line 7296 "tracker-sparql-pattern.c" +#line 786 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp117_ = in_group_graph_pattern; +#line 786 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp117_) { +#line 7529 "tracker-sparql-pattern.c" + GString* _tmp118_; +#line 787 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp118_ = sql; +#line 787 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp118_, ")"); +#line 7535 "tracker-sparql-pattern.c" + } +#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp119_ = tracker_sparql_pattern_get_context (self); +#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp120_ = _tmp119_; +#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp121_ = _tmp120_->var_set; +#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp122_ = g_hash_table_get_keys (_tmp121_); +#line 7545 "tracker-sparql-pattern.c" { GList* v_collection = NULL; GList* v_it = NULL; -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - v_collection = _tmp118_; -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + v_collection = _tmp122_; +#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (v_it = v_collection; v_it != NULL; v_it = v_it->next) { -#line 7304 "tracker-sparql-pattern.c" +#line 7553 "tracker-sparql-pattern.c" TrackerSparqlVariable* v = NULL; -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" v = (TrackerSparqlVariable*) v_it->data; -#line 7308 "tracker-sparql-pattern.c" +#line 7557 "tracker-sparql-pattern.c" { - TrackerSparqlContext* _tmp119_; - TrackerSparqlContext* _tmp120_; - TrackerSparqlContext* _tmp121_; - GHashTable* _tmp122_; - TrackerSparqlVariable* _tmp123_; - TrackerSparqlVariable* _tmp124_; -#line 749 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp119_ = tracker_sparql_pattern_get_context (self); -#line 749 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp120_ = _tmp119_; -#line 749 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp121_ = _tmp120_->parent_context; -#line 749 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp122_ = _tmp121_->var_set; -#line 749 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp123_ = v; -#line 749 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp124_ = _g_object_ref0 (_tmp123_); -#line 749 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_hash_table_insert (_tmp122_, _tmp124_, GINT_TO_POINTER ((gint) TRACKER_SPARQL_VARIABLE_STATE_BOUND)); -#line 7330 "tracker-sparql-pattern.c" + TrackerSparqlContext* _tmp123_; + TrackerSparqlContext* _tmp124_; + TrackerSparqlContext* _tmp125_; + GHashTable* _tmp126_; + TrackerSparqlVariable* _tmp127_; + TrackerSparqlVariable* _tmp128_; +#line 791 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp123_ = tracker_sparql_pattern_get_context (self); +#line 791 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp124_ = _tmp123_; +#line 791 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp125_ = _tmp124_->parent_context; +#line 791 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp126_ = _tmp125_->var_set; +#line 791 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp127_ = v; +#line 791 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp128_ = _g_object_ref0 (_tmp127_); +#line 791 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_hash_table_insert (_tmp126_, _tmp128_, GINT_TO_POINTER ((gint) TRACKER_SPARQL_VARIABLE_STATE_BOUND)); +#line 7579 "tracker-sparql-pattern.c" } } -#line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 790 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_list_free0 (v_collection); -#line 7335 "tracker-sparql-pattern.c" +#line 7584 "tracker-sparql-pattern.c" } -#line 752 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 794 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (self->priv->triple_context); -#line 752 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 794 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->triple_context = NULL; -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp125_ = tracker_sparql_pattern_get_context (self); -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp126_ = _tmp125_; -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp127_ = _tmp126_->parent_context; -#line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - tracker_sparql_pattern_set_context (self, _tmp127_); -#line 7349 "tracker-sparql-pattern.c" +#line 795 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp129_ = tracker_sparql_pattern_get_context (self); +#line 795 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp130_ = _tmp129_; +#line 795 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp131_ = _tmp130_->parent_context; +#line 795 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + tracker_sparql_pattern_set_context (self, _tmp131_); +#line 7598 "tracker-sparql-pattern.c" } static void tracker_sparql_pattern_parse_triples (TrackerSparqlPattern* self, GString* sql, glong group_graph_pattern_start, gboolean* in_triples_block, gboolean* first_where, gboolean* in_group_graph_pattern, gboolean found_simple_optional, GError** error) { GError * _inner_error_ = NULL; -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 798 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (self != NULL); -#line 756 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 798 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (sql != NULL); -#line 757 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 799 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" while (TRUE) { -#line 7361 "tracker-sparql-pattern.c" +#line 7610 "tracker-sparql-pattern.c" gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; gboolean _tmp2_ = FALSE; @@ -7385,285 +7634,285 @@ GString* _tmp32_; gboolean _tmp33_ = FALSE; gboolean _tmp34_; -#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 800 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp4_ = tracker_sparql_pattern_current (self); -#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 800 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp4_ != TRACKER_SPARQL_TOKEN_TYPE_VAR) { -#line 7388 "tracker-sparql-pattern.c" +#line 7637 "tracker-sparql-pattern.c" TrackerSparqlTokenType _tmp5_ = 0; -#line 759 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 801 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_ = tracker_sparql_pattern_current (self); -#line 759 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 801 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = _tmp5_ != TRACKER_SPARQL_TOKEN_TYPE_IRI_REF; -#line 7394 "tracker-sparql-pattern.c" +#line 7643 "tracker-sparql-pattern.c" } else { -#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 800 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = FALSE; -#line 7398 "tracker-sparql-pattern.c" +#line 7647 "tracker-sparql-pattern.c" } -#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 800 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp6_ = _tmp3_; -#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 800 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp6_) { -#line 7404 "tracker-sparql-pattern.c" +#line 7653 "tracker-sparql-pattern.c" TrackerSparqlTokenType _tmp7_ = 0; -#line 760 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp7_ = tracker_sparql_pattern_current (self); -#line 760 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 802 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = _tmp7_ != TRACKER_SPARQL_TOKEN_TYPE_PN_PREFIX; -#line 7410 "tracker-sparql-pattern.c" +#line 7659 "tracker-sparql-pattern.c" } else { -#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 800 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = FALSE; -#line 7414 "tracker-sparql-pattern.c" +#line 7663 "tracker-sparql-pattern.c" } -#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 800 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp8_ = _tmp2_; -#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 800 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp8_) { -#line 7420 "tracker-sparql-pattern.c" +#line 7669 "tracker-sparql-pattern.c" TrackerSparqlTokenType _tmp9_ = 0; -#line 761 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 803 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp9_ = tracker_sparql_pattern_current (self); -#line 761 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 803 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = _tmp9_ != TRACKER_SPARQL_TOKEN_TYPE_COLON; -#line 7426 "tracker-sparql-pattern.c" +#line 7675 "tracker-sparql-pattern.c" } else { -#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 800 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = FALSE; -#line 7430 "tracker-sparql-pattern.c" +#line 7679 "tracker-sparql-pattern.c" } -#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 800 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp10_ = _tmp1_; -#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 800 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp10_) { -#line 7436 "tracker-sparql-pattern.c" +#line 7685 "tracker-sparql-pattern.c" TrackerSparqlTokenType _tmp11_ = 0; -#line 762 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp11_ = tracker_sparql_pattern_current (self); -#line 762 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = _tmp11_ != TRACKER_SPARQL_TOKEN_TYPE_OPEN_BRACKET; -#line 7442 "tracker-sparql-pattern.c" +#line 7691 "tracker-sparql-pattern.c" } else { -#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 800 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = FALSE; -#line 7446 "tracker-sparql-pattern.c" +#line 7695 "tracker-sparql-pattern.c" } -#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 800 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp12_ = _tmp0_; -#line 758 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 800 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp12_) { -#line 763 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 805 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 7454 "tracker-sparql-pattern.c" +#line 7703 "tracker-sparql-pattern.c" } -#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp15_ = *in_triples_block; -#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp15_) { -#line 7460 "tracker-sparql-pattern.c" +#line 7709 "tracker-sparql-pattern.c" gboolean _tmp16_; -#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp16_ = *in_group_graph_pattern; -#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp14_ = !_tmp16_; -#line 7466 "tracker-sparql-pattern.c" +#line 7715 "tracker-sparql-pattern.c" } else { -#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp14_ = FALSE; -#line 7470 "tracker-sparql-pattern.c" +#line 7719 "tracker-sparql-pattern.c" } -#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp17_ = _tmp14_; -#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp17_) { -#line 7476 "tracker-sparql-pattern.c" +#line 7725 "tracker-sparql-pattern.c" gboolean _tmp18_; -#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp18_ = found_simple_optional; -#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp13_ = _tmp18_; -#line 7482 "tracker-sparql-pattern.c" +#line 7731 "tracker-sparql-pattern.c" } else { -#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp13_ = FALSE; -#line 7486 "tracker-sparql-pattern.c" +#line 7735 "tracker-sparql-pattern.c" } -#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp19_ = _tmp13_; -#line 765 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp19_) { -#line 7492 "tracker-sparql-pattern.c" +#line 7741 "tracker-sparql-pattern.c" GString* _tmp20_; gboolean _tmp21_; -#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 811 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp20_ = sql; -#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 811 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp21_ = *in_group_graph_pattern; -#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 811 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_end_triples_block (self, _tmp20_, first_where, _tmp21_, &_inner_error_); -#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 811 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 811 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 811 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 811 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 7509 "tracker-sparql-pattern.c" +#line 7758 "tracker-sparql-pattern.c" } else { -#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 811 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 811 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 769 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 811 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 7517 "tracker-sparql-pattern.c" +#line 7766 "tracker-sparql-pattern.c" } } -#line 770 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 812 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *in_triples_block = FALSE; -#line 771 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 813 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *in_group_graph_pattern = TRUE; -#line 7524 "tracker-sparql-pattern.c" +#line 7773 "tracker-sparql-pattern.c" } -#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp22_ = *in_triples_block; -#line 773 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 815 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp22_) { -#line 7530 "tracker-sparql-pattern.c" +#line 7779 "tracker-sparql-pattern.c" gboolean _tmp23_; GString* _tmp27_; -#line 774 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 816 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp23_ = *in_group_graph_pattern; -#line 774 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 816 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp23_) { -#line 7537 "tracker-sparql-pattern.c" +#line 7786 "tracker-sparql-pattern.c" GString* _tmp24_; glong _tmp25_; GString* _tmp26_; -#line 775 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 817 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp24_ = sql; -#line 775 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 817 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp25_ = group_graph_pattern_start; -#line 775 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 817 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_insert (_tmp24_, (gssize) _tmp25_, "SELECT * FROM ("); -#line 776 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 818 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp26_ = sql; -#line 776 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 818 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp26_, ") NATURAL INNER JOIN ("); -#line 7551 "tracker-sparql-pattern.c" +#line 7800 "tracker-sparql-pattern.c" } -#line 778 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 820 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *in_triples_block = TRUE; -#line 779 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *first_where = TRUE; -#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp27_ = sql; -#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_start_triples_block (self, _tmp27_, &_inner_error_); -#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 7569 "tracker-sparql-pattern.c" +#line 7818 "tracker-sparql-pattern.c" } else { -#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 7577 "tracker-sparql-pattern.c" +#line 7826 "tracker-sparql-pattern.c" } } } -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp28_ = sql; -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp30_ = tracker_sparql_pattern_parse_var_or_term (self, _tmp28_, &_tmp29_, &_inner_error_); -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_subject_is_var = _tmp29_; -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp31_ = _tmp30_; -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 7597 "tracker-sparql-pattern.c" +#line 7846 "tracker-sparql-pattern.c" } else { -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 7605 "tracker-sparql-pattern.c" +#line 7854 "tracker-sparql-pattern.c" } } -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (self->priv->current_subject); -#line 783 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 825 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_subject = _tmp31_; -#line 784 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 826 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp32_ = sql; -#line 784 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 826 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_parse_property_list_not_empty (self, _tmp32_, FALSE, &_inner_error_); -#line 784 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 826 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 784 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 826 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 784 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 826 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 784 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 826 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 7624 "tracker-sparql-pattern.c" +#line 7873 "tracker-sparql-pattern.c" } else { -#line 784 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 826 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 784 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 826 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 784 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 826 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 7632 "tracker-sparql-pattern.c" +#line 7881 "tracker-sparql-pattern.c" } } -#line 786 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp33_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_DOT, &_inner_error_); -#line 786 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp34_ = _tmp33_; -#line 786 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 786 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 786 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 786 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 7647 "tracker-sparql-pattern.c" +#line 7896 "tracker-sparql-pattern.c" } else { -#line 786 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 786 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 786 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 7655 "tracker-sparql-pattern.c" +#line 7904 "tracker-sparql-pattern.c" } } -#line 786 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp34_) { -#line 787 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 829 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 7662 "tracker-sparql-pattern.c" +#line 7911 "tracker-sparql-pattern.c" } } } @@ -7676,79 +7925,79 @@ TrackerClass* _tmp2_; TrackerClass** _tmp3_; TrackerClass** _tmp4_ = NULL; -#line 792 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (self != NULL, FALSE); -#line 792 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (class1 != NULL, FALSE); -#line 792 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (class2 != NULL, FALSE); -#line 793 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = class1; -#line 793 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = class2; -#line 793 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp0_ == _tmp1_) { -#line 794 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 836 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = TRUE; -#line 794 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 836 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 7691 "tracker-sparql-pattern.c" +#line 7940 "tracker-sparql-pattern.c" } -#line 796 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 838 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = class1; -#line 796 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 838 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp4_ = _tmp3_ = tracker_class_get_super_classes (_tmp2_); -#line 7697 "tracker-sparql-pattern.c" +#line 7946 "tracker-sparql-pattern.c" { TrackerClass** superclass_collection = NULL; gint superclass_collection_length1 = 0; gint _superclass_collection_size_ = 0; gint superclass_it = 0; -#line 796 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 838 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" superclass_collection = _tmp4_; -#line 796 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 838 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" superclass_collection_length1 = _vala_array_length (_tmp3_); -#line 796 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 838 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (superclass_it = 0; superclass_it < _vala_array_length (_tmp3_); superclass_it = superclass_it + 1) { -#line 7709 "tracker-sparql-pattern.c" +#line 7958 "tracker-sparql-pattern.c" TrackerClass* _tmp5_; TrackerClass* superclass = NULL; -#line 796 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 838 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_ = _g_object_ref0 (superclass_collection[superclass_it]); -#line 796 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 838 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" superclass = _tmp5_; -#line 7716 "tracker-sparql-pattern.c" +#line 7965 "tracker-sparql-pattern.c" { TrackerClass* _tmp6_; TrackerClass* _tmp7_; gboolean _tmp8_ = FALSE; -#line 797 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 839 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp6_ = superclass; -#line 797 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 839 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp7_ = class2; -#line 797 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 839 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp8_ = tracker_sparql_pattern_is_subclass (self, _tmp6_, _tmp7_); -#line 797 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 839 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp8_) { -#line 798 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 840 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = TRUE; -#line 798 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 840 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (superclass); -#line 798 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 840 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 7735 "tracker-sparql-pattern.c" +#line 7984 "tracker-sparql-pattern.c" } -#line 796 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 838 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (superclass); -#line 7739 "tracker-sparql-pattern.c" +#line 7988 "tracker-sparql-pattern.c" } } } -#line 801 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 843 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = FALSE; -#line 801 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 843 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 7747 "tracker-sparql-pattern.c" +#line 7996 "tracker-sparql-pattern.c" } @@ -7757,13 +8006,13 @@ TrackerSourceLocation _tmp0_ = {0}; TrackerSourceLocation optional_start; GError * _inner_error_ = NULL; -#line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 846 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (self != NULL, FALSE); -#line 805 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 847 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_get_location (self, &_tmp0_); -#line 805 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 847 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" optional_start = _tmp0_; -#line 7762 "tracker-sparql-pattern.c" +#line 8011 "tracker-sparql-pattern.c" { gboolean _tmp2_ = FALSE; gboolean _tmp3_; @@ -7816,200 +8065,200 @@ gint _tmp82_; gboolean _tmp86_; gboolean _tmp88_; -#line 817 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_BRACE, &_inner_error_); -#line 817 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 817 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 7821 "tracker-sparql-pattern.c" +#line 8070 "tracker-sparql-pattern.c" goto __catch1_tracker_sparql_error; } { TrackerSourceLocation _tmp1_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp1_); -#line 7830 "tracker-sparql-pattern.c" +#line 8079 "tracker-sparql-pattern.c" } -#line 817 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 817 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 817 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return FALSE; -#line 7838 "tracker-sparql-pattern.c" +#line 8087 "tracker-sparql-pattern.c" } -#line 820 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_VAR, &_inner_error_); -#line 820 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = _tmp2_; -#line 820 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 820 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 7848 "tracker-sparql-pattern.c" +#line 8097 "tracker-sparql-pattern.c" goto __catch1_tracker_sparql_error; } { TrackerSourceLocation _tmp4_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp4_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp4_); -#line 7857 "tracker-sparql-pattern.c" +#line 8106 "tracker-sparql-pattern.c" } -#line 820 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 820 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 820 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return FALSE; -#line 7865 "tracker-sparql-pattern.c" +#line 8114 "tracker-sparql-pattern.c" } -#line 820 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp3_) { -#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 863 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = FALSE; -#line 7871 "tracker-sparql-pattern.c" +#line 8120 "tracker-sparql-pattern.c" { TrackerSourceLocation _tmp5_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp5_); -#line 7878 "tracker-sparql-pattern.c" +#line 8127 "tracker-sparql-pattern.c" } -#line 821 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 863 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 7882 "tracker-sparql-pattern.c" +#line 8131 "tracker-sparql-pattern.c" } -#line 823 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 865 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp6_ = tracker_sparql_pattern_get_context (self); -#line 823 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 865 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp7_ = _tmp6_; -#line 823 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 865 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp8_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 823 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 865 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp9_ = _tmp8_; -#line 823 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 865 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp10_ = string_substring (_tmp9_, (glong) 1, (glong) (-1)); -#line 823 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 865 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp11_ = _tmp10_; -#line 823 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 865 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp12_ = tracker_sparql_context_get_variable (_tmp7_, _tmp11_); -#line 823 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 865 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp13_ = _g_object_ref0 (_tmp12_); -#line 823 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 865 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp14_ = _tmp13_; -#line 823 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 865 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp11_); -#line 823 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 865 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp9_); -#line 823 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 865 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" left_variable = _tmp14_; -#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 866 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp15_ = tracker_sparql_pattern_get_context (self); -#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 866 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp16_ = _tmp15_; -#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 866 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp17_ = _tmp16_->var_set; -#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 866 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp18_ = left_variable; -#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 866 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp19_ = g_hash_table_lookup (_tmp17_, _tmp18_); -#line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 866 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" left_variable_state = GPOINTER_TO_INT (_tmp19_); -#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp20_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_IRI_REF, &_inner_error_); -#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp21_ = _tmp20_; -#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 7932 "tracker-sparql-pattern.c" +#line 8181 "tracker-sparql-pattern.c" goto __catch1_tracker_sparql_error; } -#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 7939 "tracker-sparql-pattern.c" +#line 8188 "tracker-sparql-pattern.c" { TrackerSourceLocation _tmp22_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp22_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp22_); -#line 7946 "tracker-sparql-pattern.c" +#line 8195 "tracker-sparql-pattern.c" } -#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return FALSE; -#line 7954 "tracker-sparql-pattern.c" +#line 8203 "tracker-sparql-pattern.c" } -#line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp21_) { -#line 7958 "tracker-sparql-pattern.c" +#line 8207 "tracker-sparql-pattern.c" gchar* _tmp23_ = NULL; -#line 829 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 871 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp23_ = tracker_sparql_pattern_get_last_string (self, 1); -#line 829 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 871 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 829 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 871 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" predicate = _tmp23_; -#line 7966 "tracker-sparql-pattern.c" +#line 8215 "tracker-sparql-pattern.c" } else { gboolean _tmp24_ = FALSE; gboolean _tmp25_; -#line 830 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp24_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_PN_PREFIX, &_inner_error_); -#line 830 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp25_ = _tmp24_; -#line 830 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 830 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 830 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 830 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 7982 "tracker-sparql-pattern.c" +#line 8231 "tracker-sparql-pattern.c" goto __catch1_tracker_sparql_error; } -#line 830 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 830 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 7989 "tracker-sparql-pattern.c" +#line 8238 "tracker-sparql-pattern.c" { TrackerSourceLocation _tmp26_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp26_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp26_); -#line 7996 "tracker-sparql-pattern.c" +#line 8245 "tracker-sparql-pattern.c" } -#line 830 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 830 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 830 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return FALSE; -#line 8004 "tracker-sparql-pattern.c" +#line 8253 "tracker-sparql-pattern.c" } -#line 830 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp25_) { -#line 8008 "tracker-sparql-pattern.c" +#line 8257 "tracker-sparql-pattern.c" gchar* _tmp27_ = NULL; gchar* ns; TrackerSparqlQuery* _tmp29_; @@ -8021,155 +8270,155 @@ gchar* _tmp35_ = NULL; gchar* _tmp36_; gchar* _tmp37_; -#line 831 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 873 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp27_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 831 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 873 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" ns = _tmp27_; -#line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COLON, &_inner_error_); -#line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (ns); -#line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 8036 "tracker-sparql-pattern.c" +#line 8285 "tracker-sparql-pattern.c" goto __catch1_tracker_sparql_error; } -#line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (ns); -#line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 8045 "tracker-sparql-pattern.c" +#line 8294 "tracker-sparql-pattern.c" { TrackerSourceLocation _tmp28_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp28_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp28_); -#line 8052 "tracker-sparql-pattern.c" +#line 8301 "tracker-sparql-pattern.c" } -#line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return FALSE; -#line 8060 "tracker-sparql-pattern.c" +#line 8309 "tracker-sparql-pattern.c" } -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp29_ = self->priv->query; -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp30_ = ns; -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp31_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp32_ = _tmp31_; -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp33_ = string_substring (_tmp32_, (glong) 1, (glong) (-1)); -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp34_ = _tmp33_; -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp35_ = tracker_sparql_query_resolve_prefixed_name (_tmp29_, _tmp30_, _tmp34_, &_inner_error_); -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp36_ = _tmp35_; -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp34_); -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp32_); -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp37_ = _tmp36_; -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (ns); -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 8094 "tracker-sparql-pattern.c" +#line 8343 "tracker-sparql-pattern.c" goto __catch1_tracker_sparql_error; } -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (ns); -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 8103 "tracker-sparql-pattern.c" +#line 8352 "tracker-sparql-pattern.c" { TrackerSourceLocation _tmp38_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp38_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp38_); -#line 8110 "tracker-sparql-pattern.c" +#line 8359 "tracker-sparql-pattern.c" } -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return FALSE; -#line 8118 "tracker-sparql-pattern.c" +#line 8367 "tracker-sparql-pattern.c" } -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 875 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" predicate = _tmp37_; -#line 830 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (ns); -#line 8126 "tracker-sparql-pattern.c" +#line 8375 "tracker-sparql-pattern.c" } else { gboolean _tmp39_ = FALSE; gboolean _tmp40_; -#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 876 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp39_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_COLON, &_inner_error_); -#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 876 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp40_ = _tmp39_; -#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 876 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 876 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 876 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 876 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 8142 "tracker-sparql-pattern.c" +#line 8391 "tracker-sparql-pattern.c" goto __catch1_tracker_sparql_error; } -#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 876 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 876 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 8149 "tracker-sparql-pattern.c" +#line 8398 "tracker-sparql-pattern.c" { TrackerSourceLocation _tmp41_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp41_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp41_); -#line 8156 "tracker-sparql-pattern.c" +#line 8405 "tracker-sparql-pattern.c" } -#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 876 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 876 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 876 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return FALSE; -#line 8164 "tracker-sparql-pattern.c" +#line 8413 "tracker-sparql-pattern.c" } -#line 834 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 876 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp40_) { -#line 8168 "tracker-sparql-pattern.c" +#line 8417 "tracker-sparql-pattern.c" TrackerSparqlQuery* _tmp42_; gchar* _tmp43_ = NULL; gchar* _tmp44_; @@ -8178,371 +8427,371 @@ gchar* _tmp47_ = NULL; gchar* _tmp48_; gchar* _tmp49_; -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp42_ = self->priv->query; -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp43_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp44_ = _tmp43_; -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp45_ = string_substring (_tmp44_, (glong) 1, (glong) (-1)); -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp46_ = _tmp45_; -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp47_ = tracker_sparql_query_resolve_prefixed_name (_tmp42_, "", _tmp46_, &_inner_error_); -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp48_ = _tmp47_; -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp46_); -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp44_); -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp49_ = _tmp48_; -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 8205 "tracker-sparql-pattern.c" +#line 8454 "tracker-sparql-pattern.c" goto __catch1_tracker_sparql_error; } -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 8212 "tracker-sparql-pattern.c" +#line 8461 "tracker-sparql-pattern.c" { TrackerSourceLocation _tmp50_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp50_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp50_); -#line 8219 "tracker-sparql-pattern.c" +#line 8468 "tracker-sparql-pattern.c" } -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return FALSE; -#line 8227 "tracker-sparql-pattern.c" +#line 8476 "tracker-sparql-pattern.c" } -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 877 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" predicate = _tmp49_; -#line 8233 "tracker-sparql-pattern.c" +#line 8482 "tracker-sparql-pattern.c" } else { -#line 837 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 879 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = FALSE; -#line 837 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 879 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 837 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 879 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 8241 "tracker-sparql-pattern.c" +#line 8490 "tracker-sparql-pattern.c" { TrackerSourceLocation _tmp51_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp51_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp51_); -#line 8248 "tracker-sparql-pattern.c" +#line 8497 "tracker-sparql-pattern.c" } -#line 837 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 879 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 8252 "tracker-sparql-pattern.c" +#line 8501 "tracker-sparql-pattern.c" } } } -#line 839 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 881 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp52_ = predicate; -#line 839 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 881 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp53_ = tracker_ontologies_get_property_by_uri (_tmp52_); -#line 839 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 881 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp54_ = _g_object_ref0 (_tmp53_); -#line 839 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 881 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" prop = _tmp54_; -#line 840 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 882 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp55_ = prop; -#line 840 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 882 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp55_ == NULL) { -#line 841 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = FALSE; -#line 841 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 841 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 841 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 8276 "tracker-sparql-pattern.c" +#line 8525 "tracker-sparql-pattern.c" { TrackerSourceLocation _tmp56_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp56_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp56_); -#line 8283 "tracker-sparql-pattern.c" +#line 8532 "tracker-sparql-pattern.c" } -#line 841 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 8287 "tracker-sparql-pattern.c" +#line 8536 "tracker-sparql-pattern.c" } -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp57_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_VAR, &_inner_error_); -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp58_ = _tmp57_; -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 8303 "tracker-sparql-pattern.c" +#line 8552 "tracker-sparql-pattern.c" goto __catch1_tracker_sparql_error; } -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 8312 "tracker-sparql-pattern.c" +#line 8561 "tracker-sparql-pattern.c" { TrackerSourceLocation _tmp59_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp59_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp59_); -#line 8319 "tracker-sparql-pattern.c" +#line 8568 "tracker-sparql-pattern.c" } -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return FALSE; -#line 8327 "tracker-sparql-pattern.c" +#line 8576 "tracker-sparql-pattern.c" } -#line 845 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp58_) { -#line 846 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 888 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = FALSE; -#line 846 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 888 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 846 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 888 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 846 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 888 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 8339 "tracker-sparql-pattern.c" +#line 8588 "tracker-sparql-pattern.c" { TrackerSourceLocation _tmp60_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp60_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp60_); -#line 8346 "tracker-sparql-pattern.c" +#line 8595 "tracker-sparql-pattern.c" } -#line 846 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 888 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 8350 "tracker-sparql-pattern.c" +#line 8599 "tracker-sparql-pattern.c" } -#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp61_ = tracker_sparql_pattern_get_context (self); -#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp62_ = _tmp61_; -#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp63_ = tracker_sparql_pattern_get_last_string (self, 0); -#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp64_ = _tmp63_; -#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp65_ = string_substring (_tmp64_, (glong) 1, (glong) (-1)); -#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp66_ = _tmp65_; -#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp67_ = tracker_sparql_context_get_variable (_tmp62_, _tmp66_); -#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp68_ = _g_object_ref0 (_tmp67_); -#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp69_ = _tmp68_; -#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp66_); -#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp64_); -#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" right_variable = _tmp69_; -#line 849 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp70_ = tracker_sparql_pattern_get_context (self); -#line 849 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp71_ = _tmp70_; -#line 849 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp72_ = _tmp71_->var_set; -#line 849 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp73_ = right_variable; -#line 849 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp74_ = g_hash_table_lookup (_tmp72_, _tmp73_); -#line 849 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" right_variable_state = GPOINTER_TO_INT (_tmp74_); -#line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_DOT, &_inner_error_); -#line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (right_variable); -#line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 8402 "tracker-sparql-pattern.c" +#line 8651 "tracker-sparql-pattern.c" goto __catch1_tracker_sparql_error; } -#line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (right_variable); -#line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 8413 "tracker-sparql-pattern.c" +#line 8662 "tracker-sparql-pattern.c" { TrackerSourceLocation _tmp75_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp75_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp75_); -#line 8420 "tracker-sparql-pattern.c" +#line 8669 "tracker-sparql-pattern.c" } -#line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return FALSE; -#line 8428 "tracker-sparql-pattern.c" +#line 8677 "tracker-sparql-pattern.c" } -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp76_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACE, &_inner_error_); -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp77_ = _tmp76_; -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (right_variable); -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 8446 "tracker-sparql-pattern.c" +#line 8695 "tracker-sparql-pattern.c" goto __catch1_tracker_sparql_error; } -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (right_variable); -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 8457 "tracker-sparql-pattern.c" +#line 8706 "tracker-sparql-pattern.c" { TrackerSourceLocation _tmp78_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp78_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp78_); -#line 8464 "tracker-sparql-pattern.c" +#line 8713 "tracker-sparql-pattern.c" } -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return FALSE; -#line 8472 "tracker-sparql-pattern.c" +#line 8721 "tracker-sparql-pattern.c" } -#line 855 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp77_) { -#line 856 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = FALSE; -#line 856 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (right_variable); -#line 856 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 856 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 856 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 8486 "tracker-sparql-pattern.c" +#line 8735 "tracker-sparql-pattern.c" { TrackerSourceLocation _tmp79_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp79_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp79_); -#line 8493 "tracker-sparql-pattern.c" +#line 8742 "tracker-sparql-pattern.c" } -#line 856 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 8497 "tracker-sparql-pattern.c" +#line 8746 "tracker-sparql-pattern.c" } -#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp82_ = left_variable_state; -#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp82_ == ((gint) TRACKER_SPARQL_VARIABLE_STATE_BOUND)) { -#line 8503 "tracker-sparql-pattern.c" +#line 8752 "tracker-sparql-pattern.c" TrackerProperty* _tmp83_; gboolean _tmp84_; gboolean _tmp85_; -#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp83_ = prop; -#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp84_ = tracker_property_get_multiple_values (_tmp83_); -#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp85_ = _tmp84_; -#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp81_ = !_tmp85_; -#line 8515 "tracker-sparql-pattern.c" +#line 8764 "tracker-sparql-pattern.c" } else { -#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp81_ = FALSE; -#line 8519 "tracker-sparql-pattern.c" +#line 8768 "tracker-sparql-pattern.c" } -#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp86_ = _tmp81_; -#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp86_) { -#line 8525 "tracker-sparql-pattern.c" +#line 8774 "tracker-sparql-pattern.c" gint _tmp87_; -#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp87_ = right_variable_state; -#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp80_ = _tmp87_ == 0; -#line 8531 "tracker-sparql-pattern.c" +#line 8780 "tracker-sparql-pattern.c" } else { -#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp80_ = FALSE; -#line 8535 "tracker-sparql-pattern.c" +#line 8784 "tracker-sparql-pattern.c" } -#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp88_ = _tmp80_; -#line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp88_) { -#line 8541 "tracker-sparql-pattern.c" +#line 8790 "tracker-sparql-pattern.c" gboolean in_domain; TrackerSparqlPatternTripleContext* _tmp89_; GHashTable* _tmp90_; @@ -8550,116 +8799,116 @@ gconstpointer _tmp92_ = NULL; GList* _tmp93_; gboolean _tmp105_; -#line 860 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 902 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" in_domain = FALSE; -#line 861 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 903 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp89_ = self->priv->triple_context; -#line 861 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 903 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp90_ = _tmp89_->var_bindings; -#line 861 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 903 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp91_ = left_variable; -#line 861 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 903 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp92_ = g_hash_table_lookup (_tmp90_, _tmp91_); -#line 861 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 903 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp93_ = ((TrackerSparqlVariableBindingList*) _tmp92_)->list; -#line 8561 "tracker-sparql-pattern.c" +#line 8810 "tracker-sparql-pattern.c" { GList* binding_collection = NULL; GList* binding_it = NULL; -#line 861 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 903 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" binding_collection = _tmp93_; -#line 861 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 903 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (binding_it = binding_collection; binding_it != NULL; binding_it = binding_it->next) { -#line 8569 "tracker-sparql-pattern.c" +#line 8818 "tracker-sparql-pattern.c" TrackerSparqlVariableBinding* _tmp94_; TrackerSparqlVariableBinding* binding = NULL; -#line 861 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 903 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp94_ = _g_object_ref0 ((TrackerSparqlVariableBinding*) binding_it->data); -#line 861 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 903 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" binding = _tmp94_; -#line 8576 "tracker-sparql-pattern.c" +#line 8825 "tracker-sparql-pattern.c" { gboolean _tmp95_ = FALSE; TrackerSparqlVariableBinding* _tmp96_; TrackerClass* _tmp97_; gboolean _tmp104_; -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp96_ = binding; -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp97_ = _tmp96_->type; -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp97_ != NULL) { -#line 8588 "tracker-sparql-pattern.c" +#line 8837 "tracker-sparql-pattern.c" TrackerSparqlVariableBinding* _tmp98_; TrackerClass* _tmp99_; TrackerProperty* _tmp100_; TrackerClass* _tmp101_; TrackerClass* _tmp102_; gboolean _tmp103_ = FALSE; -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp98_ = binding; -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp99_ = _tmp98_->type; -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp100_ = prop; -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp101_ = tracker_property_get_domain (_tmp100_); -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp102_ = _tmp101_; -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp103_ = tracker_sparql_pattern_is_subclass (self, _tmp99_, _tmp102_); -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp95_ = _tmp103_; -#line 8609 "tracker-sparql-pattern.c" +#line 8858 "tracker-sparql-pattern.c" } else { -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp95_ = FALSE; -#line 8613 "tracker-sparql-pattern.c" +#line 8862 "tracker-sparql-pattern.c" } -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp104_ = _tmp95_; -#line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp104_) { -#line 863 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 905 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" in_domain = TRUE; -#line 864 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 906 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (binding); -#line 864 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 906 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 8625 "tracker-sparql-pattern.c" +#line 8874 "tracker-sparql-pattern.c" } -#line 861 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 903 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (binding); -#line 8629 "tracker-sparql-pattern.c" +#line 8878 "tracker-sparql-pattern.c" } } } -#line 868 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 910 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp105_ = in_domain; -#line 868 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 910 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp105_) { -#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 912 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = TRUE; -#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 912 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (right_variable); -#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 912 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 912 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 912 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 8647 "tracker-sparql-pattern.c" +#line 8896 "tracker-sparql-pattern.c" { TrackerSourceLocation _tmp106_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp106_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp106_); -#line 8654 "tracker-sparql-pattern.c" +#line 8903 "tracker-sparql-pattern.c" } -#line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 912 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 8658 "tracker-sparql-pattern.c" +#line 8907 "tracker-sparql-pattern.c" } } else { gboolean _tmp107_ = FALSE; @@ -8667,176 +8916,176 @@ gint _tmp109_; gboolean _tmp113_; gboolean _tmp115_; -#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp109_ = left_variable_state; -#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp109_ == 0) { -#line 8670 "tracker-sparql-pattern.c" +#line 8919 "tracker-sparql-pattern.c" TrackerProperty* _tmp110_; gboolean _tmp111_; gboolean _tmp112_; -#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp110_ = prop; -#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp111_ = tracker_property_get_is_inverse_functional_property (_tmp110_); -#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp112_ = _tmp111_; -#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp108_ = _tmp112_; -#line 8682 "tracker-sparql-pattern.c" +#line 8931 "tracker-sparql-pattern.c" } else { -#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp108_ = FALSE; -#line 8686 "tracker-sparql-pattern.c" +#line 8935 "tracker-sparql-pattern.c" } -#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp113_ = _tmp108_; -#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp113_) { -#line 8692 "tracker-sparql-pattern.c" +#line 8941 "tracker-sparql-pattern.c" gint _tmp114_; -#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp114_ = right_variable_state; -#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp107_ = _tmp114_ == ((gint) TRACKER_SPARQL_VARIABLE_STATE_BOUND); -#line 8698 "tracker-sparql-pattern.c" +#line 8947 "tracker-sparql-pattern.c" } else { -#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp107_ = FALSE; -#line 8702 "tracker-sparql-pattern.c" +#line 8951 "tracker-sparql-pattern.c" } -#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp115_ = _tmp107_; -#line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp115_) { -#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = TRUE; -#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (right_variable); -#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 8718 "tracker-sparql-pattern.c" +#line 8967 "tracker-sparql-pattern.c" { TrackerSourceLocation _tmp116_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp116_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp116_); -#line 8725 "tracker-sparql-pattern.c" +#line 8974 "tracker-sparql-pattern.c" } -#line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 8729 "tracker-sparql-pattern.c" +#line 8978 "tracker-sparql-pattern.c" } } -#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = FALSE; -#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (right_variable); -#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (predicate); -#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (left_variable); -#line 8742 "tracker-sparql-pattern.c" +#line 8991 "tracker-sparql-pattern.c" { TrackerSourceLocation _tmp117_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp117_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp117_); -#line 8749 "tracker-sparql-pattern.c" +#line 8998 "tracker-sparql-pattern.c" } -#line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 8753 "tracker-sparql-pattern.c" +#line 9002 "tracker-sparql-pattern.c" } goto __finally1; __catch1_tracker_sparql_error: { GError* e = NULL; -#line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" e = _inner_error_; -#line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _inner_error_ = NULL; -#line 880 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 922 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = FALSE; -#line 880 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 922 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_error_free0 (e); -#line 8767 "tracker-sparql-pattern.c" +#line 9016 "tracker-sparql-pattern.c" { TrackerSourceLocation _tmp118_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp118_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp118_); -#line 8774 "tracker-sparql-pattern.c" +#line 9023 "tracker-sparql-pattern.c" } -#line 880 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 922 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 8778 "tracker-sparql-pattern.c" +#line 9027 "tracker-sparql-pattern.c" } __finally1: { TrackerSourceLocation _tmp119_; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp119_ = optional_start; -#line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 925 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp119_); -#line 8787 "tracker-sparql-pattern.c" +#line 9036 "tracker-sparql-pattern.c" } -#line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return FALSE; -#line 8795 "tracker-sparql-pattern.c" +#line 9044 "tracker-sparql-pattern.c" } static gpointer _g_hash_table_ref0 (gpointer self) { -#line 895 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return self ? g_hash_table_ref (self) : NULL; -#line 8802 "tracker-sparql-pattern.c" +#line 9051 "tracker-sparql-pattern.c" } static guint _tracker_sparql_variable_hash_ghash_func (gconstpointer key) { guint result; result = tracker_sparql_variable_hash (key); -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 938 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 8811 "tracker-sparql-pattern.c" +#line 9060 "tracker-sparql-pattern.c" } static gboolean _tracker_sparql_variable_equal_gequal_func (gconstpointer a, gconstpointer b) { gboolean result; result = tracker_sparql_variable_equal (a, b); -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 938 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 8820 "tracker-sparql-pattern.c" +#line 9069 "tracker-sparql-pattern.c" } -static void _vala_array_add6 (TrackerSourceLocation** array, int* length, int* size, const TrackerSourceLocation* value) { -#line 1085 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +static void _vala_array_add8 (TrackerSourceLocation** array, int* length, int* size, const TrackerSourceLocation* value) { +#line 1127 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if ((*length) == (*size)) { -#line 1085 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1127 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *size = (*size) ? (2 * (*size)) : 4; -#line 1085 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1127 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *array = g_renew (TrackerSourceLocation, *array, *size); -#line 8831 "tracker-sparql-pattern.c" +#line 9080 "tracker-sparql-pattern.c" } -#line 1085 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1127 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" (*array)[(*length)++] = *value; -#line 8835 "tracker-sparql-pattern.c" +#line 9084 "tracker-sparql-pattern.c" } @@ -8873,36 +9122,36 @@ TrackerSparqlContext* _tmp297_; TrackerSparqlContext* _tmp298_; GError * _inner_error_ = NULL; -#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 929 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (self != NULL, NULL); -#line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 929 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (sql != NULL, NULL); -#line 888 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_BRACE, &_inner_error_); -#line 888 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 888 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 888 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 888 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 8886 "tracker-sparql-pattern.c" +#line 9135 "tracker-sparql-pattern.c" } else { -#line 888 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 888 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 888 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 8894 "tracker-sparql-pattern.c" +#line 9143 "tracker-sparql-pattern.c" } } -#line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 932 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = tracker_sparql_pattern_current (self); -#line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 932 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp0_ == TRACKER_SPARQL_TOKEN_TYPE_SELECT) { -#line 8901 "tracker-sparql-pattern.c" +#line 9150 "tracker-sparql-pattern.c" GString* _tmp1_; TrackerSparqlSelectContext* _tmp2_ = NULL; TrackerSparqlSelectContext* _result_; @@ -8920,401 +9169,401 @@ TrackerSparqlContext* _tmp14_; TrackerSparqlContext* _tmp15_; TrackerSparqlContext* _tmp16_; -#line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 933 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = sql; -#line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 933 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = tracker_sparql_pattern_translate_select (self, _tmp1_, TRUE, FALSE, &_inner_error_); -#line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 933 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp2_; -#line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 933 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 933 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 933 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 933 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 8933 "tracker-sparql-pattern.c" +#line 9182 "tracker-sparql-pattern.c" } else { -#line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 933 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 933 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 933 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 8941 "tracker-sparql-pattern.c" +#line 9190 "tracker-sparql-pattern.c" } } -#line 892 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = _result_; -#line 892 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 934 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_context (self, (TrackerSparqlContext*) _tmp3_); -#line 895 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp4_ = tracker_sparql_pattern_get_context (self); -#line 895 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_ = _tmp4_; -#line 895 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp6_ = tracker_sparql_pattern_get_context (self); -#line 895 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp7_ = _tmp6_; -#line 895 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp8_ = _tmp7_->select_var_set; -#line 895 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp9_ = _g_hash_table_ref0 (_tmp8_); -#line 895 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_hash_table_unref0 (_tmp5_->var_set); -#line 895 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_->var_set = _tmp9_; -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 938 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp10_ = tracker_sparql_pattern_get_context (self); -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 938 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp11_ = _tmp10_; -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 938 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp12_ = g_object_unref; -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 938 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp13_ = g_hash_table_new_full (_tracker_sparql_variable_hash_ghash_func, _tracker_sparql_variable_equal_gequal_func, _tmp12_, NULL); -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 938 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_hash_table_unref0 (_tmp11_->select_var_set); -#line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 938 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp11_->select_var_set = _tmp13_; -#line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 940 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACE, &_inner_error_); -#line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 940 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 940 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 940 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 940 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 940 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 8988 "tracker-sparql-pattern.c" +#line 9237 "tracker-sparql-pattern.c" } else { -#line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 940 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 940 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 940 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 940 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 8998 "tracker-sparql-pattern.c" +#line 9247 "tracker-sparql-pattern.c" } } -#line 900 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 942 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp14_ = tracker_sparql_pattern_get_context (self); -#line 900 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 942 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp15_ = _tmp14_; -#line 900 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 942 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp16_ = _tmp15_->parent_context; -#line 900 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 942 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_context (self, _tmp16_); -#line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 943 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = (TrackerSparqlContext*) _result_; -#line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 943 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 9013 "tracker-sparql-pattern.c" +#line 9262 "tracker-sparql-pattern.c" } -#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 946 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp17_ = self->priv->query; -#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 946 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp18_ = tracker_sparql_pattern_get_context (self); -#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 946 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp19_ = _tmp18_; -#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 946 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp20_ = tracker_sparql_context_new (_tmp17_, _tmp19_); -#line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 946 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _result_ = _tmp20_; -#line 905 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 947 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp21_ = _result_; -#line 905 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 947 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_context (self, _tmp21_); -#line 907 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 949 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp22_ = g_new0 (TrackerSourceLocation, 0); -#line 907 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 949 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = _tmp22_; -#line 907 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 949 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters_length1 = 0; -#line 907 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 949 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _filters_size_ = filters_length1; -#line 909 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" in_triples_block = FALSE; -#line 910 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 952 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" in_group_graph_pattern = FALSE; -#line 911 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first_where = TRUE; -#line 912 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 954 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" found_simple_optional = FALSE; -#line 913 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 955 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp23_ = sql; -#line 913 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 955 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp24_ = _tmp23_->len; -#line 913 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 955 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" group_graph_pattern_start = (glong) _tmp24_; -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp25_ = sql; -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp26_ = group_graph_pattern_start; -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp27_ = found_simple_optional; -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_parse_triples (self, _tmp25_, _tmp26_, &in_triples_block, &first_where, &in_group_graph_pattern, _tmp27_, &_inner_error_); -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 9071 "tracker-sparql-pattern.c" +#line 9320 "tracker-sparql-pattern.c" } else { -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 916 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 9083 "tracker-sparql-pattern.c" +#line 9332 "tracker-sparql-pattern.c" } } -#line 918 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 960 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" while (TRUE) { -#line 9088 "tracker-sparql-pattern.c" +#line 9337 "tracker-sparql-pattern.c" gboolean _tmp28_ = FALSE; gboolean _tmp29_; GString* _tmp275_; glong _tmp276_; gboolean _tmp277_; -#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp28_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OPTIONAL, &_inner_error_); -#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp29_ = _tmp28_; -#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 9110 "tracker-sparql-pattern.c" +#line 9359 "tracker-sparql-pattern.c" } else { -#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 9122 "tracker-sparql-pattern.c" +#line 9371 "tracker-sparql-pattern.c" } } -#line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp29_) { -#line 9127 "tracker-sparql-pattern.c" +#line 9376 "tracker-sparql-pattern.c" gboolean _tmp30_ = FALSE; gboolean _tmp31_; gboolean _tmp33_; -#line 921 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 963 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp31_ = in_group_graph_pattern; -#line 921 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 963 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp31_) { -#line 9135 "tracker-sparql-pattern.c" +#line 9384 "tracker-sparql-pattern.c" gboolean _tmp32_ = FALSE; -#line 921 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 963 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp32_ = tracker_sparql_pattern_is_simple_optional (self); -#line 921 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 963 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp30_ = _tmp32_; -#line 9141 "tracker-sparql-pattern.c" +#line 9390 "tracker-sparql-pattern.c" } else { -#line 921 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 963 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp30_ = FALSE; -#line 9145 "tracker-sparql-pattern.c" +#line 9394 "tracker-sparql-pattern.c" } -#line 921 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 963 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp33_ = _tmp30_; -#line 921 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 963 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp33_) { -#line 9151 "tracker-sparql-pattern.c" +#line 9400 "tracker-sparql-pattern.c" GString* _tmp34_; gboolean _tmp35_ = FALSE; gchar* _tmp36_ = NULL; gchar* _tmp37_; GString* _tmp38_; -#line 923 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 965 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" found_simple_optional = TRUE; -#line 924 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 966 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_BRACE, &_inner_error_); -#line 924 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 966 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 924 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 966 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 924 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 966 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 924 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 966 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 924 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 966 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 924 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 966 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 9173 "tracker-sparql-pattern.c" +#line 9422 "tracker-sparql-pattern.c" } else { -#line 924 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 966 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 924 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 966 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 924 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 966 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 924 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 966 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 924 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 966 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 9185 "tracker-sparql-pattern.c" +#line 9434 "tracker-sparql-pattern.c" } } -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp34_ = sql; -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp36_ = tracker_sparql_pattern_parse_var_or_term (self, _tmp34_, &_tmp35_, &_inner_error_); -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_subject_is_var = _tmp35_; -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp37_ = _tmp36_; -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 9208 "tracker-sparql-pattern.c" +#line 9457 "tracker-sparql-pattern.c" } else { -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 9220 "tracker-sparql-pattern.c" +#line 9469 "tracker-sparql-pattern.c" } } -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (self->priv->current_subject); -#line 926 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_subject = _tmp37_; -#line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 969 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp38_ = sql; -#line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 969 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_parse_property_list_not_empty (self, _tmp38_, TRUE, &_inner_error_); -#line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 969 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 969 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 969 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 969 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 969 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 969 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 9243 "tracker-sparql-pattern.c" +#line 9492 "tracker-sparql-pattern.c" } else { -#line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 969 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 969 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 969 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 969 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 969 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 9255 "tracker-sparql-pattern.c" +#line 9504 "tracker-sparql-pattern.c" } } -#line 929 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_DOT, &_inner_error_); -#line 929 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 929 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 929 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 929 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 929 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 929 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 9272 "tracker-sparql-pattern.c" +#line 9521 "tracker-sparql-pattern.c" } else { -#line 929 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 929 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 929 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 929 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 929 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 9284 "tracker-sparql-pattern.c" +#line 9533 "tracker-sparql-pattern.c" } } -#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACE, &_inner_error_); -#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 9301 "tracker-sparql-pattern.c" +#line 9550 "tracker-sparql-pattern.c" } else { -#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 930 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 9313 "tracker-sparql-pattern.c" +#line 9562 "tracker-sparql-pattern.c" } } } else { @@ -9361,188 +9610,188 @@ GString* _tmp222_; glong _tmp223_; GString* _tmp224_; -#line 932 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp40_ = in_triples_block; -#line 932 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp40_) { -#line 9364 "tracker-sparql-pattern.c" +#line 9613 "tracker-sparql-pattern.c" gboolean _tmp41_; -#line 932 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp41_ = in_group_graph_pattern; -#line 932 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp39_ = !_tmp41_; -#line 9370 "tracker-sparql-pattern.c" +#line 9619 "tracker-sparql-pattern.c" } else { -#line 932 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp39_ = FALSE; -#line 9374 "tracker-sparql-pattern.c" +#line 9623 "tracker-sparql-pattern.c" } -#line 932 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp42_ = _tmp39_; -#line 932 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 974 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp42_) { -#line 9380 "tracker-sparql-pattern.c" +#line 9629 "tracker-sparql-pattern.c" GString* _tmp43_; -#line 935 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 977 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp43_ = sql; -#line 935 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 977 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp43_, "SELECT 1"); -#line 9386 "tracker-sparql-pattern.c" +#line 9635 "tracker-sparql-pattern.c" } else { gboolean _tmp44_; -#line 936 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 978 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp44_ = in_triples_block; -#line 936 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 978 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp44_) { -#line 9393 "tracker-sparql-pattern.c" +#line 9642 "tracker-sparql-pattern.c" GString* _tmp45_; gboolean _tmp46_; -#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp45_ = sql; -#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp46_ = in_group_graph_pattern; -#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_end_triples_block (self, _tmp45_, &first_where, _tmp46_, &_inner_error_); -#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 9414 "tracker-sparql-pattern.c" +#line 9663 "tracker-sparql-pattern.c" } else { -#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 9426 "tracker-sparql-pattern.c" +#line 9675 "tracker-sparql-pattern.c" } } -#line 938 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 980 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" in_triples_block = FALSE; -#line 9431 "tracker-sparql-pattern.c" +#line 9680 "tracker-sparql-pattern.c" } } -#line 940 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 982 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp47_ = in_group_graph_pattern; -#line 940 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 982 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp47_) { -#line 941 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 983 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" in_group_graph_pattern = TRUE; -#line 9440 "tracker-sparql-pattern.c" +#line 9689 "tracker-sparql-pattern.c" } -#line 944 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 986 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp48_ = g_string_new ("SELECT "); -#line 944 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 986 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" select = _tmp48_; -#line 946 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 988 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp49_ = self->priv->next_table_index; -#line 946 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 988 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->next_table_index = _tmp49_ + 1; -#line 946 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 988 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp50_ = self->priv->next_table_index; -#line 946 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 988 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" left_index = _tmp50_; -#line 947 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp51_ = self->priv->next_table_index; -#line 947 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->next_table_index = _tmp51_ + 1; -#line 947 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp52_ = self->priv->next_table_index; -#line 947 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" right_index = _tmp52_; -#line 949 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 991 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp53_ = sql; -#line 949 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 991 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp54_ = left_index; -#line 949 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 991 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp53_, ") AS t%d_g LEFT JOIN (", _tmp54_); -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp55_ = sql; -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp56_ = tracker_sparql_pattern_translate_group_graph_pattern (self, _tmp55_, &_inner_error_); -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp57_ = _tmp56_; -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (select); -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 9488 "tracker-sparql-pattern.c" +#line 9737 "tracker-sparql-pattern.c" } else { -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (select); -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 9502 "tracker-sparql-pattern.c" +#line 9751 "tracker-sparql-pattern.c" } } -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp58_ = _tmp57_; -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_context (self, _tmp58_); -#line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_tmp58_); -#line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 995 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp59_ = sql; -#line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 995 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp60_ = right_index; -#line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 995 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp59_, ") AS t%d_g", _tmp60_); -#line 955 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first = TRUE; -#line 956 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first_common = TRUE; -#line 957 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 999 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp61_ = tracker_sparql_pattern_get_context (self); -#line 957 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 999 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp62_ = _tmp61_; -#line 957 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 999 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp63_ = _tmp62_->var_set; -#line 957 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 999 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp64_ = g_hash_table_get_keys (_tmp63_); -#line 9529 "tracker-sparql-pattern.c" +#line 9778 "tracker-sparql-pattern.c" { GList* v_collection = NULL; GList* v_it = NULL; -#line 957 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 999 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" v_collection = _tmp64_; -#line 957 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 999 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (v_it = v_collection; v_it != NULL; v_it = v_it->next) { -#line 9537 "tracker-sparql-pattern.c" +#line 9786 "tracker-sparql-pattern.c" TrackerSparqlVariable* v = NULL; -#line 957 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 999 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" v = (TrackerSparqlVariable*) v_it->data; -#line 9541 "tracker-sparql-pattern.c" +#line 9790 "tracker-sparql-pattern.c" { gboolean _tmp65_; TrackerSparqlContext* _tmp67_; @@ -9553,40 +9802,40 @@ gconstpointer _tmp72_ = NULL; gint old_state; gint _tmp73_; -#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1000 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp65_ = first; -#line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1000 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp65_) { -#line 959 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1001 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first = FALSE; -#line 9558 "tracker-sparql-pattern.c" +#line 9807 "tracker-sparql-pattern.c" } else { GString* _tmp66_; -#line 961 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1003 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp66_ = select; -#line 961 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1003 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp66_, ", "); -#line 9565 "tracker-sparql-pattern.c" +#line 9814 "tracker-sparql-pattern.c" } -#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp67_ = tracker_sparql_pattern_get_context (self); -#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp68_ = _tmp67_; -#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp69_ = _tmp68_->parent_context; -#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp70_ = _tmp69_->var_set; -#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp71_ = v; -#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp72_ = g_hash_table_lookup (_tmp70_, _tmp71_); -#line 964 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" old_state = GPOINTER_TO_INT (_tmp72_); -#line 965 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp73_ = old_state; -#line 965 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp73_ == 0) { -#line 9585 "tracker-sparql-pattern.c" +#line 9834 "tracker-sparql-pattern.c" TrackerSparqlContext* _tmp74_; TrackerSparqlContext* _tmp75_; TrackerSparqlContext* _tmp76_; @@ -9601,41 +9850,41 @@ TrackerSparqlVariable* _tmp85_; TrackerSparqlVariableBinding* _tmp86_; TrackerPropertyType _tmp87_; -#line 967 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1009 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp74_ = tracker_sparql_pattern_get_context (self); -#line 967 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1009 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp75_ = _tmp74_; -#line 967 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1009 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp76_ = _tmp75_->parent_context; -#line 967 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1009 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp77_ = _tmp76_->var_set; -#line 967 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1009 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp78_ = v; -#line 967 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1009 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp79_ = _g_object_ref0 (_tmp78_); -#line 967 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1009 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_hash_table_insert (_tmp77_, _tmp79_, GINT_TO_POINTER ((gint) TRACKER_SPARQL_VARIABLE_STATE_OPTIONAL)); -#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1010 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp80_ = select; -#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1010 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp81_ = right_index; -#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1010 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp82_ = v; -#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1010 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp83_ = tracker_sparql_variable_get_sql_expression (_tmp82_); -#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1010 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp84_ = _tmp83_; -#line 968 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1010 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp80_, "t%d_g.%s", _tmp81_, _tmp84_); -#line 970 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp85_ = v; -#line 970 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp86_ = _tmp85_->binding; -#line 970 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp87_ = ((TrackerSparqlDataBinding*) _tmp86_)->data_type; -#line 970 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp87_ == TRACKER_PROPERTY_TYPE_DATETIME) { -#line 9634 "tracker-sparql-pattern.c" +#line 9883 "tracker-sparql-pattern.c" GString* _tmp88_; gint _tmp89_; TrackerSparqlVariable* _tmp90_; @@ -9646,65 +9895,65 @@ TrackerSparqlVariable* _tmp95_; gchar* _tmp96_ = NULL; gchar* _tmp97_; -#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1013 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp88_ = select; -#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1013 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp89_ = right_index; -#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1013 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp90_ = v; -#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1013 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp91_ = tracker_sparql_variable_get_extra_sql_expression (_tmp90_, "localDate"); -#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1013 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp92_ = _tmp91_; -#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1013 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp88_, ", t%d_g.%s", _tmp89_, _tmp92_); -#line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1013 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp92_); -#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1014 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp93_ = select; -#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1014 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp94_ = right_index; -#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1014 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp95_ = v; -#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1014 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp96_ = tracker_sparql_variable_get_extra_sql_expression (_tmp95_, "localTime"); -#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1014 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp97_ = _tmp96_; -#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1014 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp93_, ", t%d_g.%s", _tmp94_, _tmp97_); -#line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1014 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp97_); -#line 9673 "tracker-sparql-pattern.c" +#line 9922 "tracker-sparql-pattern.c" } } else { gboolean _tmp98_; gint _tmp101_; -#line 975 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1017 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp98_ = first_common; -#line 975 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1017 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp98_) { -#line 9682 "tracker-sparql-pattern.c" +#line 9931 "tracker-sparql-pattern.c" GString* _tmp99_; -#line 976 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1018 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp99_ = sql; -#line 976 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1018 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp99_, " ON "); -#line 977 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1019 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first_common = FALSE; -#line 9690 "tracker-sparql-pattern.c" +#line 9939 "tracker-sparql-pattern.c" } else { GString* _tmp100_; -#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1021 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp100_ = sql; -#line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1021 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp100_, " AND "); -#line 9697 "tracker-sparql-pattern.c" +#line 9946 "tracker-sparql-pattern.c" } -#line 982 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1024 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp101_ = old_state; -#line 982 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1024 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp101_ == ((gint) TRACKER_SPARQL_VARIABLE_STATE_BOUND)) { -#line 9703 "tracker-sparql-pattern.c" +#line 9952 "tracker-sparql-pattern.c" GString* _tmp102_; gint _tmp103_; TrackerSparqlVariable* _tmp104_; @@ -9722,47 +9971,47 @@ TrackerSparqlVariable* _tmp116_; TrackerSparqlVariableBinding* _tmp117_; TrackerPropertyType _tmp118_; -#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1026 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp102_ = sql; -#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1026 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp103_ = left_index; -#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1026 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp104_ = v; -#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1026 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp105_ = tracker_sparql_variable_get_sql_expression (_tmp104_); -#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1026 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp106_ = _tmp105_; -#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1026 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp107_ = right_index; -#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1026 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp108_ = v; -#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1026 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp109_ = tracker_sparql_variable_get_sql_expression (_tmp108_); -#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1026 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp110_ = _tmp109_; -#line 984 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1026 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp102_, "t%d_g.%s = t%d_g.%s", _tmp103_, _tmp106_, _tmp107_, _tmp110_); -#line 985 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1027 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp111_ = select; -#line 985 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1027 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp112_ = left_index; -#line 985 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1027 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp113_ = v; -#line 985 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1027 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp114_ = tracker_sparql_variable_get_sql_expression (_tmp113_); -#line 985 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1027 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp115_ = _tmp114_; -#line 985 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1027 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp111_, "t%d_g.%s", _tmp112_, _tmp115_); -#line 987 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1029 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp116_ = v; -#line 987 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1029 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp117_ = _tmp116_->binding; -#line 987 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1029 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp118_ = ((TrackerSparqlDataBinding*) _tmp117_)->data_type; -#line 987 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1029 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp118_ == TRACKER_PROPERTY_TYPE_DATETIME) { -#line 9761 "tracker-sparql-pattern.c" +#line 10010 "tracker-sparql-pattern.c" GString* _tmp119_; gint _tmp120_; TrackerSparqlVariable* _tmp121_; @@ -9773,43 +10022,43 @@ TrackerSparqlVariable* _tmp126_; gchar* _tmp127_ = NULL; gchar* _tmp128_; -#line 988 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1030 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp119_ = select; -#line 988 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1030 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp120_ = left_index; -#line 988 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1030 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp121_ = v; -#line 988 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1030 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp122_ = tracker_sparql_variable_get_extra_sql_expression (_tmp121_, "localDate"); -#line 988 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1030 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp123_ = _tmp122_; -#line 988 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1030 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp119_, ", t%d_g.%s", _tmp120_, _tmp123_); -#line 988 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1030 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp123_); -#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1031 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp124_ = select; -#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1031 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp125_ = left_index; -#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1031 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp126_ = v; -#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1031 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp127_ = tracker_sparql_variable_get_extra_sql_expression (_tmp126_, "localTime"); -#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1031 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp128_ = _tmp127_; -#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1031 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp124_, ", t%d_g.%s", _tmp125_, _tmp128_); -#line 989 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1031 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp128_); -#line 9800 "tracker-sparql-pattern.c" +#line 10049 "tracker-sparql-pattern.c" } } else { gint _tmp129_; -#line 991 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1033 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp129_ = old_state; -#line 991 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1033 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp129_ == ((gint) TRACKER_SPARQL_VARIABLE_STATE_OPTIONAL)) { -#line 9808 "tracker-sparql-pattern.c" +#line 10057 "tracker-sparql-pattern.c" GString* _tmp130_; gint _tmp131_; TrackerSparqlVariable* _tmp132_; @@ -9838,69 +10087,69 @@ TrackerSparqlVariable* _tmp155_; TrackerSparqlVariableBinding* _tmp156_; TrackerPropertyType _tmp157_; -#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp130_ = sql; -#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp131_ = left_index; -#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp132_ = v; -#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp133_ = tracker_sparql_variable_get_sql_expression (_tmp132_); -#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp134_ = _tmp133_; -#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp135_ = left_index; -#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp136_ = v; -#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp137_ = tracker_sparql_variable_get_sql_expression (_tmp136_); -#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp138_ = _tmp137_; -#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp139_ = right_index; -#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp140_ = v; -#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp141_ = tracker_sparql_variable_get_sql_expression (_tmp140_); -#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp142_ = _tmp141_; -#line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp130_, "(t%d_g.%s IS NULL OR t%d_g.%s = t%d_g.%s)", _tmp131_, _tmp134_, _tmp135_, _tmp138_, _tmp139_, _tmp142_); -#line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp143_ = select; -#line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp144_ = left_index; -#line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp145_ = v; -#line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp146_ = tracker_sparql_variable_get_sql_expression (_tmp145_); -#line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp147_ = _tmp146_; -#line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp148_ = right_index; -#line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp149_ = v; -#line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp150_ = tracker_sparql_variable_get_sql_expression (_tmp149_); -#line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp151_ = _tmp150_; -#line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp152_ = v; -#line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp153_ = tracker_sparql_variable_get_sql_expression (_tmp152_); -#line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp154_ = _tmp153_; -#line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp143_, "COALESCE (t%d_g.%s, t%d_g.%s) AS %s", _tmp144_, _tmp147_, _tmp148_, _tmp151_, _tmp154_); -#line 996 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp155_ = v; -#line 996 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp156_ = _tmp155_->binding; -#line 996 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp157_ = ((TrackerSparqlDataBinding*) _tmp156_)->data_type; -#line 996 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp157_ == TRACKER_PROPERTY_TYPE_DATETIME) { -#line 9899 "tracker-sparql-pattern.c" +#line 10148 "tracker-sparql-pattern.c" GString* _tmp158_; gint _tmp159_; TrackerSparqlVariable* _tmp160_; @@ -9925,123 +10174,123 @@ TrackerSparqlVariable* _tmp179_; gchar* _tmp180_ = NULL; gchar* _tmp181_; -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp158_ = select; -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp159_ = left_index; -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp160_ = v; -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp161_ = tracker_sparql_variable_get_extra_sql_expression (_tmp160_, "localDate"); -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp162_ = _tmp161_; -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp163_ = right_index; -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp164_ = v; -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp165_ = tracker_sparql_variable_get_extra_sql_expression (_tmp164_, "localDate"); -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp166_ = _tmp165_; -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp167_ = v; -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp168_ = tracker_sparql_variable_get_extra_sql_expression (_tmp167_, "localDate"); -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp169_ = _tmp168_; -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp158_, ", COALESCE (t%d_g.%s, t%d_g.%s) AS %s", _tmp159_, _tmp162_, _tmp163_, _tmp166_, _tmp169_); -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp169_); -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp166_); -#line 997 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1039 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp162_); -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp170_ = select; -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp171_ = left_index; -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp172_ = v; -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp173_ = tracker_sparql_variable_get_extra_sql_expression (_tmp172_, "localTime"); -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp174_ = _tmp173_; -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp175_ = right_index; -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp176_ = v; -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp177_ = tracker_sparql_variable_get_extra_sql_expression (_tmp176_, "localTime"); -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp178_ = _tmp177_; -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp179_ = v; -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp180_ = tracker_sparql_variable_get_extra_sql_expression (_tmp179_, "localTime"); -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp181_ = _tmp180_; -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp170_, ", COALESCE (t%d_g.%s, t%d_g.%s) AS %s", _tmp171_, _tmp174_, _tmp175_, _tmp178_, _tmp181_); -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp181_); -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp178_); -#line 998 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp174_); -#line 9988 "tracker-sparql-pattern.c" +#line 10237 "tracker-sparql-pattern.c" } } } } } } -#line 957 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 999 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_list_free0 (v_collection); -#line 9997 "tracker-sparql-pattern.c" +#line 10246 "tracker-sparql-pattern.c" } -#line 1003 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1045 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp182_ = tracker_sparql_pattern_get_context (self); -#line 1003 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1045 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp183_ = _tmp182_; -#line 1003 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1045 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp184_ = _tmp183_->parent_context; -#line 1003 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1045 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp185_ = _tmp184_->var_set; -#line 1003 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1045 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp186_ = g_hash_table_get_keys (_tmp185_); -#line 10009 "tracker-sparql-pattern.c" +#line 10258 "tracker-sparql-pattern.c" { GList* v_collection = NULL; GList* v_it = NULL; -#line 1003 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1045 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" v_collection = _tmp186_; -#line 1003 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1045 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (v_it = v_collection; v_it != NULL; v_it = v_it->next) { -#line 10017 "tracker-sparql-pattern.c" +#line 10266 "tracker-sparql-pattern.c" TrackerSparqlVariable* v = NULL; -#line 1003 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1045 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" v = (TrackerSparqlVariable*) v_it->data; -#line 10021 "tracker-sparql-pattern.c" +#line 10270 "tracker-sparql-pattern.c" { TrackerSparqlContext* _tmp187_; TrackerSparqlContext* _tmp188_; GHashTable* _tmp189_; TrackerSparqlVariable* _tmp190_; gconstpointer _tmp191_ = NULL; -#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1046 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp187_ = tracker_sparql_pattern_get_context (self); -#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1046 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp188_ = _tmp187_; -#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1046 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp189_ = _tmp188_->var_set; -#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1046 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp190_ = v; -#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1046 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp191_ = g_hash_table_lookup (_tmp189_, _tmp190_); -#line 1004 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1046 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (GPOINTER_TO_INT (_tmp191_) == 0) { -#line 10040 "tracker-sparql-pattern.c" +#line 10289 "tracker-sparql-pattern.c" gboolean _tmp192_; GString* _tmp194_; gint _tmp195_; @@ -10051,42 +10300,42 @@ TrackerSparqlVariable* _tmp199_; TrackerSparqlVariableBinding* _tmp200_; TrackerPropertyType _tmp201_; -#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp192_ = first; -#line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp192_) { -#line 1007 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1049 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first = FALSE; -#line 10056 "tracker-sparql-pattern.c" +#line 10305 "tracker-sparql-pattern.c" } else { GString* _tmp193_; -#line 1009 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1051 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp193_ = select; -#line 1009 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1051 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp193_, ", "); -#line 10063 "tracker-sparql-pattern.c" +#line 10312 "tracker-sparql-pattern.c" } -#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1054 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp194_ = select; -#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1054 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp195_ = left_index; -#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1054 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp196_ = v; -#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1054 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp197_ = tracker_sparql_variable_get_sql_expression (_tmp196_); -#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1054 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp198_ = _tmp197_; -#line 1012 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1054 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp194_, "t%d_g.%s", _tmp195_, _tmp198_); -#line 1014 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1056 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp199_ = v; -#line 1014 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1056 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp200_ = _tmp199_->binding; -#line 1014 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1056 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp201_ = ((TrackerSparqlDataBinding*) _tmp200_)->data_type; -#line 1014 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1056 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp201_ == TRACKER_PROPERTY_TYPE_DATETIME) { -#line 10085 "tracker-sparql-pattern.c" +#line 10334 "tracker-sparql-pattern.c" GString* _tmp202_; gint _tmp203_; TrackerSparqlVariable* _tmp204_; @@ -10097,128 +10346,128 @@ TrackerSparqlVariable* _tmp209_; gchar* _tmp210_ = NULL; gchar* _tmp211_; -#line 1015 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp202_ = select; -#line 1015 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp203_ = left_index; -#line 1015 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp204_ = v; -#line 1015 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp205_ = tracker_sparql_variable_get_extra_sql_expression (_tmp204_, "localDate"); -#line 1015 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp206_ = _tmp205_; -#line 1015 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp202_, ", t%d_g.%s", _tmp203_, _tmp206_); -#line 1015 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp206_); -#line 1016 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1058 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp207_ = select; -#line 1016 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1058 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp208_ = left_index; -#line 1016 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1058 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp209_ = v; -#line 1016 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1058 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp210_ = tracker_sparql_variable_get_extra_sql_expression (_tmp209_, "localTime"); -#line 1016 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1058 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp211_ = _tmp210_; -#line 1016 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1058 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp207_, ", t%d_g.%s", _tmp208_, _tmp211_); -#line 1016 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1058 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp211_); -#line 10124 "tracker-sparql-pattern.c" +#line 10373 "tracker-sparql-pattern.c" } } } } -#line 1003 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1045 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_list_free0 (v_collection); -#line 10131 "tracker-sparql-pattern.c" +#line 10380 "tracker-sparql-pattern.c" } -#line 1020 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1062 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp212_ = first; -#line 1020 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1062 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp212_) { -#line 10137 "tracker-sparql-pattern.c" +#line 10386 "tracker-sparql-pattern.c" GString* _tmp213_; -#line 1022 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1064 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp213_ = select; -#line 1022 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1064 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp213_, "1"); -#line 10143 "tracker-sparql-pattern.c" +#line 10392 "tracker-sparql-pattern.c" } -#line 1025 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1067 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp214_ = tracker_sparql_pattern_get_context (self); -#line 1025 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1067 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp215_ = _tmp214_; -#line 1025 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1067 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp216_ = _tmp215_->parent_context; -#line 1025 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1067 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_context (self, _tmp216_); -#line 1027 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1069 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp217_ = select; -#line 1027 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1069 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp217_, " FROM ("); -#line 1028 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1070 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp218_ = sql; -#line 1028 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1070 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp219_ = group_graph_pattern_start; -#line 1028 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1070 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp220_ = select; -#line 1028 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1070 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp221_ = _tmp220_->str; -#line 1028 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1070 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_insert (_tmp218_, (gssize) _tmp219_, _tmp221_); -#line 1032 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1074 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp222_ = sql; -#line 1032 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1074 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp223_ = group_graph_pattern_start; -#line 1032 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1074 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_insert (_tmp222_, (gssize) _tmp223_, "SELECT * FROM ("); -#line 1033 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1075 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp224_ = sql; -#line 1033 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1075 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp224_, ")"); -#line 921 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 963 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (select); -#line 10179 "tracker-sparql-pattern.c" +#line 10428 "tracker-sparql-pattern.c" } } else { gboolean _tmp225_ = FALSE; gboolean _tmp226_; -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp225_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_GRAPH, &_inner_error_); -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp226_ = _tmp225_; -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10200 "tracker-sparql-pattern.c" +#line 10449 "tracker-sparql-pattern.c" } else { -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10212 "tracker-sparql-pattern.c" +#line 10461 "tracker-sparql-pattern.c" } } -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp226_) { -#line 10217 "tracker-sparql-pattern.c" +#line 10466 "tracker-sparql-pattern.c" const gchar* _tmp227_; gchar* _tmp228_; gchar* old_graph; @@ -10234,132 +10483,132 @@ const gchar* _tmp251_; gchar* _tmp252_; gboolean _tmp253_; -#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1078 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp227_ = self->current_graph; -#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1078 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp228_ = g_strdup (_tmp227_); -#line 1036 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1078 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" old_graph = _tmp228_; -#line 1037 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1079 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp229_ = self->priv->current_graph_is_var; -#line 1037 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1079 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" old_graph_is_var = _tmp229_; -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp230_ = sql; -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp232_ = tracker_sparql_pattern_parse_var_or_term (self, _tmp230_, &_tmp231_, &_inner_error_); -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_graph_is_var = _tmp231_; -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp233_ = _tmp232_; -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_graph); -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10265 "tracker-sparql-pattern.c" +#line 10514 "tracker-sparql-pattern.c" } else { -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_graph); -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10279 "tracker-sparql-pattern.c" +#line 10528 "tracker-sparql-pattern.c" } } -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (self->current_graph); -#line 1038 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->current_graph = _tmp233_; -#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp235_ = in_triples_block; -#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp235_) { -#line 10290 "tracker-sparql-pattern.c" +#line 10539 "tracker-sparql-pattern.c" gboolean _tmp236_; -#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp236_ = in_group_graph_pattern; -#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp234_ = !_tmp236_; -#line 10296 "tracker-sparql-pattern.c" +#line 10545 "tracker-sparql-pattern.c" } else { -#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp234_ = FALSE; -#line 10300 "tracker-sparql-pattern.c" +#line 10549 "tracker-sparql-pattern.c" } -#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp237_ = _tmp234_; -#line 1040 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp237_) { -#line 10306 "tracker-sparql-pattern.c" +#line 10555 "tracker-sparql-pattern.c" GString* _tmp238_; glong _tmp239_; GString* _tmp240_; GString* _tmp241_; -#line 1041 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1083 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" in_group_graph_pattern = TRUE; -#line 1043 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1085 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp238_ = sql; -#line 1043 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1085 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp239_ = group_graph_pattern_start; -#line 1043 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1085 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_insert (_tmp238_, (gssize) _tmp239_, "SELECT * FROM ("); -#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp240_ = sql; -#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_translate_group_or_union_graph_pattern (self, _tmp240_, &_inner_error_); -#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_graph); -#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10337 "tracker-sparql-pattern.c" +#line 10586 "tracker-sparql-pattern.c" } else { -#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_graph); -#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1044 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10351 "tracker-sparql-pattern.c" +#line 10600 "tracker-sparql-pattern.c" } } -#line 1045 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1087 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp241_ = sql; -#line 1045 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1087 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp241_, ")"); -#line 10358 "tracker-sparql-pattern.c" +#line 10607 "tracker-sparql-pattern.c" } else { gboolean _tmp242_; gboolean _tmp245_; @@ -10368,207 +10617,207 @@ GString* _tmp248_; GString* _tmp249_; GString* _tmp250_; -#line 1047 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1089 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp242_ = in_triples_block; -#line 1047 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1089 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp242_) { -#line 10371 "tracker-sparql-pattern.c" +#line 10620 "tracker-sparql-pattern.c" GString* _tmp243_; gboolean _tmp244_; -#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp243_ = sql; -#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp244_ = in_group_graph_pattern; -#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_end_triples_block (self, _tmp243_, &first_where, _tmp244_, &_inner_error_); -#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_graph); -#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10394 "tracker-sparql-pattern.c" +#line 10643 "tracker-sparql-pattern.c" } else { -#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_graph); -#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1048 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1090 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10408 "tracker-sparql-pattern.c" +#line 10657 "tracker-sparql-pattern.c" } } -#line 1049 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" in_triples_block = FALSE; -#line 10413 "tracker-sparql-pattern.c" +#line 10662 "tracker-sparql-pattern.c" } -#line 1051 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1093 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp245_ = in_group_graph_pattern; -#line 1051 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1093 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp245_) { -#line 1052 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" in_group_graph_pattern = TRUE; -#line 10421 "tracker-sparql-pattern.c" +#line 10670 "tracker-sparql-pattern.c" } -#line 1055 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp246_ = sql; -#line 1055 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp247_ = group_graph_pattern_start; -#line 1055 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_insert (_tmp246_, (gssize) _tmp247_, "SELECT * FROM ("); -#line 1056 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1098 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp248_ = sql; -#line 1056 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1098 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp248_, ") NATURAL INNER JOIN ("); -#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp249_ = sql; -#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_translate_group_or_union_graph_pattern (self, _tmp249_, &_inner_error_); -#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_graph); -#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10451 "tracker-sparql-pattern.c" +#line 10700 "tracker-sparql-pattern.c" } else { -#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_graph); -#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1057 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10465 "tracker-sparql-pattern.c" +#line 10714 "tracker-sparql-pattern.c" } } -#line 1058 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp250_ = sql; -#line 1058 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1100 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp250_, ")"); -#line 10472 "tracker-sparql-pattern.c" +#line 10721 "tracker-sparql-pattern.c" } -#line 1061 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp251_ = old_graph; -#line 1061 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp252_ = g_strdup (_tmp251_); -#line 1061 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (self->current_graph); -#line 1061 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->current_graph = _tmp252_; -#line 1062 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1104 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp253_ = old_graph_is_var; -#line 1062 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1104 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->current_graph_is_var = _tmp253_; -#line 1035 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1077 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (old_graph); -#line 10488 "tracker-sparql-pattern.c" +#line 10737 "tracker-sparql-pattern.c" } else { TrackerSparqlTokenType _tmp254_ = 0; -#line 1063 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp254_ = tracker_sparql_pattern_current (self); -#line 1063 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1105 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp254_ == TRACKER_SPARQL_TOKEN_TYPE_OPEN_BRACE) { -#line 10495 "tracker-sparql-pattern.c" +#line 10744 "tracker-sparql-pattern.c" gboolean _tmp255_ = FALSE; gboolean _tmp256_; gboolean _tmp258_; -#line 1064 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1106 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp256_ = in_triples_block; -#line 1064 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1106 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp256_) { -#line 10503 "tracker-sparql-pattern.c" +#line 10752 "tracker-sparql-pattern.c" gboolean _tmp257_; -#line 1064 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1106 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp257_ = in_group_graph_pattern; -#line 1064 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1106 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp255_ = !_tmp257_; -#line 10509 "tracker-sparql-pattern.c" +#line 10758 "tracker-sparql-pattern.c" } else { -#line 1064 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1106 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp255_ = FALSE; -#line 10513 "tracker-sparql-pattern.c" +#line 10762 "tracker-sparql-pattern.c" } -#line 1064 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1106 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp258_ = _tmp255_; -#line 1064 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1106 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp258_) { -#line 10519 "tracker-sparql-pattern.c" +#line 10768 "tracker-sparql-pattern.c" GString* _tmp259_; glong _tmp260_; GString* _tmp261_; GString* _tmp262_; -#line 1065 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1107 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" in_group_graph_pattern = TRUE; -#line 1067 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1109 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp259_ = sql; -#line 1067 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1109 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp260_ = group_graph_pattern_start; -#line 1067 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1109 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_insert (_tmp259_, (gssize) _tmp260_, "SELECT * FROM ("); -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp261_ = sql; -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_translate_group_or_union_graph_pattern (self, _tmp261_, &_inner_error_); -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10548 "tracker-sparql-pattern.c" +#line 10797 "tracker-sparql-pattern.c" } else { -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1068 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1110 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10560 "tracker-sparql-pattern.c" +#line 10809 "tracker-sparql-pattern.c" } } -#line 1069 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1111 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp262_ = sql; -#line 1069 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1111 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp262_, ")"); -#line 10567 "tracker-sparql-pattern.c" +#line 10816 "tracker-sparql-pattern.c" } else { gboolean _tmp263_; gboolean _tmp266_; @@ -10577,513 +10826,513 @@ GString* _tmp269_; GString* _tmp270_; GString* _tmp271_; -#line 1071 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1113 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp263_ = in_triples_block; -#line 1071 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1113 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp263_) { -#line 10580 "tracker-sparql-pattern.c" +#line 10829 "tracker-sparql-pattern.c" GString* _tmp264_; gboolean _tmp265_; -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp264_ = sql; -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp265_ = in_group_graph_pattern; -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_end_triples_block (self, _tmp264_, &first_where, _tmp265_, &_inner_error_); -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10601 "tracker-sparql-pattern.c" +#line 10850 "tracker-sparql-pattern.c" } else { -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1072 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10613 "tracker-sparql-pattern.c" +#line 10862 "tracker-sparql-pattern.c" } } -#line 1073 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1115 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" in_triples_block = FALSE; -#line 10618 "tracker-sparql-pattern.c" +#line 10867 "tracker-sparql-pattern.c" } -#line 1075 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp266_ = in_group_graph_pattern; -#line 1075 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp266_) { -#line 1076 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1118 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" in_group_graph_pattern = TRUE; -#line 10626 "tracker-sparql-pattern.c" +#line 10875 "tracker-sparql-pattern.c" } -#line 1079 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1121 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp267_ = sql; -#line 1079 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1121 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp268_ = group_graph_pattern_start; -#line 1079 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1121 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_insert (_tmp267_, (gssize) _tmp268_, "SELECT * FROM ("); -#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1122 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp269_ = sql; -#line 1080 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1122 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp269_, ") NATURAL INNER JOIN ("); -#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp270_ = sql; -#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_translate_group_or_union_graph_pattern (self, _tmp270_, &_inner_error_); -#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10654 "tracker-sparql-pattern.c" +#line 10903 "tracker-sparql-pattern.c" } else { -#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1081 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10666 "tracker-sparql-pattern.c" +#line 10915 "tracker-sparql-pattern.c" } } -#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp271_ = sql; -#line 1082 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp271_, ")"); -#line 10673 "tracker-sparql-pattern.c" +#line 10922 "tracker-sparql-pattern.c" } } else { TrackerSparqlTokenType _tmp272_ = 0; -#line 1084 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1126 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp272_ = tracker_sparql_pattern_current (self); -#line 1084 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1126 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp272_ == TRACKER_SPARQL_TOKEN_TYPE_FILTER) { -#line 10681 "tracker-sparql-pattern.c" +#line 10930 "tracker-sparql-pattern.c" TrackerSourceLocation* _tmp273_; gint _tmp273__length1; TrackerSourceLocation _tmp274_ = {0}; -#line 1085 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1127 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp273_ = filters; -#line 1085 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1127 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp273__length1 = filters_length1; -#line 1085 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1127 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_get_location (self, &_tmp274_); -#line 1085 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _vala_array_add6 (&filters, &filters_length1, &_filters_size_, &_tmp274_); -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1127 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _vala_array_add8 (&filters, &filters_length1, &_filters_size_, &_tmp274_); +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_skip_filter (self, &_inner_error_); -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10707 "tracker-sparql-pattern.c" +#line 10956 "tracker-sparql-pattern.c" } else { -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1086 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10719 "tracker-sparql-pattern.c" +#line 10968 "tracker-sparql-pattern.c" } } } else { -#line 1088 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1130 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 10725 "tracker-sparql-pattern.c" +#line 10974 "tracker-sparql-pattern.c" } } } } -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_DOT, &_inner_error_); -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10744 "tracker-sparql-pattern.c" +#line 10993 "tracker-sparql-pattern.c" } else { -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1091 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1133 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10756 "tracker-sparql-pattern.c" +#line 11005 "tracker-sparql-pattern.c" } } -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp275_ = sql; -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp276_ = group_graph_pattern_start; -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp277_ = found_simple_optional; -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_parse_triples (self, _tmp275_, _tmp276_, &in_triples_block, &first_where, &in_group_graph_pattern, _tmp277_, &_inner_error_); -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10779 "tracker-sparql-pattern.c" +#line 11028 "tracker-sparql-pattern.c" } else { -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1094 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10791 "tracker-sparql-pattern.c" +#line 11040 "tracker-sparql-pattern.c" } } } -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACE, &_inner_error_); -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10809 "tracker-sparql-pattern.c" +#line 11058 "tracker-sparql-pattern.c" } else { -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1097 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10821 "tracker-sparql-pattern.c" +#line 11070 "tracker-sparql-pattern.c" } } -#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp279_ = in_triples_block; -#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp279_) { -#line 10828 "tracker-sparql-pattern.c" +#line 11077 "tracker-sparql-pattern.c" gboolean _tmp280_; -#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp280_ = in_group_graph_pattern; -#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp278_ = !_tmp280_; -#line 10834 "tracker-sparql-pattern.c" +#line 11083 "tracker-sparql-pattern.c" } else { -#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp278_ = FALSE; -#line 10838 "tracker-sparql-pattern.c" +#line 11087 "tracker-sparql-pattern.c" } -#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp281_ = _tmp278_; -#line 1099 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp281_) { -#line 10844 "tracker-sparql-pattern.c" +#line 11093 "tracker-sparql-pattern.c" GString* _tmp282_; -#line 1101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp282_ = sql; -#line 1101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp282_, "SELECT 1"); -#line 10850 "tracker-sparql-pattern.c" +#line 11099 "tracker-sparql-pattern.c" } else { gboolean _tmp283_; -#line 1102 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp283_ = in_triples_block; -#line 1102 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp283_) { -#line 10857 "tracker-sparql-pattern.c" +#line 11106 "tracker-sparql-pattern.c" GString* _tmp284_; gboolean _tmp285_; -#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp284_ = sql; -#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp285_ = in_group_graph_pattern; -#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_end_triples_block (self, _tmp284_, &first_where, _tmp285_, &_inner_error_); -#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10878 "tracker-sparql-pattern.c" +#line 11127 "tracker-sparql-pattern.c" } else { -#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1103 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1145 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10890 "tracker-sparql-pattern.c" +#line 11139 "tracker-sparql-pattern.c" } } -#line 1104 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" in_triples_block = FALSE; -#line 10895 "tracker-sparql-pattern.c" +#line 11144 "tracker-sparql-pattern.c" } } -#line 1107 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp286_ = in_group_graph_pattern; -#line 1107 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp286_) { -#line 1108 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first_where = TRUE; -#line 10904 "tracker-sparql-pattern.c" +#line 11153 "tracker-sparql-pattern.c" } -#line 1112 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1154 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp287_ = filters; -#line 1112 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1154 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp287__length1 = filters_length1; -#line 1112 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1154 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp287__length1 > 0) { -#line 10912 "tracker-sparql-pattern.c" +#line 11161 "tracker-sparql-pattern.c" TrackerSourceLocation _tmp288_ = {0}; TrackerSourceLocation end; TrackerSourceLocation* _tmp289_; gint _tmp289__length1; TrackerSourceLocation _tmp295_; -#line 1113 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1155 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_get_location (self, &_tmp288_); -#line 1113 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1155 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" end = _tmp288_; -#line 1115 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp289_ = filters; -#line 1115 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp289__length1 = filters_length1; -#line 10926 "tracker-sparql-pattern.c" +#line 11175 "tracker-sparql-pattern.c" { TrackerSourceLocation* filter_location_collection = NULL; gint filter_location_collection_length1 = 0; gint _filter_location_collection_size_ = 0; gint filter_location_it = 0; -#line 1115 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filter_location_collection = _tmp289_; -#line 1115 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filter_location_collection_length1 = _tmp289__length1; -#line 1115 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (filter_location_it = 0; filter_location_it < _tmp289__length1; filter_location_it = filter_location_it + 1) { -#line 10938 "tracker-sparql-pattern.c" +#line 11187 "tracker-sparql-pattern.c" TrackerSourceLocation filter_location = {0}; -#line 1115 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filter_location = filter_location_collection[filter_location_it]; -#line 10942 "tracker-sparql-pattern.c" +#line 11191 "tracker-sparql-pattern.c" { gboolean _tmp290_; TrackerSourceLocation _tmp293_; GString* _tmp294_; -#line 1116 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp290_ = first_where; -#line 1116 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp290_) { -#line 10951 "tracker-sparql-pattern.c" +#line 11200 "tracker-sparql-pattern.c" GString* _tmp291_; -#line 1117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1159 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp291_ = sql; -#line 1117 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1159 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp291_, " AND "); -#line 10957 "tracker-sparql-pattern.c" +#line 11206 "tracker-sparql-pattern.c" } else { GString* _tmp292_; -#line 1119 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1161 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp292_ = sql; -#line 1119 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1161 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp292_, " WHERE "); -#line 1120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" first_where = FALSE; -#line 10966 "tracker-sparql-pattern.c" +#line 11215 "tracker-sparql-pattern.c" } -#line 1123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1165 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp293_ = filter_location; -#line 1123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1165 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp293_); -#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp294_ = sql; -#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_translate_filter (self, _tmp294_, &_inner_error_); -#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 10988 "tracker-sparql-pattern.c" +#line 11237 "tracker-sparql-pattern.c" } else { -#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_result_); -#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1124 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return NULL; -#line 11000 "tracker-sparql-pattern.c" +#line 11249 "tracker-sparql-pattern.c" } } } } } -#line 1127 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp295_ = end; -#line 1127 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1169 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_location (self, &_tmp295_); -#line 11010 "tracker-sparql-pattern.c" +#line 11259 "tracker-sparql-pattern.c" } -#line 1130 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp296_ = tracker_sparql_pattern_get_context (self); -#line 1130 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp297_ = _tmp296_; -#line 1130 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp298_ = _tmp297_->parent_context; -#line 1130 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_set_context (self, _tmp298_); -#line 1131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = _result_; -#line 1131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" filters = (g_free (filters), NULL); -#line 1131 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 11026 "tracker-sparql-pattern.c" +#line 11275 "tracker-sparql-pattern.c" } -static void _vala_array_add7 (glong** array, int* length, int* size, glong value) { -#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +static void _vala_array_add9 (glong** array, int* length, int* size, glong value) { +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if ((*length) == (*size)) { -#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *size = (*size) ? (2 * (*size)) : 4; -#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *array = g_renew (glong, *array, *size); -#line 11037 "tracker-sparql-pattern.c" +#line 11286 "tracker-sparql-pattern.c" } -#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" (*array)[(*length)++] = value; -#line 11041 "tracker-sparql-pattern.c" +#line 11290 "tracker-sparql-pattern.c" } -static void _vala_array_add8 (TrackerSparqlContext*** array, int* length, int* size, TrackerSparqlContext* value) { -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +static void _vala_array_add10 (TrackerSparqlContext*** array, int* length, int* size, TrackerSparqlContext* value) { +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if ((*length) == (*size)) { -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *size = (*size) ? (2 * (*size)) : 4; -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *array = g_renew (TrackerSparqlContext*, *array, (*size) + 1); -#line 11052 "tracker-sparql-pattern.c" +#line 11301 "tracker-sparql-pattern.c" } -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" (*array)[(*length)++] = value; -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" (*array)[*length] = NULL; -#line 11058 "tracker-sparql-pattern.c" +#line 11307 "tracker-sparql-pattern.c" } static gpointer _tracker_sparql_context_ref0 (gpointer self) { -#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return self ? tracker_sparql_context_ref (self) : NULL; -#line 11065 "tracker-sparql-pattern.c" +#line 11314 "tracker-sparql-pattern.c" } -static void _vala_array_add9 (TrackerSparqlVariable*** array, int* length, int* size, TrackerSparqlVariable* value) { -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +static void _vala_array_add11 (TrackerSparqlVariable*** array, int* length, int* size, TrackerSparqlVariable* value) { +#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if ((*length) == (*size)) { -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *size = (*size) ? (2 * (*size)) : 4; -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *array = g_renew (TrackerSparqlVariable*, *array, (*size) + 1); -#line 11076 "tracker-sparql-pattern.c" +#line 11325 "tracker-sparql-pattern.c" } -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" (*array)[(*length)++] = value; -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" (*array)[*length] = NULL; -#line 11082 "tracker-sparql-pattern.c" +#line 11331 "tracker-sparql-pattern.c" } @@ -11106,48 +11355,48 @@ TrackerSparqlContext** _tmp16_; gint _tmp16__length1; GError * _inner_error_ = NULL; -#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (self != NULL); -#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (sql != NULL); -#line 1135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = g_new0 (TrackerSparqlVariable*, 0 + 1); -#line 1135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" all_vars = _tmp0_; -#line 1135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" all_vars_length1 = 0; -#line 1135 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _all_vars_size_ = all_vars_length1; -#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = g_object_unref; -#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = g_hash_table_new_full (_tracker_sparql_variable_hash_ghash_func, _tracker_sparql_variable_equal_gequal_func, _tmp1_, NULL); -#line 1136 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1178 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" all_var_set = _tmp2_; -#line 1138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = g_new0 (TrackerSparqlContext*, 0 + 1); -#line 1138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" contexts = _tmp3_; -#line 1138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" contexts_length1 = 0; -#line 1138 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _contexts_size_ = contexts_length1; -#line 1139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1181 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp4_ = g_new0 (glong, 0); -#line 1139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1181 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" offsets = _tmp4_; -#line 1139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1181 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" offsets_length1 = 0; -#line 1139 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1181 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _offsets_size_ = offsets_length1; -#line 11139 "tracker-sparql-pattern.c" +#line 11388 "tracker-sparql-pattern.c" { gboolean _tmp5_; -#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1183 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_ = TRUE; -#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1183 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" while (TRUE) { -#line 11146 "tracker-sparql-pattern.c" +#line 11395 "tracker-sparql-pattern.c" gboolean _tmp6_; glong* _tmp9_; gint _tmp9__length1; @@ -11158,192 +11407,192 @@ TrackerSparqlContext* _tmp14_; TrackerSparqlContext** _tmp15_; gint _tmp15__length1; -#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1183 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp6_ = _tmp5_; -#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1183 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp6_) { -#line 11161 "tracker-sparql-pattern.c" +#line 11410 "tracker-sparql-pattern.c" gboolean _tmp7_ = FALSE; gboolean _tmp8_; -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp7_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_UNION, &_inner_error_); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp8_ = _tmp7_; -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" offsets = (g_free (offsets), NULL); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" contexts = (_vala_array_free (contexts, contexts_length1, (GDestroyNotify) tracker_sparql_context_unref), NULL); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_hash_table_unref0 (all_var_set); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" all_vars = (_vala_array_free (all_vars, all_vars_length1, (GDestroyNotify) g_object_unref), NULL); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 11184 "tracker-sparql-pattern.c" +#line 11433 "tracker-sparql-pattern.c" } else { -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" offsets = (g_free (offsets), NULL); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" contexts = (_vala_array_free (contexts, contexts_length1, (GDestroyNotify) tracker_sparql_context_unref), NULL); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_hash_table_unref0 (all_var_set); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" all_vars = (_vala_array_free (all_vars, all_vars_length1, (GDestroyNotify) g_object_unref), NULL); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 11200 "tracker-sparql-pattern.c" +#line 11449 "tracker-sparql-pattern.c" } } -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp8_) { -#line 1144 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 11207 "tracker-sparql-pattern.c" +#line 11456 "tracker-sparql-pattern.c" } } -#line 1141 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1183 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_ = FALSE; -#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp9_ = offsets; -#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp9__length1 = offsets_length1; -#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp10_ = sql; -#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp11_ = _tmp10_->len; -#line 1142 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _vala_array_add7 (&offsets, &offsets_length1, &_offsets_size_, (glong) _tmp11_); -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _vala_array_add9 (&offsets, &offsets_length1, &_offsets_size_, (glong) _tmp11_); +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp12_ = sql; -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp13_ = tracker_sparql_pattern_translate_group_graph_pattern (self, _tmp12_, &_inner_error_); -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp14_ = _tmp13_; -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" offsets = (g_free (offsets), NULL); -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" contexts = (_vala_array_free (contexts, contexts_length1, (GDestroyNotify) tracker_sparql_context_unref), NULL); -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_hash_table_unref0 (all_var_set); -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" all_vars = (_vala_array_free (all_vars, all_vars_length1, (GDestroyNotify) g_object_unref), NULL); -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 11244 "tracker-sparql-pattern.c" +#line 11493 "tracker-sparql-pattern.c" } else { -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" offsets = (g_free (offsets), NULL); -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" contexts = (_vala_array_free (contexts, contexts_length1, (GDestroyNotify) tracker_sparql_context_unref), NULL); -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_hash_table_unref0 (all_var_set); -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" all_vars = (_vala_array_free (all_vars, all_vars_length1, (GDestroyNotify) g_object_unref), NULL); -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 11260 "tracker-sparql-pattern.c" +#line 11509 "tracker-sparql-pattern.c" } } -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp15_ = contexts; -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp15__length1 = contexts_length1; -#line 1143 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _vala_array_add8 (&contexts, &contexts_length1, &_contexts_size_, _tmp14_); -#line 11269 "tracker-sparql-pattern.c" +#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _vala_array_add10 (&contexts, &contexts_length1, &_contexts_size_, _tmp14_); +#line 11518 "tracker-sparql-pattern.c" } } -#line 1146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp16_ = contexts; -#line 1146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp16__length1 = contexts_length1; -#line 1146 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1188 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp16__length1 > 1) { -#line 11278 "tracker-sparql-pattern.c" +#line 11527 "tracker-sparql-pattern.c" TrackerSparqlContext** _tmp17_; gint _tmp17__length1; glong extra_offset; GString* _tmp72_; -#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp17_ = contexts; -#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp17__length1 = contexts_length1; -#line 11287 "tracker-sparql-pattern.c" +#line 11536 "tracker-sparql-pattern.c" { TrackerSparqlContext** sub_context_collection = NULL; gint sub_context_collection_length1 = 0; gint _sub_context_collection_size_ = 0; gint sub_context_it = 0; -#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" sub_context_collection = _tmp17_; -#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" sub_context_collection_length1 = _tmp17__length1; -#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (sub_context_it = 0; sub_context_it < _tmp17__length1; sub_context_it = sub_context_it + 1) { -#line 11299 "tracker-sparql-pattern.c" +#line 11548 "tracker-sparql-pattern.c" TrackerSparqlContext* _tmp18_; TrackerSparqlContext* sub_context = NULL; -#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp18_ = _tracker_sparql_context_ref0 (sub_context_collection[sub_context_it]); -#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" sub_context = _tmp18_; -#line 11306 "tracker-sparql-pattern.c" +#line 11555 "tracker-sparql-pattern.c" { TrackerSparqlContext* _tmp19_; GHashTable* _tmp20_; GList* _tmp21_ = NULL; -#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp19_ = sub_context; -#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp20_ = _tmp19_->var_set; -#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp21_ = g_hash_table_get_keys (_tmp20_); -#line 11317 "tracker-sparql-pattern.c" +#line 11566 "tracker-sparql-pattern.c" { GList* v_collection = NULL; GList* v_it = NULL; -#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" v_collection = _tmp21_; -#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (v_it = v_collection; v_it != NULL; v_it = v_it->next) { -#line 11325 "tracker-sparql-pattern.c" +#line 11574 "tracker-sparql-pattern.c" TrackerSparqlVariable* v = NULL; -#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" v = (TrackerSparqlVariable*) v_it->data; -#line 11329 "tracker-sparql-pattern.c" +#line 11578 "tracker-sparql-pattern.c" { GHashTable* _tmp22_; TrackerSparqlVariable* _tmp23_; gconstpointer _tmp24_ = NULL; -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp22_ = all_var_set; -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp23_ = v; -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp24_ = g_hash_table_lookup (_tmp22_, _tmp23_); -#line 1152 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1194 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (GPOINTER_TO_INT (_tmp24_) == 0) { -#line 11342 "tracker-sparql-pattern.c" +#line 11591 "tracker-sparql-pattern.c" TrackerSparqlVariable** _tmp25_; gint _tmp25__length1; TrackerSparqlVariable* _tmp26_; @@ -11356,65 +11605,65 @@ GHashTable* _tmp33_; TrackerSparqlVariable* _tmp34_; TrackerSparqlVariable* _tmp35_; -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp25_ = all_vars; -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp25__length1 = all_vars_length1; -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp26_ = v; -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp27_ = _g_object_ref0 (_tmp26_); -#line 1153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _vala_array_add9 (&all_vars, &all_vars_length1, &_all_vars_size_, _tmp27_); -#line 1154 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _vala_array_add11 (&all_vars, &all_vars_length1, &_all_vars_size_, _tmp27_); +#line 1196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp28_ = all_var_set; -#line 1154 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp29_ = v; -#line 1154 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp30_ = _g_object_ref0 (_tmp29_); -#line 1154 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1196 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_hash_table_insert (_tmp28_, _tmp30_, GINT_TO_POINTER ((gint) TRACKER_SPARQL_VARIABLE_STATE_BOUND)); -#line 1155 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp31_ = tracker_sparql_pattern_get_context (self); -#line 1155 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp32_ = _tmp31_; -#line 1155 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp33_ = _tmp32_->var_set; -#line 1155 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp34_ = v; -#line 1155 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp35_ = _g_object_ref0 (_tmp34_); -#line 1155 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_hash_table_insert (_tmp33_, _tmp35_, GINT_TO_POINTER ((gint) TRACKER_SPARQL_VARIABLE_STATE_BOUND)); -#line 11385 "tracker-sparql-pattern.c" +#line 11634 "tracker-sparql-pattern.c" } } } -#line 1151 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_list_free0 (v_collection); -#line 11391 "tracker-sparql-pattern.c" +#line 11640 "tracker-sparql-pattern.c" } -#line 1150 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (sub_context); -#line 11395 "tracker-sparql-pattern.c" +#line 11644 "tracker-sparql-pattern.c" } } } -#line 1160 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1202 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" extra_offset = (glong) 0; -#line 11401 "tracker-sparql-pattern.c" +#line 11650 "tracker-sparql-pattern.c" { gint i; -#line 1161 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" i = 0; -#line 11406 "tracker-sparql-pattern.c" +#line 11655 "tracker-sparql-pattern.c" { gboolean _tmp36_; -#line 1161 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp36_ = TRUE; -#line 1161 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" while (TRUE) { -#line 11413 "tracker-sparql-pattern.c" +#line 11662 "tracker-sparql-pattern.c" gboolean _tmp37_; gint _tmp39_; TrackerSparqlContext** _tmp40_; @@ -11440,76 +11689,76 @@ glong _tmp69_; GString* _tmp70_; gssize _tmp71_; -#line 1161 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp37_ = _tmp36_; -#line 1161 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp37_) { -#line 11443 "tracker-sparql-pattern.c" +#line 11692 "tracker-sparql-pattern.c" gint _tmp38_; -#line 1161 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp38_ = i; -#line 1161 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" i = _tmp38_ + 1; -#line 11449 "tracker-sparql-pattern.c" +#line 11698 "tracker-sparql-pattern.c" } -#line 1161 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp36_ = FALSE; -#line 1161 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp39_ = i; -#line 1161 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp40_ = contexts; -#line 1161 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp40__length1 = contexts_length1; -#line 1161 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!(_tmp39_ < _tmp40__length1)) { -#line 1161 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 11463 "tracker-sparql-pattern.c" +#line 11712 "tracker-sparql-pattern.c" } -#line 1162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp41_ = g_string_new (""); -#line 1162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" projection = _tmp41_; -#line 1163 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1205 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp42_ = i; -#line 1163 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1205 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp42_ > 0) { -#line 11473 "tracker-sparql-pattern.c" +#line 11722 "tracker-sparql-pattern.c" GString* _tmp43_; -#line 1164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp43_ = projection; -#line 1164 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp43_, ") UNION ALL "); -#line 11479 "tracker-sparql-pattern.c" +#line 11728 "tracker-sparql-pattern.c" } -#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp44_ = projection; -#line 1166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp44_, "SELECT "); -#line 1167 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp45_ = all_vars; -#line 1167 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp45__length1 = all_vars_length1; -#line 11489 "tracker-sparql-pattern.c" +#line 11738 "tracker-sparql-pattern.c" { TrackerSparqlVariable** v_collection = NULL; gint v_collection_length1 = 0; gint _v_collection_size_ = 0; gint v_it = 0; -#line 1167 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" v_collection = _tmp45_; -#line 1167 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" v_collection_length1 = _tmp45__length1; -#line 1167 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (v_it = 0; v_it < _tmp45__length1; v_it = v_it + 1) { -#line 11501 "tracker-sparql-pattern.c" +#line 11750 "tracker-sparql-pattern.c" TrackerSparqlVariable* _tmp46_; TrackerSparqlVariable* v = NULL; -#line 1167 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp46_ = _g_object_ref0 (v_collection[v_it]); -#line 1167 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" v = _tmp46_; -#line 11508 "tracker-sparql-pattern.c" +#line 11757 "tracker-sparql-pattern.c" { TrackerSparqlContext** _tmp47_; gint _tmp47__length1; @@ -11522,159 +11771,159 @@ TrackerSparqlVariable* _tmp55_; const gchar* _tmp56_; const gchar* _tmp57_; -#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp47_ = contexts; -#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp47__length1 = contexts_length1; -#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp48_ = i; -#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp49_ = _tmp47_[_tmp48_]; -#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp50_ = _tmp49_->var_set; -#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp51_ = v; -#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp52_ = g_hash_table_lookup (_tmp50_, _tmp51_); -#line 1168 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (GPOINTER_TO_INT (_tmp52_) == 0) { -#line 11537 "tracker-sparql-pattern.c" +#line 11786 "tracker-sparql-pattern.c" GString* _tmp53_; -#line 1171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1213 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp53_ = projection; -#line 1171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1213 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp53_, "NULL AS "); -#line 11543 "tracker-sparql-pattern.c" +#line 11792 "tracker-sparql-pattern.c" } -#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp54_ = projection; -#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp55_ = v; -#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp56_ = tracker_sparql_variable_get_sql_expression (_tmp55_); -#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp57_ = _tmp56_; -#line 1173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp54_, "%s, ", _tmp57_); -#line 1167 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (v); -#line 11557 "tracker-sparql-pattern.c" +#line 11806 "tracker-sparql-pattern.c" } } } -#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp58_ = projection; -#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp59_ = projection; -#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp60_ = _tmp59_->len; -#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_truncate (_tmp58_, (gsize) (_tmp60_ - 2)); -#line 1177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp61_ = projection; -#line 1177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp61_, " FROM ("); -#line 1179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp62_ = sql; -#line 1179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp63_ = offsets; -#line 1179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp63__length1 = offsets_length1; -#line 1179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp64_ = i; -#line 1179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp65_ = _tmp63_[_tmp64_]; -#line 1179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp66_ = extra_offset; -#line 1179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp67_ = projection; -#line 1179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp68_ = _tmp67_->str; -#line 1179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_insert (_tmp62_, (gssize) (_tmp65_ + _tmp66_), _tmp68_); -#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp69_ = extra_offset; -#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp70_ = projection; -#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp71_ = _tmp70_->len; -#line 1180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" extra_offset = _tmp69_ + _tmp71_; -#line 1161 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_string_free0 (projection); -#line 11601 "tracker-sparql-pattern.c" +#line 11850 "tracker-sparql-pattern.c" } } } -#line 1182 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp72_ = sql; -#line 1182 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append (_tmp72_, ")"); -#line 11609 "tracker-sparql-pattern.c" +#line 11858 "tracker-sparql-pattern.c" } else { TrackerSparqlContext** _tmp73_; gint _tmp73__length1; TrackerSparqlContext* _tmp74_; GHashTable* _tmp75_; GList* _tmp76_ = NULL; -#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1226 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp73_ = contexts; -#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1226 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp73__length1 = contexts_length1; -#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1226 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp74_ = _tmp73_[0]; -#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1226 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp75_ = _tmp74_->var_set; -#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1226 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp76_ = g_hash_table_get_keys (_tmp75_); -#line 11626 "tracker-sparql-pattern.c" +#line 11875 "tracker-sparql-pattern.c" { GList* key_collection = NULL; GList* key_it = NULL; -#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1226 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" key_collection = _tmp76_; -#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1226 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (key_it = key_collection; key_it != NULL; key_it = key_it->next) { -#line 11634 "tracker-sparql-pattern.c" +#line 11883 "tracker-sparql-pattern.c" TrackerSparqlVariable* key = NULL; -#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1226 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" key = (TrackerSparqlVariable*) key_it->data; -#line 11638 "tracker-sparql-pattern.c" +#line 11887 "tracker-sparql-pattern.c" { TrackerSparqlContext* _tmp77_; TrackerSparqlContext* _tmp78_; GHashTable* _tmp79_; TrackerSparqlVariable* _tmp80_; TrackerSparqlVariable* _tmp81_; -#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp77_ = tracker_sparql_pattern_get_context (self); -#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp78_ = _tmp77_; -#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp79_ = _tmp78_->var_set; -#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp80_ = key; -#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp81_ = _g_object_ref0 (_tmp80_); -#line 1185 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_hash_table_insert (_tmp79_, _tmp81_, GINT_TO_POINTER ((gint) TRACKER_SPARQL_VARIABLE_STATE_BOUND)); -#line 11657 "tracker-sparql-pattern.c" +#line 11906 "tracker-sparql-pattern.c" } } -#line 1184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1226 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_list_free0 (key_collection); -#line 11662 "tracker-sparql-pattern.c" +#line 11911 "tracker-sparql-pattern.c" } } -#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" offsets = (g_free (offsets), NULL); -#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" contexts = (_vala_array_free (contexts, contexts_length1, (GDestroyNotify) tracker_sparql_context_unref), NULL); -#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_hash_table_unref0 (all_var_set); -#line 1134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" all_vars = (_vala_array_free (all_vars, all_vars_length1, (GDestroyNotify) g_object_unref), NULL); -#line 11673 "tracker-sparql-pattern.c" +#line 11922 "tracker-sparql-pattern.c" } @@ -11685,77 +11934,77 @@ gboolean _tmp6_ = FALSE; TrackerSparqlVariableBindingList* _tmp7_; gboolean _tmp10_; -#line 1190 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (self != NULL, NULL); -#line 1190 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (variable != NULL, NULL); -#line 1191 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" binding_list = NULL; -#line 1192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = self->priv->triple_context; -#line 1192 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp0_ != NULL) { -#line 11694 "tracker-sparql-pattern.c" +#line 11943 "tracker-sparql-pattern.c" TrackerSparqlPatternTripleContext* _tmp1_; GHashTable* _tmp2_; TrackerSparqlVariable* _tmp3_; gconstpointer _tmp4_ = NULL; TrackerSparqlVariableBindingList* _tmp5_; -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = self->priv->triple_context; -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = _tmp1_->var_bindings; -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = variable; -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp4_ = g_hash_table_lookup (_tmp2_, _tmp3_); -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_ = _g_object_ref0 ((TrackerSparqlVariableBindingList*) _tmp4_); -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (binding_list); -#line 1193 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" binding_list = _tmp5_; -#line 11714 "tracker-sparql-pattern.c" +#line 11963 "tracker-sparql-pattern.c" } -#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp7_ = binding_list; -#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp7_ == NULL) { -#line 11720 "tracker-sparql-pattern.c" +#line 11969 "tracker-sparql-pattern.c" TrackerSparqlVariable* _tmp8_; TrackerSparqlVariableBinding* _tmp9_; -#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp8_ = variable; -#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp9_ = _tmp8_->binding; -#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp6_ = _tmp9_ != NULL; -#line 11729 "tracker-sparql-pattern.c" +#line 11978 "tracker-sparql-pattern.c" } else { -#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp6_ = FALSE; -#line 11733 "tracker-sparql-pattern.c" +#line 11982 "tracker-sparql-pattern.c" } -#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp10_ = _tmp6_; -#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp10_) { -#line 11739 "tracker-sparql-pattern.c" +#line 11988 "tracker-sparql-pattern.c" TrackerSparqlContext* _tmp11_; TrackerSparqlContext* _tmp12_; TrackerSparqlContext* _tmp13_; TrackerSparqlContext* current_context; -#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1239 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp11_ = tracker_sparql_pattern_get_context (self); -#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1239 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp12_ = _tmp11_; -#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1239 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp13_ = _tracker_sparql_context_ref0 (_tmp12_); -#line 1197 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1239 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" current_context = _tmp13_; -#line 1198 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" while (TRUE) { -#line 11754 "tracker-sparql-pattern.c" +#line 12003 "tracker-sparql-pattern.c" TrackerSparqlContext* _tmp14_; gboolean _tmp15_ = FALSE; TrackerSparqlContext* _tmp16_; @@ -11764,49 +12013,49 @@ TrackerSparqlContext* _tmp64_; TrackerSparqlContext* _tmp65_; TrackerSparqlContext* _tmp66_; -#line 1198 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp14_ = current_context; -#line 1198 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!(_tmp14_ != NULL)) { -#line 1198 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1240 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 11769 "tracker-sparql-pattern.c" +#line 12018 "tracker-sparql-pattern.c" } -#line 1201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp16_ = current_context; -#line 1201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp17_ = _tmp16_->scalar_subquery; -#line 1201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp17_) { -#line 11777 "tracker-sparql-pattern.c" +#line 12026 "tracker-sparql-pattern.c" TrackerSparqlContext* _tmp18_; TrackerSparqlContext* _tmp19_; GHashTable* _tmp20_; TrackerSparqlVariable* _tmp21_; gconstpointer _tmp22_ = NULL; -#line 1201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp18_ = current_context; -#line 1201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp19_ = _tmp18_->parent_context; -#line 1201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp20_ = _tmp19_->var_set; -#line 1201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp21_ = variable; -#line 1201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp22_ = g_hash_table_lookup (_tmp20_, _tmp21_); -#line 1201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp15_ = GPOINTER_TO_INT (_tmp22_) != 0; -#line 11795 "tracker-sparql-pattern.c" +#line 12044 "tracker-sparql-pattern.c" } else { -#line 1201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp15_ = FALSE; -#line 11799 "tracker-sparql-pattern.c" +#line 12048 "tracker-sparql-pattern.c" } -#line 1201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp23_ = _tmp15_; -#line 1201 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1243 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp23_) { -#line 11805 "tracker-sparql-pattern.c" +#line 12054 "tracker-sparql-pattern.c" TrackerSparqlVariableBinding* _tmp24_; TrackerSparqlVariableBinding* binding; TrackerSparqlVariableBinding* _tmp25_; @@ -11839,71 +12088,71 @@ TrackerSparqlVariableBindingList* _tmp61_; TrackerSparqlVariableBinding* _tmp62_; TrackerSparqlVariableBinding* _tmp63_; -#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1245 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp24_ = tracker_sparql_variable_binding_new (); -#line 1203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1245 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" binding = _tmp24_; -#line 1204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp25_ = binding; -#line 1204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp26_ = variable; -#line 1204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp27_ = _tmp26_->binding; -#line 1204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp28_ = ((TrackerSparqlDataBinding*) _tmp27_)->data_type; -#line 1204 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" ((TrackerSparqlDataBinding*) _tmp25_)->data_type = _tmp28_; -#line 1205 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp29_ = binding; -#line 1205 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp30_ = tracker_sparql_pattern_get_context (self); -#line 1205 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp31_ = _tmp30_; -#line 1205 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp32_ = variable; -#line 1205 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp33_ = tracker_sparql_variable_get_name (_tmp32_); -#line 1205 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp34_ = _tmp33_; -#line 1205 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp35_ = tracker_sparql_context_get_variable (_tmp31_, _tmp34_); -#line 1205 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1247 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp29_->variable = _tmp35_; -#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp36_ = binding; -#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp37_ = variable; -#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp38_ = _tmp37_->binding; -#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp39_ = _tmp38_->type; -#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp40_ = _g_object_ref0 (_tmp39_); -#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (_tmp36_->type); -#line 1206 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp36_->type = _tmp40_; -#line 1207 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1249 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp41_ = binding; -#line 1207 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1249 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp42_ = variable; -#line 1207 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1249 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp43_ = tracker_sparql_variable_get_sql_expression (_tmp42_); -#line 1207 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1249 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp44_ = _tmp43_; -#line 1207 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1249 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_data_binding_set_sql_expression ((TrackerSparqlDataBinding*) _tmp41_, _tmp44_); -#line 1208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp45_ = tracker_sparql_variable_binding_list_new (); -#line 1208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (binding_list); -#line 1208 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" binding_list = _tmp45_; -#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp46_ = self->priv->triple_context; -#line 1209 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1251 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp46_ != NULL) { -#line 11902 "tracker-sparql-pattern.c" +#line 12151 "tracker-sparql-pattern.c" TrackerSparqlPatternTripleContext* _tmp47_; TrackerSparqlVariable* _tmp48_; TrackerSparqlVariable* _tmp49_; @@ -11913,77 +12162,77 @@ TrackerSparqlVariable* _tmp53_; TrackerSparqlVariableBindingList* _tmp54_; TrackerSparqlVariableBindingList* _tmp55_; -#line 1210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp47_ = self->priv->triple_context; -#line 1210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp48_ = variable; -#line 1210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp49_ = _g_object_ref0 (_tmp48_); -#line 1210 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1252 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp47_->variables = g_list_append (_tmp47_->variables, _tmp49_); -#line 1211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp50_ = self->priv->triple_context; -#line 1211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp51_ = _tmp50_->var_bindings; -#line 1211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp52_ = variable; -#line 1211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp53_ = _g_object_ref0 (_tmp52_); -#line 1211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp54_ = binding_list; -#line 1211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp55_ = _g_object_ref0 (_tmp54_); -#line 1211 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1253 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_hash_table_insert (_tmp51_, _tmp53_, _tmp55_); -#line 11934 "tracker-sparql-pattern.c" +#line 12183 "tracker-sparql-pattern.c" } -#line 1214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp56_ = tracker_sparql_pattern_get_context (self); -#line 1214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp57_ = _tmp56_; -#line 1214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp58_ = _tmp57_->var_set; -#line 1214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp59_ = variable; -#line 1214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp60_ = _g_object_ref0 (_tmp59_); -#line 1214 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_hash_table_insert (_tmp58_, _tmp60_, GINT_TO_POINTER ((gint) TRACKER_SPARQL_VARIABLE_STATE_BOUND)); -#line 1215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp61_ = binding_list; -#line 1215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp62_ = binding; -#line 1215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp63_ = _g_object_ref0 (_tmp62_); -#line 1215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1257 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp61_->list = g_list_append (_tmp61_->list, _tmp63_); -#line 1216 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (binding); -#line 1216 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 11960 "tracker-sparql-pattern.c" +#line 12209 "tracker-sparql-pattern.c" } -#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp64_ = current_context; -#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp65_ = _tmp64_->parent_context; -#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp66_ = _tracker_sparql_context_ref0 (_tmp65_); -#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (current_context); -#line 1218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" current_context = _tmp66_; -#line 11972 "tracker-sparql-pattern.c" +#line 12221 "tracker-sparql-pattern.c" } -#line 1195 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (current_context); -#line 11976 "tracker-sparql-pattern.c" +#line 12225 "tracker-sparql-pattern.c" } -#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1263 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = binding_list; -#line 1221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1263 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 11982 "tracker-sparql-pattern.c" +#line 12231 "tracker-sparql-pattern.c" } @@ -11999,25 +12248,25 @@ TrackerSparqlVariableBinding* _tmp53_; TrackerSparqlVariable* _tmp54_; TrackerSparqlVariableBinding* _tmp55_; -#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (self != NULL); -#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (sql != NULL); -#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (binding != NULL); -#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = binding; -#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = _tmp0_->variable; -#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = tracker_sparql_pattern_get_variable_binding_list (self, _tmp1_); -#line 1225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" binding_list = _tmp2_; -#line 1226 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = binding_list; -#line 1226 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1268 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp3_ == NULL) { -#line 12016 "tracker-sparql-pattern.c" +#line 12265 "tracker-sparql-pattern.c" TrackerSparqlVariableBindingList* _tmp4_; TrackerSparqlPatternTripleContext* _tmp5_; GString* _tmp17_; @@ -12037,17 +12286,17 @@ TrackerSparqlVariable* _tmp47_; TrackerSparqlVariable* _tmp48_; TrackerSparqlVariableState _tmp49_; -#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp4_ = tracker_sparql_variable_binding_list_new (); -#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (binding_list); -#line 1227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" binding_list = _tmp4_; -#line 1228 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1270 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_ = self->priv->triple_context; -#line 1228 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1270 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp5_ != NULL) { -#line 12046 "tracker-sparql-pattern.c" +#line 12295 "tracker-sparql-pattern.c" TrackerSparqlPatternTripleContext* _tmp6_; TrackerSparqlVariableBinding* _tmp7_; TrackerSparqlVariable* _tmp8_; @@ -12059,59 +12308,59 @@ TrackerSparqlVariable* _tmp14_; TrackerSparqlVariableBindingList* _tmp15_; TrackerSparqlVariableBindingList* _tmp16_; -#line 1229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp6_ = self->priv->triple_context; -#line 1229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp7_ = binding; -#line 1229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp8_ = _tmp7_->variable; -#line 1229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp9_ = _g_object_ref0 (_tmp8_); -#line 1229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp6_->variables = g_list_append (_tmp6_->variables, _tmp9_); -#line 1230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp10_ = self->priv->triple_context; -#line 1230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp11_ = _tmp10_->var_bindings; -#line 1230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp12_ = binding; -#line 1230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp13_ = _tmp12_->variable; -#line 1230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp14_ = _g_object_ref0 (_tmp13_); -#line 1230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp15_ = binding_list; -#line 1230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp16_ = _g_object_ref0 (_tmp15_); -#line 1230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_hash_table_insert (_tmp11_, _tmp14_, _tmp16_); -#line 12084 "tracker-sparql-pattern.c" +#line 12333 "tracker-sparql-pattern.c" } -#line 1233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp17_ = sql; -#line 1233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp18_ = binding; -#line 1233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp19_ = tracker_sparql_data_binding_get_sql_expression ((TrackerSparqlDataBinding*) _tmp18_); -#line 1233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp20_ = _tmp19_; -#line 1233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp21_ = binding; -#line 1233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp22_ = _tmp21_->variable; -#line 1233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp23_ = tracker_sparql_variable_get_sql_expression (_tmp22_); -#line 1233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp24_ = _tmp23_; -#line 1233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp17_, "%s AS %s, ", _tmp20_, _tmp24_); -#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1279 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp25_ = binding; -#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1279 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp26_ = ((TrackerSparqlDataBinding*) _tmp25_)->data_type; -#line 1237 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1279 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp26_ == TRACKER_PROPERTY_TYPE_DATETIME) { -#line 12110 "tracker-sparql-pattern.c" +#line 12359 "tracker-sparql-pattern.c" GString* _tmp27_; TrackerSparqlVariableBinding* _tmp28_; gchar* _tmp29_ = NULL; @@ -12128,108 +12377,108 @@ TrackerSparqlVariable* _tmp40_; gchar* _tmp41_ = NULL; gchar* _tmp42_; -#line 1238 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp27_ = sql; -#line 1238 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp28_ = binding; -#line 1238 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp29_ = tracker_sparql_data_binding_get_extra_sql_expression ((TrackerSparqlDataBinding*) _tmp28_, "localDate"); -#line 1238 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp30_ = _tmp29_; -#line 1238 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp31_ = binding; -#line 1238 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp32_ = _tmp31_->variable; -#line 1238 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp33_ = tracker_sparql_variable_get_extra_sql_expression (_tmp32_, "localDate"); -#line 1238 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp34_ = _tmp33_; -#line 1238 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp27_, "%s AS %s, ", _tmp30_, _tmp34_); -#line 1238 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp34_); -#line 1238 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp30_); -#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp35_ = sql; -#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp36_ = binding; -#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp37_ = tracker_sparql_data_binding_get_extra_sql_expression ((TrackerSparqlDataBinding*) _tmp36_, "localTime"); -#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp38_ = _tmp37_; -#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp39_ = binding; -#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp40_ = _tmp39_->variable; -#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp41_ = tracker_sparql_variable_get_extra_sql_expression (_tmp40_, "localTime"); -#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp42_ = _tmp41_; -#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_string_append_printf (_tmp35_, "%s AS %s, ", _tmp38_, _tmp42_); -#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp42_); -#line 1241 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp38_); -#line 12171 "tracker-sparql-pattern.c" +#line 12420 "tracker-sparql-pattern.c" } -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp43_ = tracker_sparql_pattern_get_context (self); -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp44_ = _tmp43_; -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp45_ = _tmp44_->var_set; -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp46_ = binding; -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp47_ = _tmp46_->variable; -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp48_ = _g_object_ref0 (_tmp47_); -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp49_ = variable_state; -#line 1246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_hash_table_insert (_tmp45_, _tmp48_, GINT_TO_POINTER ((gint) _tmp49_)); -#line 12189 "tracker-sparql-pattern.c" +#line 12438 "tracker-sparql-pattern.c" } -#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp50_ = binding_list; -#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp51_ = binding; -#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp52_ = _g_object_ref0 (_tmp51_); -#line 1248 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp50_->list = g_list_append (_tmp50_->list, _tmp52_); -#line 1249 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1291 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp53_ = binding; -#line 1249 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1291 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp54_ = _tmp53_->variable; -#line 1249 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1291 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp55_ = _tmp54_->binding; -#line 1249 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1291 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp55_ == NULL) { -#line 12207 "tracker-sparql-pattern.c" +#line 12456 "tracker-sparql-pattern.c" TrackerSparqlVariableBinding* _tmp56_; TrackerSparqlVariable* _tmp57_; TrackerSparqlVariableBinding* _tmp58_; TrackerSparqlVariableBinding* _tmp59_; -#line 1250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp56_ = binding; -#line 1250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp57_ = _tmp56_->variable; -#line 1250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp58_ = binding; -#line 1250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp59_ = _g_object_ref0 (_tmp58_); -#line 1250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (_tmp57_->binding); -#line 1250 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp57_->binding = _tmp59_; -#line 12224 "tracker-sparql-pattern.c" +#line 12473 "tracker-sparql-pattern.c" } -#line 1224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1266 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (binding_list); -#line 12228 "tracker-sparql-pattern.c" +#line 12477 "tracker-sparql-pattern.c" } @@ -12251,66 +12500,66 @@ TrackerProperty* prop; TrackerClass* subject_type; gboolean _tmp5_; - gboolean _tmp263_; - gboolean _tmp298_; - GString* _tmp440_; - gssize _tmp441_; - glong _tmp442_; + gboolean _tmp268_; + gboolean _tmp303_; + GString* _tmp439_; + gssize _tmp440_; + glong _tmp441_; GError * _inner_error_ = NULL; -#line 1254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (self != NULL); -#line 1254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (sql != NULL); -#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = sql; -#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = _tmp0_->len; -#line 1255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" begin_sql_len = (glong) _tmp1_; -#line 1258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = sql; -#line 1258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp4_ = tracker_sparql_pattern_parse_var_or_term (self, _tmp2_, &_tmp3_, &_inner_error_); -#line 1258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" object_is_var = _tmp3_; -#line 1258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" object = _tmp4_; -#line 1258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_ != NULL) { -#line 1258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 12282 "tracker-sparql-pattern.c" +#line 12531 "tracker-sparql-pattern.c" } else { -#line 1258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1258 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 12290 "tracker-sparql-pattern.c" +#line 12539 "tracker-sparql-pattern.c" } } -#line 1260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1302 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" db_table = NULL; -#line 1261 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" rdftype = FALSE; -#line 1262 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1304 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" share_table = TRUE; -#line 1263 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" is_fts_match = FALSE; -#line 1267 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1309 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" prop = NULL; -#line 1269 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" subject_type = NULL; -#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_ = self->priv->current_predicate_is_var; -#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (!_tmp5_) { -#line 12309 "tracker-sparql-pattern.c" +#line 12558 "tracker-sparql-pattern.c" const gchar* _tmp6_; TrackerProperty* _tmp7_ = NULL; TrackerProperty* _tmp8_; @@ -12319,58 +12568,58 @@ const gchar* _tmp11_; gboolean _tmp13_; gboolean _tmp15_; - const gchar* _tmp195_; - const gchar* _tmp196_; - gboolean _tmp197_; - gboolean _tmp198_ = FALSE; - TrackerSparqlDataTable* _tmp199_ = NULL; -#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + const gchar* _tmp200_; + const gchar* _tmp201_; + gboolean _tmp202_; + gboolean _tmp203_ = FALSE; + TrackerSparqlDataTable* _tmp204_ = NULL; +#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp6_ = self->priv->current_predicate; -#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp7_ = tracker_ontologies_get_property_by_uri (_tmp6_); -#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp8_ = _g_object_ref0 (_tmp7_); -#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 1272 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" prop = _tmp8_; -#line 1274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp11_ = self->priv->current_predicate; -#line 1274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (g_strcmp0 (_tmp11_, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type") == 0) { -#line 12337 "tracker-sparql-pattern.c" +#line 12586 "tracker-sparql-pattern.c" gboolean _tmp12_; -#line 1275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp12_ = object_is_var; -#line 1275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp10_ = !_tmp12_; -#line 12343 "tracker-sparql-pattern.c" +#line 12592 "tracker-sparql-pattern.c" } else { -#line 1274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp10_ = FALSE; -#line 12347 "tracker-sparql-pattern.c" +#line 12596 "tracker-sparql-pattern.c" } -#line 1274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp13_ = _tmp10_; -#line 1274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp13_) { -#line 12353 "tracker-sparql-pattern.c" +#line 12602 "tracker-sparql-pattern.c" const gchar* _tmp14_; -#line 1275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp14_ = self->current_graph; -#line 1275 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp9_ = _tmp14_ == NULL; -#line 12359 "tracker-sparql-pattern.c" +#line 12608 "tracker-sparql-pattern.c" } else { -#line 1274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp9_ = FALSE; -#line 12363 "tracker-sparql-pattern.c" +#line 12612 "tracker-sparql-pattern.c" } -#line 1274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp15_ = _tmp9_; -#line 1274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp15_) { -#line 12369 "tracker-sparql-pattern.c" +#line 12618 "tracker-sparql-pattern.c" const gchar* _tmp16_; TrackerClass* _tmp17_ = NULL; TrackerClass* _tmp18_; @@ -12382,2054 +12631,2055 @@ gchar* _tmp28_; TrackerClass* _tmp29_; TrackerClass* _tmp30_; -#line 1278 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" rdftype = TRUE; -#line 1279 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp16_ = object; -#line 1279 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp17_ = tracker_ontologies_get_class_by_uri (_tmp16_); -#line 1279 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp18_ = _g_object_ref0 (_tmp17_); -#line 1279 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" cl = _tmp18_; -#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp19_ = cl; -#line 1280 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp19_ == NULL) { -#line 12395 "tracker-sparql-pattern.c" +#line 12644 "tracker-sparql-pattern.c" const gchar* _tmp20_; gchar* _tmp21_ = NULL; gchar* _tmp22_; GError* _tmp23_; GError* _tmp24_; -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp20_ = object; -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp21_ = g_strdup_printf ("Unknown class `%s'", _tmp20_); -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp22_ = _tmp21_; -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp23_ = g_error_new_literal (TRACKER_SPARQL_ERROR, TRACKER_SPARQL_ERROR_UNKNOWN_CLASS, _tmp22_); -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp24_ = _tmp23_; -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp22_); -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _inner_error_ = _tmp24_; -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (cl); -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (subject_type); -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (table); -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (db_table); -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (object); -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 12433 "tracker-sparql-pattern.c" +#line 12682 "tracker-sparql-pattern.c" } else { -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (cl); -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (subject_type); -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (table); -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (db_table); -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (object); -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1281 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 12453 "tracker-sparql-pattern.c" +#line 12702 "tracker-sparql-pattern.c" } } -#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1325 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp25_ = cl; -#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1325 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp26_ = tracker_class_get_name (_tmp25_); -#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1325 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp27_ = _tmp26_; -#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1325 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp28_ = g_strdup (_tmp27_); -#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1325 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (db_table); -#line 1283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1325 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" db_table = _tmp28_; -#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp29_ = cl; -#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp30_ = _g_object_ref0 (_tmp29_); -#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (subject_type); -#line 1284 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" subject_type = _tmp30_; -#line 1274 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (cl); -#line 12478 "tracker-sparql-pattern.c" +#line 12727 "tracker-sparql-pattern.c" } else { TrackerProperty* _tmp31_; -#line 1285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1327 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp31_ = prop; -#line 1285 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1327 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp31_ == NULL) { -#line 12485 "tracker-sparql-pattern.c" +#line 12734 "tracker-sparql-pattern.c" const gchar* _tmp32_; -#line 1286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1328 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp32_ = self->priv->current_predicate; -#line 1286 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1328 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (g_strcmp0 (_tmp32_, "http://www.tracker-project.org/ontologies/fts#match") == 0) { -#line 12491 "tracker-sparql-pattern.c" +#line 12740 "tracker-sparql-pattern.c" gchar* _tmp33_; -#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + TrackerSparqlContext* _tmp34_; + TrackerSparqlContext* _tmp35_; + const gchar* _tmp36_; + TrackerSparqlVariable* _tmp37_ = NULL; + TrackerSparqlVariable* _tmp38_; +#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp33_ = g_strdup ("fts"); -#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (db_table); -#line 1288 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1330 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" db_table = _tmp33_; -#line 1289 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1331 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" share_table = FALSE; -#line 1290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1332 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" is_fts_match = TRUE; -#line 12503 "tracker-sparql-pattern.c" +#line 1333 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp34_ = tracker_sparql_pattern_get_context (self); +#line 1333 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp35_ = _tmp34_; +#line 1333 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp36_ = self->priv->current_subject; +#line 1333 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp37_ = tracker_sparql_context_get_variable (_tmp35_, _tmp36_); +#line 1333 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp38_ = _g_object_ref0 (_tmp37_); +#line 1333 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (self->fts_subject); +#line 1333 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + self->fts_subject = _tmp38_; +#line 12771 "tracker-sparql-pattern.c" } else { - const gchar* _tmp34_; - gchar* _tmp35_ = NULL; - gchar* _tmp36_; - GError* _tmp37_; - GError* _tmp38_; -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp34_ = self->priv->current_predicate; -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp35_ = g_strdup_printf ("Unknown property `%s'", _tmp34_); -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp36_ = _tmp35_; -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp37_ = g_error_new_literal (TRACKER_SPARQL_ERROR, TRACKER_SPARQL_ERROR_UNKNOWN_PROPERTY, _tmp36_); -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp38_ = _tmp37_; -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (_tmp36_); -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _inner_error_ = _tmp38_; -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + const gchar* _tmp39_; + gchar* _tmp40_ = NULL; + gchar* _tmp41_; + GError* _tmp42_; + GError* _tmp43_; +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp39_ = self->priv->current_predicate; +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp40_ = g_strdup_printf ("Unknown property `%s'", _tmp39_); +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp41_ = _tmp40_; +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp42_ = g_error_new_literal (TRACKER_SPARQL_ERROR, TRACKER_SPARQL_ERROR_UNKNOWN_PROPERTY, _tmp41_); +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp43_ = _tmp42_; +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (_tmp41_); +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _inner_error_ = _tmp43_; +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (subject_type); -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (table); -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (db_table); -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (object); -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 12540 "tracker-sparql-pattern.c" +#line 12808 "tracker-sparql-pattern.c" } else { -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (subject_type); -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (table); -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (db_table); -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (object); -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1292 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1335 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 12558 "tracker-sparql-pattern.c" +#line 12826 "tracker-sparql-pattern.c" } } } else { - gboolean _tmp39_ = FALSE; - gboolean _tmp40_ = FALSE; - const gchar* _tmp41_; - gboolean _tmp43_; - gboolean _tmp45_; - gboolean _tmp79_; - const gchar* _tmp110_; - TrackerProperty* _tmp115_; - gboolean _tmp116_; - gboolean _tmp117_; - TrackerProperty* _tmp118_; - TrackerClass* _tmp119_; - TrackerClass* _tmp120_; - TrackerClass* _tmp121_; - gboolean _tmp122_ = FALSE; - gboolean _tmp123_; - gboolean _tmp132_; -#line 1295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp41_ = self->priv->current_predicate; -#line 1295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (g_strcmp0 (_tmp41_, "http://www.w3.org/2000/01/rdf-schema#domain") == 0) { -#line 12583 "tracker-sparql-pattern.c" - gboolean _tmp42_; -#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp42_ = self->priv->current_subject_is_var; -#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp40_ = _tmp42_; -#line 12589 "tracker-sparql-pattern.c" + gboolean _tmp44_ = FALSE; + gboolean _tmp45_ = FALSE; + const gchar* _tmp46_; + gboolean _tmp48_; + gboolean _tmp50_; + gboolean _tmp84_; + const gchar* _tmp115_; + TrackerProperty* _tmp120_; + gboolean _tmp121_; + gboolean _tmp122_; + TrackerProperty* _tmp123_; + TrackerClass* _tmp124_; + TrackerClass* _tmp125_; + TrackerClass* _tmp126_; + gboolean _tmp127_ = FALSE; + gboolean _tmp128_; + gboolean _tmp137_; +#line 1338 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp46_ = self->priv->current_predicate; +#line 1338 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (g_strcmp0 (_tmp46_, "http://www.w3.org/2000/01/rdf-schema#domain") == 0) { +#line 12851 "tracker-sparql-pattern.c" + gboolean _tmp47_; +#line 1339 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp47_ = self->priv->current_subject_is_var; +#line 1339 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp45_ = _tmp47_; +#line 12857 "tracker-sparql-pattern.c" } else { -#line 1295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp40_ = FALSE; -#line 12593 "tracker-sparql-pattern.c" - } -#line 1295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp43_ = _tmp40_; -#line 1295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp43_) { -#line 12599 "tracker-sparql-pattern.c" - gboolean _tmp44_; -#line 1297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp44_ = object_is_var; -#line 1297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp39_ = !_tmp44_; -#line 12605 "tracker-sparql-pattern.c" +#line 1338 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp45_ = FALSE; +#line 12861 "tracker-sparql-pattern.c" + } +#line 1338 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp48_ = _tmp45_; +#line 1338 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp48_) { +#line 12867 "tracker-sparql-pattern.c" + gboolean _tmp49_; +#line 1340 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp49_ = object_is_var; +#line 1340 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp44_ = !_tmp49_; +#line 12873 "tracker-sparql-pattern.c" } else { -#line 1295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp39_ = FALSE; -#line 12609 "tracker-sparql-pattern.c" - } -#line 1295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp45_ = _tmp39_; -#line 1295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp45_) { -#line 12615 "tracker-sparql-pattern.c" - const gchar* _tmp46_; - TrackerClass* _tmp47_ = NULL; - TrackerClass* _tmp48_; +#line 1338 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp44_ = FALSE; +#line 12877 "tracker-sparql-pattern.c" + } +#line 1338 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp50_ = _tmp44_; +#line 1338 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp50_) { +#line 12883 "tracker-sparql-pattern.c" + const gchar* _tmp51_; + TrackerClass* _tmp52_ = NULL; + TrackerClass* _tmp53_; TrackerClass* domain; - TrackerClass* _tmp49_; - TrackerSparqlContext* _tmp55_; - TrackerSparqlContext* _tmp56_; - GHashTable* _tmp57_; - TrackerSparqlContext* _tmp58_; - TrackerSparqlContext* _tmp59_; - const gchar* _tmp60_; - TrackerSparqlVariable* _tmp61_ = NULL; - gconstpointer _tmp62_ = NULL; - TrackerSparqlPredicateVariable* _tmp63_; + TrackerClass* _tmp54_; + TrackerSparqlContext* _tmp60_; + TrackerSparqlContext* _tmp61_; + GHashTable* _tmp62_; + TrackerSparqlContext* _tmp63_; + TrackerSparqlContext* _tmp64_; + const gchar* _tmp65_; + TrackerSparqlVariable* _tmp66_ = NULL; + gconstpointer _tmp67_ = NULL; + TrackerSparqlPredicateVariable* _tmp68_; TrackerSparqlPredicateVariable* pv; - TrackerSparqlPredicateVariable* _tmp64_; - TrackerSparqlPredicateVariable* _tmp76_; - TrackerClass* _tmp77_; - TrackerClass* _tmp78_; -#line 1299 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp46_ = object; -#line 1299 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp47_ = tracker_ontologies_get_class_by_uri (_tmp46_); -#line 1299 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp48_ = _g_object_ref0 (_tmp47_); -#line 1299 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - domain = _tmp48_; -#line 1300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp49_ = domain; -#line 1300 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp49_ == NULL) { -#line 12647 "tracker-sparql-pattern.c" - const gchar* _tmp50_; - gchar* _tmp51_ = NULL; - gchar* _tmp52_; - GError* _tmp53_; - GError* _tmp54_; -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp50_ = object; -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp51_ = g_strdup_printf ("Unknown class `%s'", _tmp50_); -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp52_ = _tmp51_; -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp53_ = g_error_new_literal (TRACKER_SPARQL_ERROR, TRACKER_SPARQL_ERROR_UNKNOWN_CLASS, _tmp52_); -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp54_ = _tmp53_; -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (_tmp52_); -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _inner_error_ = _tmp54_; -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + TrackerSparqlPredicateVariable* _tmp69_; + TrackerSparqlPredicateVariable* _tmp81_; + TrackerClass* _tmp82_; + TrackerClass* _tmp83_; +#line 1342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp51_ = object; +#line 1342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp52_ = tracker_ontologies_get_class_by_uri (_tmp51_); +#line 1342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp53_ = _g_object_ref0 (_tmp52_); +#line 1342 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + domain = _tmp53_; +#line 1343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp54_ = domain; +#line 1343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp54_ == NULL) { +#line 12915 "tracker-sparql-pattern.c" + const gchar* _tmp55_; + gchar* _tmp56_ = NULL; + gchar* _tmp57_; + GError* _tmp58_; + GError* _tmp59_; +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp55_ = object; +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp56_ = g_strdup_printf ("Unknown class `%s'", _tmp55_); +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp57_ = _tmp56_; +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp58_ = g_error_new_literal (TRACKER_SPARQL_ERROR, TRACKER_SPARQL_ERROR_UNKNOWN_CLASS, _tmp57_); +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp59_ = _tmp58_; +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (_tmp57_); +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _inner_error_ = _tmp59_; +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_propagate_error (error, _inner_error_); -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (domain); -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (subject_type); -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (table); -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (db_table); -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (object); -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 12685 "tracker-sparql-pattern.c" +#line 12953 "tracker-sparql-pattern.c" } else { -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (domain); -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (subject_type); -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (table); -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (db_table); -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (object); -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_clear_error (&_inner_error_); -#line 1301 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1344 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return; -#line 12705 "tracker-sparql-pattern.c" +#line 12973 "tracker-sparql-pattern.c" } } -#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp55_ = tracker_sparql_pattern_get_context (self); -#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp56_ = _tmp55_; -#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp57_ = _tmp56_->predicate_variable_map; -#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp58_ = tracker_sparql_pattern_get_context (self); -#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp59_ = _tmp58_; -#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp60_ = self->priv->current_subject; -#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp61_ = tracker_sparql_context_get_variable (_tmp59_, _tmp60_); -#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp62_ = g_hash_table_lookup (_tmp57_, _tmp61_); -#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp63_ = _g_object_ref0 ((TrackerSparqlPredicateVariable*) _tmp62_); -#line 1303 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - pv = _tmp63_; -#line 1304 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp64_ = pv; -#line 1304 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp64_ == NULL) { -#line 12732 "tracker-sparql-pattern.c" - TrackerSparqlPredicateVariable* _tmp65_; - TrackerSparqlContext* _tmp66_; - TrackerSparqlContext* _tmp67_; - GHashTable* _tmp68_; - TrackerSparqlContext* _tmp69_; - TrackerSparqlContext* _tmp70_; - const gchar* _tmp71_; - TrackerSparqlVariable* _tmp72_ = NULL; - TrackerSparqlVariable* _tmp73_; - TrackerSparqlPredicateVariable* _tmp74_; - TrackerSparqlPredicateVariable* _tmp75_; -#line 1305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp65_ = tracker_sparql_predicate_variable_new (); -#line 1305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1346 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp60_ = tracker_sparql_pattern_get_context (self); +#line 1346 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp61_ = _tmp60_; +#line 1346 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp62_ = _tmp61_->predicate_variable_map; +#line 1346 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp63_ = tracker_sparql_pattern_get_context (self); +#line 1346 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp64_ = _tmp63_; +#line 1346 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp65_ = self->priv->current_subject; +#line 1346 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp66_ = tracker_sparql_context_get_variable (_tmp64_, _tmp65_); +#line 1346 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp67_ = g_hash_table_lookup (_tmp62_, _tmp66_); +#line 1346 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp68_ = _g_object_ref0 ((TrackerSparqlPredicateVariable*) _tmp67_); +#line 1346 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + pv = _tmp68_; +#line 1347 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp69_ = pv; +#line 1347 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp69_ == NULL) { +#line 13000 "tracker-sparql-pattern.c" + TrackerSparqlPredicateVariable* _tmp70_; + TrackerSparqlContext* _tmp71_; + TrackerSparqlContext* _tmp72_; + GHashTable* _tmp73_; + TrackerSparqlContext* _tmp74_; + TrackerSparqlContext* _tmp75_; + const gchar* _tmp76_; + TrackerSparqlVariable* _tmp77_ = NULL; + TrackerSparqlVariable* _tmp78_; + TrackerSparqlPredicateVariable* _tmp79_; + TrackerSparqlPredicateVariable* _tmp80_; +#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp70_ = tracker_sparql_predicate_variable_new (); +#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (pv); -#line 1305 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - pv = _tmp65_; -#line 1306 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp66_ = tracker_sparql_pattern_get_context (self); -#line 1306 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp67_ = _tmp66_; -#line 1306 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp68_ = _tmp67_->predicate_variable_map; -#line 1306 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp69_ = tracker_sparql_pattern_get_context (self); -#line 1306 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp70_ = _tmp69_; -#line 1306 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp71_ = self->priv->current_subject; -#line 1306 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp72_ = tracker_sparql_context_get_variable (_tmp70_, _tmp71_); -#line 1306 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp73_ = _g_object_ref0 (_tmp72_); -#line 1306 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp74_ = pv; -#line 1306 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp75_ = _g_object_ref0 (_tmp74_); -#line 1306 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_hash_table_insert (_tmp68_, _tmp73_, _tmp75_); -#line 12772 "tracker-sparql-pattern.c" - } -#line 1308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp76_ = pv; -#line 1308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp77_ = domain; -#line 1308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp78_ = _g_object_ref0 (_tmp77_); -#line 1308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (_tmp76_->domain); -#line 1308 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp76_->domain = _tmp78_; -#line 1295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + pv = _tmp70_; +#line 1349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp71_ = tracker_sparql_pattern_get_context (self); +#line 1349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp72_ = _tmp71_; +#line 1349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp73_ = _tmp72_->predicate_variable_map; +#line 1349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp74_ = tracker_sparql_pattern_get_context (self); +#line 1349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp75_ = _tmp74_; +#line 1349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp76_ = self->priv->current_subject; +#line 1349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp77_ = tracker_sparql_context_get_variable (_tmp75_, _tmp76_); +#line 1349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp78_ = _g_object_ref0 (_tmp77_); +#line 1349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp79_ = pv; +#line 1349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp80_ = _g_object_ref0 (_tmp79_); +#line 1349 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_hash_table_insert (_tmp73_, _tmp78_, _tmp80_); +#line 13040 "tracker-sparql-pattern.c" + } +#line 1351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp81_ = pv; +#line 1351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp82_ = domain; +#line 1351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp83_ = _g_object_ref0 (_tmp82_); +#line 1351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (_tmp81_->domain); +#line 1351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp81_->domain = _tmp83_; +#line 1338 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (pv); -#line 1295 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1338 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (domain); -#line 12788 "tracker-sparql-pattern.c" +#line 13056 "tracker-sparql-pattern.c" } -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp79_ = self->priv->current_subject_is_var; -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp79_) { -#line 12794 "tracker-sparql-pattern.c" - TrackerSparqlContext* _tmp80_; - TrackerSparqlContext* _tmp81_; - const gchar* _tmp82_; - TrackerSparqlVariable* _tmp83_ = NULL; - TrackerSparqlVariable* _tmp84_; +#line 1354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp84_ = self->priv->current_subject_is_var; +#line 1354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp84_) { +#line 13062 "tracker-sparql-pattern.c" + TrackerSparqlContext* _tmp85_; + TrackerSparqlContext* _tmp86_; + const gchar* _tmp87_; + TrackerSparqlVariable* _tmp88_ = NULL; + TrackerSparqlVariable* _tmp89_; TrackerSparqlVariable* v; - TrackerSparqlPatternTripleContext* _tmp85_; - GHashTable* _tmp86_; - TrackerSparqlVariable* _tmp87_; - gconstpointer _tmp88_ = NULL; - TrackerSparqlVariableBindingList* _tmp89_; + TrackerSparqlPatternTripleContext* _tmp90_; + GHashTable* _tmp91_; + TrackerSparqlVariable* _tmp92_; + gconstpointer _tmp93_ = NULL; + TrackerSparqlVariableBindingList* _tmp94_; TrackerSparqlVariableBindingList* list; - gboolean _tmp90_ = FALSE; - TrackerSparqlVariableBindingList* _tmp91_; - gboolean _tmp94_; -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp80_ = tracker_sparql_pattern_get_context (self); -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp81_ = _tmp80_; -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp82_ = self->priv->current_subject; -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp83_ = tracker_sparql_context_get_variable (_tmp81_, _tmp82_); -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp84_ = _g_object_ref0 (_tmp83_); -#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - v = _tmp84_; -#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp85_ = self->priv->triple_context; -#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp86_ = _tmp85_->var_bindings; -#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp87_ = v; -#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp88_ = g_hash_table_lookup (_tmp86_, _tmp87_); -#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp89_ = _g_object_ref0 ((TrackerSparqlVariableBindingList*) _tmp88_); -#line 1314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - list = _tmp89_; -#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp91_ = list; -#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp91_ != NULL) { -#line 12838 "tracker-sparql-pattern.c" - TrackerSparqlVariableBindingList* _tmp92_; - GList* _tmp93_; -#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp92_ = list; -#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp93_ = _tmp92_->list; -#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp90_ = _tmp93_ != NULL; -#line 12847 "tracker-sparql-pattern.c" + gboolean _tmp95_ = FALSE; + TrackerSparqlVariableBindingList* _tmp96_; + gboolean _tmp99_; +#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp85_ = tracker_sparql_pattern_get_context (self); +#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp86_ = _tmp85_; +#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp87_ = self->priv->current_subject; +#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp88_ = tracker_sparql_context_get_variable (_tmp86_, _tmp87_); +#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp89_ = _g_object_ref0 (_tmp88_); +#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + v = _tmp89_; +#line 1357 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp90_ = self->priv->triple_context; +#line 1357 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp91_ = _tmp90_->var_bindings; +#line 1357 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp92_ = v; +#line 1357 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp93_ = g_hash_table_lookup (_tmp91_, _tmp92_); +#line 1357 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp94_ = _g_object_ref0 ((TrackerSparqlVariableBindingList*) _tmp93_); +#line 1357 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + list = _tmp94_; +#line 1359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp96_ = list; +#line 1359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp96_ != NULL) { +#line 13106 "tracker-sparql-pattern.c" + TrackerSparqlVariableBindingList* _tmp97_; + GList* _tmp98_; +#line 1359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp97_ = list; +#line 1359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp98_ = _tmp97_->list; +#line 1359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp95_ = _tmp98_ != NULL; +#line 13115 "tracker-sparql-pattern.c" } else { -#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp90_ = FALSE; -#line 12851 "tracker-sparql-pattern.c" - } -#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp94_ = _tmp90_; -#line 1316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp94_) { -#line 12857 "tracker-sparql-pattern.c" +#line 1359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp95_ = FALSE; +#line 13119 "tracker-sparql-pattern.c" + } +#line 1359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp99_ = _tmp95_; +#line 1359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp99_) { +#line 13125 "tracker-sparql-pattern.c" gboolean stop; - TrackerProperty* _tmp95_; - TrackerClass** _tmp96_; - TrackerClass** _tmp97_ = NULL; -#line 1317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + TrackerProperty* _tmp100_; + TrackerClass** _tmp101_; + TrackerClass** _tmp102_ = NULL; +#line 1360 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" stop = FALSE; -#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp95_ = prop; -#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp97_ = _tmp96_ = tracker_property_get_domain_indexes (_tmp95_); -#line 12868 "tracker-sparql-pattern.c" +#line 1361 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp100_ = prop; +#line 1361 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp102_ = _tmp101_ = tracker_property_get_domain_indexes (_tmp100_); +#line 13136 "tracker-sparql-pattern.c" { TrackerClass** cl_collection = NULL; gint cl_collection_length1 = 0; gint _cl_collection_size_ = 0; gint cl_it = 0; -#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - cl_collection = _tmp97_; -#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - cl_collection_length1 = _vala_array_length (_tmp96_); -#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - for (cl_it = 0; cl_it < _vala_array_length (_tmp96_); cl_it = cl_it + 1) { -#line 12880 "tracker-sparql-pattern.c" - TrackerClass* _tmp98_; +#line 1361 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + cl_collection = _tmp102_; +#line 1361 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + cl_collection_length1 = _vala_array_length (_tmp101_); +#line 1361 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + for (cl_it = 0; cl_it < _vala_array_length (_tmp101_); cl_it = cl_it + 1) { +#line 13148 "tracker-sparql-pattern.c" + TrackerClass* _tmp103_; TrackerClass* cl = NULL; -#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp98_ = _g_object_ref0 (cl_collection[cl_it]); -#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - cl = _tmp98_; -#line 12887 "tracker-sparql-pattern.c" +#line 1361 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp103_ = _g_object_ref0 (cl_collection[cl_it]); +#line 1361 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + cl = _tmp103_; +#line 13155 "tracker-sparql-pattern.c" { - TrackerSparqlVariableBindingList* _tmp99_; - GList* _tmp100_; - gboolean _tmp109_; -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp99_ = list; -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp100_ = _tmp99_->list; -#line 12896 "tracker-sparql-pattern.c" + TrackerSparqlVariableBindingList* _tmp104_; + GList* _tmp105_; + gboolean _tmp114_; +#line 1362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp104_ = list; +#line 1362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp105_ = _tmp104_->list; +#line 13164 "tracker-sparql-pattern.c" { GList* b_collection = NULL; GList* b_it = NULL; -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - b_collection = _tmp100_; -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + b_collection = _tmp105_; +#line 1362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" for (b_it = b_collection; b_it != NULL; b_it = b_it->next) { -#line 12904 "tracker-sparql-pattern.c" - TrackerSparqlVariableBinding* _tmp101_; +#line 13172 "tracker-sparql-pattern.c" + TrackerSparqlVariableBinding* _tmp106_; TrackerSparqlVariableBinding* b = NULL; -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp101_ = _g_object_ref0 ((TrackerSparqlVariableBinding*) b_it->data); -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - b = _tmp101_; -#line 12911 "tracker-sparql-pattern.c" +#line 1362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp106_ = _g_object_ref0 ((TrackerSparqlVariableBinding*) b_it->data); +#line 1362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + b = _tmp106_; +#line 13179 "tracker-sparql-pattern.c" { - TrackerSparqlVariableBinding* _tmp102_; - TrackerClass* _tmp103_; - TrackerClass* _tmp104_; -#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp102_ = b; -#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp103_ = _tmp102_->type; -#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp104_ = cl; -#line 1320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp103_ == _tmp104_) { -#line 12924 "tracker-sparql-pattern.c" - TrackerClass* _tmp105_; - const gchar* _tmp106_; - const gchar* _tmp107_; - gchar* _tmp108_; -#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp105_ = cl; -#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp106_ = tracker_class_get_name (_tmp105_); -#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp107_ = _tmp106_; -#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp108_ = g_strdup (_tmp107_); -#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + TrackerSparqlVariableBinding* _tmp107_; + TrackerClass* _tmp108_; + TrackerClass* _tmp109_; +#line 1363 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp107_ = b; +#line 1363 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp108_ = _tmp107_->type; +#line 1363 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp109_ = cl; +#line 1363 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp108_ == _tmp109_) { +#line 13192 "tracker-sparql-pattern.c" + TrackerClass* _tmp110_; + const gchar* _tmp111_; + const gchar* _tmp112_; + gchar* _tmp113_; +#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp110_ = cl; +#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp111_ = tracker_class_get_name (_tmp110_); +#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp112_ = _tmp111_; +#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp113_ = g_strdup (_tmp112_); +#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (db_table); -#line 1321 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - db_table = _tmp108_; -#line 1322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + db_table = _tmp113_; +#line 1365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" stop = TRUE; -#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (b); -#line 1323 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 12947 "tracker-sparql-pattern.c" +#line 13215 "tracker-sparql-pattern.c" } -#line 1319 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1362 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (b); -#line 12951 "tracker-sparql-pattern.c" +#line 13219 "tracker-sparql-pattern.c" } } } -#line 1326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp109_ = stop; -#line 1326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp109_) { -#line 1327 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp114_ = stop; +#line 1369 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp114_) { +#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (cl); -#line 1327 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 12963 "tracker-sparql-pattern.c" +#line 13231 "tracker-sparql-pattern.c" } -#line 1318 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1361 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (cl); -#line 12967 "tracker-sparql-pattern.c" +#line 13235 "tracker-sparql-pattern.c" } } } } -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (list); -#line 1311 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1354 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (v); -#line 12976 "tracker-sparql-pattern.c" +#line 13244 "tracker-sparql-pattern.c" } -#line 1333 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp110_ = db_table; -#line 1333 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp110_ == NULL) { -#line 12982 "tracker-sparql-pattern.c" - TrackerProperty* _tmp111_; - const gchar* _tmp112_; - const gchar* _tmp113_; - gchar* _tmp114_; -#line 1334 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp111_ = prop; -#line 1334 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp112_ = tracker_property_get_table_name (_tmp111_); -#line 1334 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp113_ = _tmp112_; -#line 1334 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp114_ = g_strdup (_tmp113_); -#line 1334 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1376 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp115_ = db_table; +#line 1376 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp115_ == NULL) { +#line 13250 "tracker-sparql-pattern.c" + TrackerProperty* _tmp116_; + const gchar* _tmp117_; + const gchar* _tmp118_; + gchar* _tmp119_; +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp116_ = prop; +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp117_ = tracker_property_get_table_name (_tmp116_); +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp118_ = _tmp117_; +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp119_ = g_strdup (_tmp118_); +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (db_table); -#line 1334 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - db_table = _tmp114_; -#line 12999 "tracker-sparql-pattern.c" - } -#line 1336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp115_ = prop; -#line 1336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp116_ = tracker_property_get_multiple_values (_tmp115_); -#line 1336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp117_ = _tmp116_; -#line 1336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp117_) { -#line 1339 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + db_table = _tmp119_; +#line 13267 "tracker-sparql-pattern.c" + } +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp120_ = prop; +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp121_ = tracker_property_get_multiple_values (_tmp120_); +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp122_ = _tmp121_; +#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp122_) { +#line 1382 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" share_table = FALSE; -#line 13011 "tracker-sparql-pattern.c" +#line 13279 "tracker-sparql-pattern.c" } -#line 1341 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp118_ = prop; -#line 1341 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp119_ = tracker_property_get_domain (_tmp118_); -#line 1341 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp120_ = _tmp119_; -#line 1341 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp121_ = _g_object_ref0 (_tmp120_); -#line 1341 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp123_ = prop; +#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp124_ = tracker_property_get_domain (_tmp123_); +#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp125_ = _tmp124_; +#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp126_ = _g_object_ref0 (_tmp125_); +#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (subject_type); -#line 1341 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - subject_type = _tmp121_; -#line 1343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp123_ = in_simple_optional; -#line 1343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp123_) { -#line 13029 "tracker-sparql-pattern.c" - TrackerSparqlContext* _tmp124_; - TrackerSparqlContext* _tmp125_; - GHashTable* _tmp126_; - TrackerSparqlContext* _tmp127_; - TrackerSparqlContext* _tmp128_; - const gchar* _tmp129_; - TrackerSparqlVariable* _tmp130_ = NULL; - gconstpointer _tmp131_ = NULL; -#line 1343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp124_ = tracker_sparql_pattern_get_context (self); -#line 1343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp125_ = _tmp124_; -#line 1343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp126_ = _tmp125_->var_set; -#line 1343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp127_ = tracker_sparql_pattern_get_context (self); -#line 1343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp128_ = _tmp127_; -#line 1343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp129_ = self->priv->current_subject; -#line 1343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp130_ = tracker_sparql_context_get_variable (_tmp128_, _tmp129_); -#line 1343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp131_ = g_hash_table_lookup (_tmp126_, _tmp130_); -#line 1343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp122_ = GPOINTER_TO_INT (_tmp131_) == 0; -#line 13056 "tracker-sparql-pattern.c" +#line 1384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + subject_type = _tmp126_; +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp128_ = in_simple_optional; +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp128_) { +#line 13297 "tracker-sparql-pattern.c" + TrackerSparqlContext* _tmp129_; + TrackerSparqlContext* _tmp130_; + GHashTable* _tmp131_; + TrackerSparqlContext* _tmp132_; + TrackerSparqlContext* _tmp133_; + const gchar* _tmp134_; + TrackerSparqlVariable* _tmp135_ = NULL; + gconstpointer _tmp136_ = NULL; +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp129_ = tracker_sparql_pattern_get_context (self); +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp130_ = _tmp129_; +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp131_ = _tmp130_->var_set; +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp132_ = tracker_sparql_pattern_get_context (self); +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp133_ = _tmp132_; +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp134_ = self->priv->current_subject; +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp135_ = tracker_sparql_context_get_variable (_tmp133_, _tmp134_); +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp136_ = g_hash_table_lookup (_tmp131_, _tmp135_); +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp127_ = GPOINTER_TO_INT (_tmp136_) == 0; +#line 13324 "tracker-sparql-pattern.c" } else { -#line 1343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp122_ = FALSE; -#line 13060 "tracker-sparql-pattern.c" - } -#line 1343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp132_ = _tmp122_; -#line 1343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp132_) { -#line 13066 "tracker-sparql-pattern.c" - TrackerSparqlVariableBinding* _tmp133_; +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp127_ = FALSE; +#line 13328 "tracker-sparql-pattern.c" + } +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp137_ = _tmp127_; +#line 1386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp137_) { +#line 13334 "tracker-sparql-pattern.c" + TrackerSparqlVariableBinding* _tmp138_; TrackerSparqlVariableBinding* binding; - TrackerSparqlVariableBinding* _tmp134_; - TrackerSparqlVariableBinding* _tmp135_; - TrackerSparqlContext* _tmp136_; - TrackerSparqlContext* _tmp137_; - const gchar* _tmp138_; - TrackerSparqlVariable* _tmp139_ = NULL; - TrackerSparqlPatternTripleContext* _tmp140_; - GHashTable* _tmp141_; - TrackerSparqlVariableBinding* _tmp142_; - TrackerSparqlVariable* _tmp143_; - gconstpointer _tmp144_ = NULL; - TrackerSparqlVariableBindingList* _tmp145_; - TrackerSparqlVariableBindingList* binding_list; - TrackerSparqlPatternTripleContext* _tmp146_; + TrackerSparqlVariableBinding* _tmp139_; + TrackerSparqlVariableBinding* _tmp140_; + TrackerSparqlContext* _tmp141_; + TrackerSparqlContext* _tmp142_; + const gchar* _tmp143_; + TrackerSparqlVariable* _tmp144_ = NULL; + TrackerSparqlPatternTripleContext* _tmp145_; + GHashTable* _tmp146_; TrackerSparqlVariableBinding* _tmp147_; TrackerSparqlVariable* _tmp148_; - TrackerSparqlVariable* _tmp149_; - TrackerSparqlPatternTripleContext* _tmp150_; - GHashTable* _tmp151_; + gconstpointer _tmp149_ = NULL; + TrackerSparqlVariableBindingList* _tmp150_; + TrackerSparqlVariableBindingList* binding_list; + TrackerSparqlPatternTripleContext* _tmp151_; TrackerSparqlVariableBinding* _tmp152_; TrackerSparqlVariable* _tmp153_; TrackerSparqlVariable* _tmp154_; - TrackerSparqlVariableBindingList* _tmp155_; - TrackerSparqlVariableBindingList* _tmp156_; - TrackerSparqlPatternTripleContext* _tmp157_; - GHashTable* _tmp158_; - TrackerSparqlContext* _tmp159_; - TrackerSparqlContext* _tmp160_; - const gchar* _tmp161_; - TrackerSparqlVariable* _tmp162_ = NULL; - gconstpointer _tmp163_ = NULL; - GList* _tmp164_; - gconstpointer _tmp165_; - TrackerSparqlVariableBinding* _tmp166_; + TrackerSparqlPatternTripleContext* _tmp155_; + GHashTable* _tmp156_; + TrackerSparqlVariableBinding* _tmp157_; + TrackerSparqlVariable* _tmp158_; + TrackerSparqlVariable* _tmp159_; + TrackerSparqlVariableBindingList* _tmp160_; + TrackerSparqlVariableBindingList* _tmp161_; + TrackerSparqlPatternTripleContext* _tmp162_; + GHashTable* _tmp163_; + TrackerSparqlContext* _tmp164_; + TrackerSparqlContext* _tmp165_; + const gchar* _tmp166_; + TrackerSparqlVariable* _tmp167_ = NULL; + gconstpointer _tmp168_ = NULL; + GList* _tmp169_; + gconstpointer _tmp170_; + TrackerSparqlVariableBinding* _tmp171_; TrackerSparqlVariableBinding* object_binding; - GString* _tmp167_; - const gchar* _tmp168_; - TrackerProperty* _tmp169_; - const gchar* _tmp170_; - const gchar* _tmp171_; - TrackerSparqlVariableBinding* _tmp172_; + GString* _tmp172_; const gchar* _tmp173_; - const gchar* _tmp174_; - TrackerSparqlVariableBinding* _tmp175_; - TrackerSparqlVariable* _tmp176_; - const gchar* _tmp177_; + TrackerProperty* _tmp174_; + const gchar* _tmp175_; + const gchar* _tmp176_; + TrackerSparqlVariableBinding* _tmp177_; const gchar* _tmp178_; - TrackerSparqlContext* _tmp179_; - TrackerSparqlContext* _tmp180_; - GHashTable* _tmp181_; - TrackerSparqlVariableBinding* _tmp182_; - TrackerSparqlVariable* _tmp183_; - TrackerSparqlVariable* _tmp184_; - TrackerSparqlVariableBindingList* _tmp185_; - TrackerSparqlVariableBinding* _tmp186_; + const gchar* _tmp179_; + TrackerSparqlVariableBinding* _tmp180_; + TrackerSparqlVariable* _tmp181_; + const gchar* _tmp182_; + const gchar* _tmp183_; + TrackerSparqlContext* _tmp184_; + TrackerSparqlContext* _tmp185_; + GHashTable* _tmp186_; TrackerSparqlVariableBinding* _tmp187_; - TrackerSparqlVariableBinding* _tmp188_; + TrackerSparqlVariable* _tmp188_; TrackerSparqlVariable* _tmp189_; - TrackerSparqlVariableBinding* _tmp190_; + TrackerSparqlVariableBindingList* _tmp190_; TrackerSparqlVariableBinding* _tmp191_; - TrackerSparqlVariable* _tmp192_; + TrackerSparqlVariableBinding* _tmp192_; TrackerSparqlVariableBinding* _tmp193_; - TrackerSparqlVariableBinding* _tmp194_; -#line 1346 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp133_ = tracker_sparql_variable_binding_new (); -#line 1346 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - binding = _tmp133_; -#line 1347 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp134_ = binding; -#line 1347 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp134_)->data_type = TRACKER_PROPERTY_TYPE_RESOURCE; -#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp135_ = binding; -#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp136_ = tracker_sparql_pattern_get_context (self); -#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp137_ = _tmp136_; -#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp138_ = self->priv->current_subject; -#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp139_ = tracker_sparql_context_get_variable (_tmp137_, _tmp138_); -#line 1348 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp135_->variable = _tmp139_; -#line 1350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp140_ = self->priv->triple_context; -#line 1350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp141_ = _tmp140_->var_bindings; -#line 1350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp142_ = binding; -#line 1350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp143_ = _tmp142_->variable; -#line 1350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp144_ = g_hash_table_lookup (_tmp141_, _tmp143_); -#line 1350 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_assert (((TrackerSparqlVariableBindingList*) _tmp144_) == NULL); -#line 1351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp145_ = tracker_sparql_variable_binding_list_new (); -#line 1351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - binding_list = _tmp145_; -#line 1352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp146_ = self->priv->triple_context; -#line 1352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp147_ = binding; -#line 1352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp148_ = _tmp147_->variable; -#line 1352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp149_ = _g_object_ref0 (_tmp148_); -#line 1352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp146_->variables = g_list_append (_tmp146_->variables, _tmp149_); -#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp150_ = self->priv->triple_context; -#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp151_ = _tmp150_->var_bindings; -#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp152_ = binding; -#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp153_ = _tmp152_->variable; -#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp154_ = _g_object_ref0 (_tmp153_); -#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp155_ = binding_list; -#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp156_ = _g_object_ref0 (_tmp155_); -#line 1353 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_hash_table_insert (_tmp151_, _tmp154_, _tmp156_); -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp157_ = self->priv->triple_context; -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp158_ = _tmp157_->var_bindings; -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp159_ = tracker_sparql_pattern_get_context (self); -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp160_ = _tmp159_; -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp161_ = object; -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp162_ = tracker_sparql_context_get_variable (_tmp160_, _tmp161_); -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp163_ = g_hash_table_lookup (_tmp158_, _tmp162_); -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp164_ = ((TrackerSparqlVariableBindingList*) _tmp163_)->list; -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp165_ = _tmp164_->data; -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp166_ = _g_object_ref0 ((TrackerSparqlVariableBinding*) _tmp165_); -#line 1356 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - object_binding = _tmp166_; -#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp167_ = sql; -#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp168_ = db_table; -#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp169_ = prop; -#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp170_ = tracker_property_get_name (_tmp169_); -#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp171_ = _tmp170_; -#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp172_ = object_binding; -#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp173_ = tracker_sparql_data_binding_get_sql_expression ((TrackerSparqlDataBinding*) _tmp172_); -#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp174_ = _tmp173_; -#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp175_ = binding; -#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp176_ = _tmp175_->variable; -#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp177_ = tracker_sparql_variable_get_sql_expression (_tmp176_); -#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp178_ = _tmp177_; -#line 1358 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append_printf (_tmp167_, "(SELECT ID FROM \"%s\" WHERE \"%s\" = %s) AS %s, ", _tmp168_, _tmp171_, _tmp174_, _tmp178_); -#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp179_ = tracker_sparql_pattern_get_context (self); -#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp180_ = _tmp179_; -#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp181_ = _tmp180_->var_set; -#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp182_ = binding; -#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp183_ = _tmp182_->variable; -#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp184_ = _g_object_ref0 (_tmp183_); -#line 1364 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_hash_table_insert (_tmp181_, _tmp184_, GINT_TO_POINTER ((gint) TRACKER_SPARQL_VARIABLE_STATE_OPTIONAL)); -#line 1365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp185_ = binding_list; -#line 1365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp186_ = binding; -#line 1365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp187_ = _g_object_ref0 (_tmp186_); -#line 1365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp185_->list = g_list_append (_tmp185_->list, _tmp187_); -#line 1367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp188_ = binding; -#line 1367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp189_ = _tmp188_->variable; -#line 1367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp190_ = _tmp189_->binding; -#line 1367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_assert (_tmp190_ == NULL); -#line 1368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp191_ = binding; -#line 1368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp192_ = _tmp191_->variable; -#line 1368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp193_ = binding; -#line 1368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp194_ = _g_object_ref0 (_tmp193_); -#line 1368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (_tmp192_->binding); -#line 1368 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp192_->binding = _tmp194_; -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (object_binding); -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (binding_list); -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (binding); -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (subject_type); -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (prop); -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (table); -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (db_table); -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (object); -#line 1370 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - return; -#line 13302 "tracker-sparql-pattern.c" - } - } - } -#line 1373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp195_ = self->priv->current_subject; -#line 1373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp196_ = db_table; -#line 1373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp197_ = share_table; -#line 1373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp199_ = tracker_sparql_pattern_get_table (self, _tmp195_, _tmp196_, _tmp197_, &_tmp198_); -#line 1373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - newtable = _tmp198_; -#line 1373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (table); -#line 1373 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - table = _tmp199_; -#line 13320 "tracker-sparql-pattern.c" - } else { - TrackerSparqlDataTable* _tmp200_; - TrackerSparqlDataTable* _tmp201_; - TrackerSparqlContext* _tmp202_; - TrackerSparqlContext* _tmp203_; - GHashTable* _tmp204_; - TrackerSparqlContext* _tmp205_; - TrackerSparqlContext* _tmp206_; - const gchar* _tmp207_; - TrackerSparqlVariable* _tmp208_ = NULL; - gconstpointer _tmp209_ = NULL; - TrackerSparqlPredicateVariable* _tmp210_; - TrackerSparqlDataTable* _tmp211_; - TrackerSparqlPredicateVariable* _tmp212_; - gboolean _tmp226_; - gboolean _tmp231_; - const gchar* _tmp236_; - TrackerSparqlDataTable* _tmp239_; - const gchar* _tmp240_; - gint _tmp241_; - gint _tmp242_; - gchar* _tmp243_ = NULL; - gchar* _tmp244_; - gchar* _tmp245_; - TrackerSparqlPatternTripleContext* _tmp246_; - TrackerSparqlDataTable* _tmp247_; - TrackerSparqlDataTable* _tmp248_; - TrackerSparqlVariableBinding* _tmp249_; - TrackerSparqlVariableBinding* binding; - TrackerSparqlVariableBinding* _tmp250_; - TrackerSparqlVariableBinding* _tmp251_; - TrackerSparqlContext* _tmp252_; - TrackerSparqlContext* _tmp253_; - const gchar* _tmp254_; - TrackerSparqlVariable* _tmp255_ = NULL; - TrackerSparqlVariableBinding* _tmp256_; - TrackerSparqlDataTable* _tmp257_; - TrackerSparqlDataTable* _tmp258_; - TrackerSparqlVariableBinding* _tmp259_; - gchar* _tmp260_; - GString* _tmp261_; - TrackerSparqlVariableBinding* _tmp262_; -#line 1376 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - newtable = TRUE; -#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp200_ = tracker_sparql_data_table_new (); -#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (table); -#line 1377 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - table = _tmp200_; -#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp201_ = table; -#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp202_ = tracker_sparql_pattern_get_context (self); -#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp203_ = _tmp202_; -#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp204_ = _tmp203_->predicate_variable_map; -#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp205_ = tracker_sparql_pattern_get_context (self); -#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp206_ = _tmp205_; -#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp207_ = self->priv->current_predicate; -#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp208_ = tracker_sparql_context_get_variable (_tmp206_, _tmp207_); -#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp209_ = g_hash_table_lookup (_tmp204_, _tmp208_); -#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp210_ = _g_object_ref0 ((TrackerSparqlPredicateVariable*) _tmp209_); -#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (_tmp201_->predicate_variable); -#line 1378 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp201_->predicate_variable = _tmp210_; -#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp211_ = table; -#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp212_ = _tmp211_->predicate_variable; -#line 1379 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp212_ == NULL) { -#line 13401 "tracker-sparql-pattern.c" - TrackerSparqlDataTable* _tmp213_; - TrackerSparqlPredicateVariable* _tmp214_; - TrackerSparqlContext* _tmp215_; - TrackerSparqlContext* _tmp216_; - GHashTable* _tmp217_; - TrackerSparqlContext* _tmp218_; - TrackerSparqlContext* _tmp219_; - const gchar* _tmp220_; - TrackerSparqlVariable* _tmp221_ = NULL; - TrackerSparqlVariable* _tmp222_; - TrackerSparqlDataTable* _tmp223_; - TrackerSparqlPredicateVariable* _tmp224_; - TrackerSparqlPredicateVariable* _tmp225_; -#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp213_ = table; -#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp214_ = tracker_sparql_predicate_variable_new (); -#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (_tmp213_->predicate_variable); -#line 1380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp213_->predicate_variable = _tmp214_; -#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp215_ = tracker_sparql_pattern_get_context (self); -#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp216_ = _tmp215_; -#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp217_ = _tmp216_->predicate_variable_map; -#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp218_ = tracker_sparql_pattern_get_context (self); -#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp219_ = _tmp218_; -#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp220_ = self->priv->current_predicate; -#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp221_ = tracker_sparql_context_get_variable (_tmp219_, _tmp220_); -#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp222_ = _g_object_ref0 (_tmp221_); -#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp223_ = table; -#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp224_ = _tmp223_->predicate_variable; -#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp225_ = _g_object_ref0 (_tmp224_); -#line 1381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_hash_table_insert (_tmp217_, _tmp222_, _tmp225_); -#line 13447 "tracker-sparql-pattern.c" - } -#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp226_ = self->priv->current_subject_is_var; -#line 1383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (!_tmp226_) { -#line 13453 "tracker-sparql-pattern.c" - TrackerSparqlDataTable* _tmp227_; - TrackerSparqlPredicateVariable* _tmp228_; - const gchar* _tmp229_; - gchar* _tmp230_; -#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp227_ = table; -#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp228_ = _tmp227_->predicate_variable; -#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp229_ = self->priv->current_subject; -#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp230_ = g_strdup (_tmp229_); -#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (_tmp228_->subject); -#line 1385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp228_->subject = _tmp230_; -#line 13470 "tracker-sparql-pattern.c" - } -#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp231_ = object_is_var; -#line 1387 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (!_tmp231_) { -#line 13476 "tracker-sparql-pattern.c" - TrackerSparqlDataTable* _tmp232_; - TrackerSparqlPredicateVariable* _tmp233_; - const gchar* _tmp234_; - gchar* _tmp235_; -#line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp232_ = table; -#line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp233_ = _tmp232_->predicate_variable; -#line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp234_ = object; -#line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp235_ = g_strdup (_tmp234_); + TrackerSparqlVariable* _tmp194_; + TrackerSparqlVariableBinding* _tmp195_; + TrackerSparqlVariableBinding* _tmp196_; + TrackerSparqlVariable* _tmp197_; + TrackerSparqlVariableBinding* _tmp198_; + TrackerSparqlVariableBinding* _tmp199_; #line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (_tmp233_->object); + _tmp138_ = tracker_sparql_variable_binding_new (); #line 1389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp233_->object = _tmp235_; -#line 13493 "tracker-sparql-pattern.c" - } + binding = _tmp138_; +#line 1390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp139_ = binding; +#line 1390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp139_)->data_type = TRACKER_PROPERTY_TYPE_RESOURCE; #line 1391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp236_ = self->current_graph; + _tmp140_ = binding; #line 1391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp236_ != NULL) { -#line 13499 "tracker-sparql-pattern.c" - TrackerSparqlDataTable* _tmp237_; - TrackerSparqlPredicateVariable* _tmp238_; -#line 1392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp237_ = table; -#line 1392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp238_ = _tmp237_->predicate_variable; -#line 1392 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp238_->return_graph = TRUE; -#line 13508 "tracker-sparql-pattern.c" - } -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp239_ = table; -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp240_ = self->priv->current_predicate; -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp241_ = self->priv->counter; -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - self->priv->counter = _tmp241_ + 1; -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp242_ = self->priv->counter; -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp243_ = g_strdup_printf ("%i", _tmp242_); -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp244_ = _tmp243_; -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp245_ = g_strconcat (_tmp240_, _tmp244_, NULL); -#line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (_tmp239_->sql_query_tablename); + _tmp141_ = tracker_sparql_pattern_get_context (self); +#line 1391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp142_ = _tmp141_; +#line 1391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp143_ = self->priv->current_subject; +#line 1391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp144_ = tracker_sparql_context_get_variable (_tmp142_, _tmp143_); +#line 1391 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp140_->variable = _tmp144_; +#line 1393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp145_ = self->priv->triple_context; +#line 1393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp146_ = _tmp145_->var_bindings; +#line 1393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp147_ = binding; +#line 1393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp148_ = _tmp147_->variable; +#line 1393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp149_ = g_hash_table_lookup (_tmp146_, _tmp148_); +#line 1393 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_assert (((TrackerSparqlVariableBindingList*) _tmp149_) == NULL); #line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp239_->sql_query_tablename = _tmp245_; + _tmp150_ = tracker_sparql_variable_binding_list_new (); #line 1394 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (_tmp244_); + binding_list = _tmp150_; #line 1395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp246_ = self->priv->triple_context; + _tmp151_ = self->priv->triple_context; #line 1395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp247_ = table; + _tmp152_ = binding; #line 1395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp248_ = _g_object_ref0 (_tmp247_); + _tmp153_ = _tmp152_->variable; +#line 1395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp154_ = _g_object_ref0 (_tmp153_); #line 1395 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp246_->tables = g_list_append (_tmp246_->tables, _tmp248_); -#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp249_ = tracker_sparql_variable_binding_new (); -#line 1398 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - binding = _tmp249_; + _tmp151_->variables = g_list_append (_tmp151_->variables, _tmp154_); +#line 1396 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp155_ = self->priv->triple_context; +#line 1396 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp156_ = _tmp155_->var_bindings; +#line 1396 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp157_ = binding; +#line 1396 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp158_ = _tmp157_->variable; +#line 1396 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp159_ = _g_object_ref0 (_tmp158_); +#line 1396 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp160_ = binding_list; +#line 1396 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp161_ = _g_object_ref0 (_tmp160_); +#line 1396 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_hash_table_insert (_tmp156_, _tmp159_, _tmp161_); +#line 1399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp162_ = self->priv->triple_context; #line 1399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp250_ = binding; + _tmp163_ = _tmp162_->var_bindings; #line 1399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp250_)->data_type = TRACKER_PROPERTY_TYPE_RESOURCE; -#line 1400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp251_ = binding; -#line 1400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp252_ = tracker_sparql_pattern_get_context (self); -#line 1400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp253_ = _tmp252_; -#line 1400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp254_ = self->priv->current_predicate; -#line 1400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp255_ = tracker_sparql_context_get_variable (_tmp253_, _tmp254_); -#line 1400 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp251_->variable = _tmp255_; + _tmp164_ = tracker_sparql_pattern_get_context (self); +#line 1399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp165_ = _tmp164_; +#line 1399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp166_ = object; +#line 1399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp167_ = tracker_sparql_context_get_variable (_tmp165_, _tmp166_); +#line 1399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp168_ = g_hash_table_lookup (_tmp163_, _tmp167_); +#line 1399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp169_ = ((TrackerSparqlVariableBindingList*) _tmp168_)->list; +#line 1399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp170_ = _tmp169_->data; +#line 1399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp171_ = _g_object_ref0 ((TrackerSparqlVariableBinding*) _tmp170_); +#line 1399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + object_binding = _tmp171_; #line 1401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp256_ = binding; + _tmp172_ = sql; #line 1401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp257_ = table; + _tmp173_ = db_table; #line 1401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp258_ = _g_object_ref0 (_tmp257_); + _tmp174_ = prop; #line 1401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (((TrackerSparqlDataBinding*) _tmp256_)->table); + _tmp175_ = tracker_property_get_name (_tmp174_); #line 1401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp256_)->table = _tmp258_; -#line 1402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp259_ = binding; -#line 1402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp260_ = g_strdup ("predicate"); -#line 1402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (((TrackerSparqlDataBinding*) _tmp259_)->sql_db_column_name); -#line 1402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp259_)->sql_db_column_name = _tmp260_; -#line 1404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp261_ = sql; -#line 1404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp262_ = binding; -#line 1404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - tracker_sparql_pattern_add_variable_binding (self, _tmp261_, _tmp262_, TRACKER_SPARQL_VARIABLE_STATE_BOUND); -#line 1271 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (binding); -#line 13586 "tracker-sparql-pattern.c" - } + _tmp176_ = _tmp175_; +#line 1401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp177_ = object_binding; +#line 1401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp178_ = tracker_sparql_data_binding_get_sql_expression ((TrackerSparqlDataBinding*) _tmp177_); +#line 1401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp179_ = _tmp178_; +#line 1401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp180_ = binding; +#line 1401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp181_ = _tmp180_->variable; +#line 1401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp182_ = tracker_sparql_variable_get_sql_expression (_tmp181_); +#line 1401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp183_ = _tmp182_; +#line 1401 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append_printf (_tmp172_, "(SELECT ID FROM \"%s\" WHERE \"%s\" = %s) AS %s, ", _tmp173_, _tmp176_, _tmp179_, _tmp183_); +#line 1407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp184_ = tracker_sparql_pattern_get_context (self); +#line 1407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp185_ = _tmp184_; +#line 1407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp186_ = _tmp185_->var_set; #line 1407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp263_ = newtable; + _tmp187_ = binding; #line 1407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp263_) { -#line 13592 "tracker-sparql-pattern.c" - gboolean _tmp264_; + _tmp188_ = _tmp187_->variable; +#line 1407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp189_ = _g_object_ref0 (_tmp188_); +#line 1407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_hash_table_insert (_tmp186_, _tmp189_, GINT_TO_POINTER ((gint) TRACKER_SPARQL_VARIABLE_STATE_OPTIONAL)); #line 1408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp264_ = self->priv->current_subject_is_var; + _tmp190_ = binding_list; #line 1408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp264_) { -#line 13598 "tracker-sparql-pattern.c" - TrackerSparqlVariableBinding* _tmp265_; - TrackerSparqlVariableBinding* binding; - TrackerSparqlVariableBinding* _tmp266_; - TrackerSparqlVariableBinding* _tmp267_; - TrackerSparqlContext* _tmp268_; - TrackerSparqlContext* _tmp269_; - const gchar* _tmp270_; - TrackerSparqlVariable* _tmp271_ = NULL; - TrackerSparqlVariableBinding* _tmp272_; - TrackerSparqlDataTable* _tmp273_; - TrackerSparqlDataTable* _tmp274_; - TrackerSparqlVariableBinding* _tmp275_; - TrackerClass* _tmp276_; - TrackerClass* _tmp277_; - gboolean _tmp278_; - GString* _tmp283_; - TrackerSparqlVariableBinding* _tmp284_; -#line 1409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp265_ = tracker_sparql_variable_binding_new (); -#line 1409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - binding = _tmp265_; + _tmp191_ = binding; +#line 1408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp192_ = _g_object_ref0 (_tmp191_); +#line 1408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp190_->list = g_list_append (_tmp190_->list, _tmp192_); +#line 1410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp193_ = binding; +#line 1410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp194_ = _tmp193_->variable; #line 1410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp266_ = binding; + _tmp195_ = _tmp194_->binding; #line 1410 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp266_)->data_type = TRACKER_PROPERTY_TYPE_RESOURCE; + g_assert (_tmp195_ == NULL); #line 1411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp267_ = binding; + _tmp196_ = binding; #line 1411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp268_ = tracker_sparql_pattern_get_context (self); + _tmp197_ = _tmp196_->variable; #line 1411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp269_ = _tmp268_; + _tmp198_ = binding; #line 1411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp270_ = self->priv->current_subject; + _tmp199_ = _g_object_ref0 (_tmp198_); #line 1411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp271_ = tracker_sparql_context_get_variable (_tmp269_, _tmp270_); + _g_object_unref0 (_tmp197_->binding); #line 1411 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp267_->variable = _tmp271_; -#line 1412 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp272_ = binding; -#line 1412 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp273_ = table; -#line 1412 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp274_ = _g_object_ref0 (_tmp273_); -#line 1412 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (((TrackerSparqlDataBinding*) _tmp272_)->table); -#line 1412 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp272_)->table = _tmp274_; + _tmp197_->binding = _tmp199_; #line 1413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp275_ = binding; + _g_object_unref0 (object_binding); #line 1413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp276_ = subject_type; + _g_object_unref0 (binding_list); #line 1413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp277_ = _g_object_ref0 (_tmp276_); + _g_object_unref0 (binding); #line 1413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (_tmp275_->type); + _g_object_unref0 (subject_type); #line 1413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp275_->type = _tmp277_; -#line 1414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp278_ = is_fts_match; -#line 1414 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp278_) { -#line 13660 "tracker-sparql-pattern.c" - TrackerSparqlVariableBinding* _tmp279_; - gchar* _tmp280_; -#line 1415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp279_ = binding; -#line 1415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp280_ = g_strdup ("rowid"); -#line 1415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (((TrackerSparqlDataBinding*) _tmp279_)->sql_db_column_name); -#line 1415 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp279_)->sql_db_column_name = _tmp280_; -#line 13671 "tracker-sparql-pattern.c" - } else { - TrackerSparqlVariableBinding* _tmp281_; - gchar* _tmp282_; -#line 1417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp281_ = binding; -#line 1417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp282_ = g_strdup ("ID"); -#line 1417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (((TrackerSparqlDataBinding*) _tmp281_)->sql_db_column_name); -#line 1417 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp281_)->sql_db_column_name = _tmp282_; -#line 13683 "tracker-sparql-pattern.c" + _g_object_unref0 (prop); +#line 1413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (table); +#line 1413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (db_table); +#line 1413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (object); +#line 1413 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + return; +#line 13570 "tracker-sparql-pattern.c" + } } + } +#line 1416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp200_ = self->priv->current_subject; +#line 1416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp201_ = db_table; +#line 1416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp202_ = share_table; +#line 1416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp204_ = tracker_sparql_pattern_get_table (self, _tmp200_, _tmp201_, _tmp202_, &_tmp203_); +#line 1416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + newtable = _tmp203_; +#line 1416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (table); +#line 1416 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + table = _tmp204_; +#line 13588 "tracker-sparql-pattern.c" + } else { + TrackerSparqlDataTable* _tmp205_; + TrackerSparqlDataTable* _tmp206_; + TrackerSparqlContext* _tmp207_; + TrackerSparqlContext* _tmp208_; + GHashTable* _tmp209_; + TrackerSparqlContext* _tmp210_; + TrackerSparqlContext* _tmp211_; + const gchar* _tmp212_; + TrackerSparqlVariable* _tmp213_ = NULL; + gconstpointer _tmp214_ = NULL; + TrackerSparqlPredicateVariable* _tmp215_; + TrackerSparqlDataTable* _tmp216_; + TrackerSparqlPredicateVariable* _tmp217_; + gboolean _tmp231_; + gboolean _tmp236_; + const gchar* _tmp241_; + TrackerSparqlDataTable* _tmp244_; + const gchar* _tmp245_; + gint _tmp246_; + gint _tmp247_; + gchar* _tmp248_ = NULL; + gchar* _tmp249_; + gchar* _tmp250_; + TrackerSparqlPatternTripleContext* _tmp251_; + TrackerSparqlDataTable* _tmp252_; + TrackerSparqlDataTable* _tmp253_; + TrackerSparqlVariableBinding* _tmp254_; + TrackerSparqlVariableBinding* binding; + TrackerSparqlVariableBinding* _tmp255_; + TrackerSparqlVariableBinding* _tmp256_; + TrackerSparqlContext* _tmp257_; + TrackerSparqlContext* _tmp258_; + const gchar* _tmp259_; + TrackerSparqlVariable* _tmp260_ = NULL; + TrackerSparqlVariableBinding* _tmp261_; + TrackerSparqlDataTable* _tmp262_; + TrackerSparqlDataTable* _tmp263_; + TrackerSparqlVariableBinding* _tmp264_; + gchar* _tmp265_; + GString* _tmp266_; + TrackerSparqlVariableBinding* _tmp267_; +#line 1419 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + newtable = TRUE; #line 1420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp283_ = sql; + _tmp205_ = tracker_sparql_data_table_new (); #line 1420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp284_ = binding; + _g_object_unref0 (table); #line 1420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - tracker_sparql_pattern_add_variable_binding (self, _tmp283_, _tmp284_, TRACKER_SPARQL_VARIABLE_STATE_BOUND); -#line 1408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (binding); -#line 13693 "tracker-sparql-pattern.c" - } else { - TrackerSparqlLiteralBinding* _tmp285_; - TrackerSparqlLiteralBinding* binding; - TrackerSparqlLiteralBinding* _tmp286_; - TrackerSparqlLiteralBinding* _tmp287_; - const gchar* _tmp288_; - gchar* _tmp289_; - TrackerSparqlLiteralBinding* _tmp290_; - TrackerSparqlDataTable* _tmp291_; - TrackerSparqlDataTable* _tmp292_; - TrackerSparqlLiteralBinding* _tmp293_; - gchar* _tmp294_; - TrackerSparqlPatternTripleContext* _tmp295_; - TrackerSparqlLiteralBinding* _tmp296_; - TrackerSparqlLiteralBinding* _tmp297_; + table = _tmp205_; +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp206_ = table; +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp207_ = tracker_sparql_pattern_get_context (self); +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp208_ = _tmp207_; +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp209_ = _tmp208_->predicate_variable_map; +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp210_ = tracker_sparql_pattern_get_context (self); +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp211_ = _tmp210_; +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp212_ = self->priv->current_predicate; +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp213_ = tracker_sparql_context_get_variable (_tmp211_, _tmp212_); +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp214_ = g_hash_table_lookup (_tmp209_, _tmp213_); +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp215_ = _g_object_ref0 ((TrackerSparqlPredicateVariable*) _tmp214_); +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (_tmp206_->predicate_variable); +#line 1421 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp206_->predicate_variable = _tmp215_; +#line 1422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp216_ = table; #line 1422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp285_ = tracker_sparql_literal_binding_new (); + _tmp217_ = _tmp216_->predicate_variable; #line 1422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - binding = _tmp285_; + if (_tmp217_ == NULL) { +#line 13669 "tracker-sparql-pattern.c" + TrackerSparqlDataTable* _tmp218_; + TrackerSparqlPredicateVariable* _tmp219_; + TrackerSparqlContext* _tmp220_; + TrackerSparqlContext* _tmp221_; + GHashTable* _tmp222_; + TrackerSparqlContext* _tmp223_; + TrackerSparqlContext* _tmp224_; + const gchar* _tmp225_; + TrackerSparqlVariable* _tmp226_ = NULL; + TrackerSparqlVariable* _tmp227_; + TrackerSparqlDataTable* _tmp228_; + TrackerSparqlPredicateVariable* _tmp229_; + TrackerSparqlPredicateVariable* _tmp230_; #line 1423 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp286_ = binding; + _tmp218_ = table; #line 1423 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp286_)->data_type = TRACKER_PROPERTY_TYPE_RESOURCE; + _tmp219_ = tracker_sparql_predicate_variable_new (); +#line 1423 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (_tmp218_->predicate_variable); +#line 1423 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp218_->predicate_variable = _tmp219_; #line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp287_ = binding; + _tmp220_ = tracker_sparql_pattern_get_context (self); #line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp288_ = self->priv->current_subject; + _tmp221_ = _tmp220_; #line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp289_ = g_strdup (_tmp288_); + _tmp222_ = _tmp221_->predicate_variable_map; #line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (_tmp287_->literal); + _tmp223_ = tracker_sparql_pattern_get_context (self); #line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp287_->literal = _tmp289_; -#line 1426 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp290_ = binding; -#line 1426 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp291_ = table; -#line 1426 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp292_ = _g_object_ref0 (_tmp291_); + _tmp224_ = _tmp223_; +#line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp225_ = self->priv->current_predicate; +#line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp226_ = tracker_sparql_context_get_variable (_tmp224_, _tmp225_); +#line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp227_ = _g_object_ref0 (_tmp226_); +#line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp228_ = table; +#line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp229_ = _tmp228_->predicate_variable; +#line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp230_ = _g_object_ref0 (_tmp229_); +#line 1424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_hash_table_insert (_tmp222_, _tmp227_, _tmp230_); +#line 13715 "tracker-sparql-pattern.c" + } #line 1426 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (((TrackerSparqlDataBinding*) _tmp290_)->table); + _tmp231_ = self->priv->current_subject_is_var; #line 1426 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp290_)->table = _tmp292_; -#line 1427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp293_ = binding; -#line 1427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp294_ = g_strdup ("ID"); -#line 1427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (((TrackerSparqlDataBinding*) _tmp293_)->sql_db_column_name); -#line 1427 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp293_)->sql_db_column_name = _tmp294_; + if (!_tmp231_) { +#line 13721 "tracker-sparql-pattern.c" + TrackerSparqlDataTable* _tmp232_; + TrackerSparqlPredicateVariable* _tmp233_; + const gchar* _tmp234_; + gchar* _tmp235_; #line 1428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp295_ = self->priv->triple_context; + _tmp232_ = table; #line 1428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp296_ = binding; + _tmp233_ = _tmp232_->predicate_variable; #line 1428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp297_ = _g_object_ref0 (_tmp296_); + _tmp234_ = self->priv->current_subject; #line 1428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp295_->bindings = g_list_append (_tmp295_->bindings, _tmp297_); -#line 1408 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (binding); -#line 13755 "tracker-sparql-pattern.c" + _tmp235_ = g_strdup (_tmp234_); +#line 1428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (_tmp233_->subject); +#line 1428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp233_->subject = _tmp235_; +#line 13738 "tracker-sparql-pattern.c" } - } +#line 1430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp236_ = object_is_var; +#line 1430 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (!_tmp236_) { +#line 13744 "tracker-sparql-pattern.c" + TrackerSparqlDataTable* _tmp237_; + TrackerSparqlPredicateVariable* _tmp238_; + const gchar* _tmp239_; + gchar* _tmp240_; #line 1432 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp298_ = rdftype; + _tmp237_ = table; #line 1432 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (!_tmp298_) { -#line 13762 "tracker-sparql-pattern.c" - gboolean _tmp299_; - const gchar* _tmp394_; -#line 1433 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp299_ = object_is_var; -#line 1433 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp299_) { -#line 13769 "tracker-sparql-pattern.c" - TrackerSparqlVariableBinding* _tmp300_; - TrackerSparqlVariableBinding* binding; - TrackerSparqlVariableBinding* _tmp301_; - TrackerSparqlContext* _tmp302_; - TrackerSparqlContext* _tmp303_; - const gchar* _tmp304_; - TrackerSparqlVariable* _tmp305_ = NULL; - TrackerSparqlVariableBinding* _tmp306_; - TrackerSparqlDataTable* _tmp307_; - TrackerSparqlDataTable* _tmp308_; - TrackerProperty* _tmp309_; - TrackerSparqlVariableState state = 0; - gboolean _tmp334_; - GString* _tmp335_; - TrackerSparqlVariableBinding* _tmp336_; - TrackerSparqlVariableState _tmp337_; + _tmp238_ = _tmp237_->predicate_variable; +#line 1432 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp239_ = object; +#line 1432 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp240_ = g_strdup (_tmp239_); +#line 1432 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (_tmp238_->object); +#line 1432 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp238_->object = _tmp240_; +#line 13761 "tracker-sparql-pattern.c" + } #line 1434 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp300_ = tracker_sparql_variable_binding_new (); + _tmp241_ = self->current_graph; #line 1434 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - binding = _tmp300_; -#line 1435 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp301_ = binding; + if (_tmp241_ != NULL) { +#line 13767 "tracker-sparql-pattern.c" + TrackerSparqlDataTable* _tmp242_; + TrackerSparqlPredicateVariable* _tmp243_; #line 1435 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp302_ = tracker_sparql_pattern_get_context (self); + _tmp242_ = table; #line 1435 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp303_ = _tmp302_; + _tmp243_ = _tmp242_->predicate_variable; #line 1435 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp304_ = object; -#line 1435 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp305_ = tracker_sparql_context_get_variable (_tmp303_, _tmp304_); -#line 1435 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp301_->variable = _tmp305_; -#line 1436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp306_ = binding; -#line 1436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp307_ = table; -#line 1436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp308_ = _g_object_ref0 (_tmp307_); -#line 1436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (((TrackerSparqlDataBinding*) _tmp306_)->table); -#line 1436 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp306_)->table = _tmp308_; + _tmp243_->return_graph = TRUE; +#line 13776 "tracker-sparql-pattern.c" + } #line 1437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp309_ = prop; + _tmp244_ = table; #line 1437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp309_ != NULL) { -#line 13816 "tracker-sparql-pattern.c" - TrackerSparqlVariableBinding* _tmp310_; - TrackerProperty* _tmp311_; - TrackerClass* _tmp312_; - TrackerClass* _tmp313_; - TrackerClass* _tmp314_; - TrackerSparqlVariableBinding* _tmp315_; - TrackerProperty* _tmp316_; - TrackerPropertyType _tmp317_; - TrackerPropertyType _tmp318_; - TrackerSparqlVariableBinding* _tmp319_; - TrackerProperty* _tmp320_; - const gchar* _tmp321_; - const gchar* _tmp322_; - gchar* _tmp323_; - TrackerProperty* _tmp324_; - gboolean _tmp325_; - gboolean _tmp326_; -#line 1439 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp310_ = binding; -#line 1439 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp311_ = prop; -#line 1439 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp312_ = tracker_property_get_range (_tmp311_); -#line 1439 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp313_ = _tmp312_; -#line 1439 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp314_ = _g_object_ref0 (_tmp313_); -#line 1439 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (_tmp310_->type); -#line 1439 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp310_->type = _tmp314_; -#line 1441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp315_ = binding; -#line 1441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp316_ = prop; -#line 1441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp317_ = tracker_property_get_data_type (_tmp316_); + _tmp245_ = self->priv->current_predicate; +#line 1437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp246_ = self->priv->counter; +#line 1437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + self->priv->counter = _tmp246_ + 1; +#line 1437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp247_ = self->priv->counter; +#line 1437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp248_ = g_strdup_printf ("%i", _tmp247_); +#line 1437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp249_ = _tmp248_; +#line 1437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp250_ = g_strconcat (_tmp245_, _tmp249_, NULL); +#line 1437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (_tmp244_->sql_query_tablename); +#line 1437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp244_->sql_query_tablename = _tmp250_; +#line 1437 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (_tmp249_); +#line 1438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp251_ = self->priv->triple_context; +#line 1438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp252_ = table; +#line 1438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp253_ = _g_object_ref0 (_tmp252_); +#line 1438 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp251_->tables = g_list_append (_tmp251_->tables, _tmp253_); #line 1441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp318_ = _tmp317_; + _tmp254_ = tracker_sparql_variable_binding_new (); #line 1441 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp315_)->data_type = _tmp318_; -#line 1442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp319_ = binding; + binding = _tmp254_; #line 1442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp320_ = prop; + _tmp255_ = binding; #line 1442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp321_ = tracker_property_get_name (_tmp320_); -#line 1442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp322_ = _tmp321_; -#line 1442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp323_ = g_strdup (_tmp322_); -#line 1442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (((TrackerSparqlDataBinding*) _tmp319_)->sql_db_column_name); -#line 1442 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp319_)->sql_db_column_name = _tmp323_; + ((TrackerSparqlDataBinding*) _tmp255_)->data_type = TRACKER_PROPERTY_TYPE_RESOURCE; #line 1443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp324_ = prop; + _tmp256_ = binding; #line 1443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp325_ = tracker_property_get_multiple_values (_tmp324_); + _tmp257_ = tracker_sparql_pattern_get_context (self); #line 1443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp326_ = _tmp325_; + _tmp258_ = _tmp257_; #line 1443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (!_tmp326_) { -#line 13880 "tracker-sparql-pattern.c" - TrackerSparqlVariableBinding* _tmp327_; - TrackerSparqlVariableBinding* _tmp328_; - gboolean _tmp329_; -#line 1446 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp327_ = binding; -#line 1446 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp327_->maybe_null = TRUE; + _tmp259_ = self->priv->current_predicate; +#line 1443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp260_ = tracker_sparql_context_get_variable (_tmp258_, _tmp259_); +#line 1443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp256_->variable = _tmp260_; +#line 1444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp261_ = binding; +#line 1444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp262_ = table; +#line 1444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp263_ = _g_object_ref0 (_tmp262_); +#line 1444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (((TrackerSparqlDataBinding*) _tmp261_)->table); +#line 1444 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp261_)->table = _tmp263_; +#line 1445 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp264_ = binding; +#line 1445 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp265_ = g_strdup ("predicate"); +#line 1445 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (((TrackerSparqlDataBinding*) _tmp264_)->sql_db_column_name); +#line 1445 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp264_)->sql_db_column_name = _tmp265_; #line 1447 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp328_ = binding; + _tmp266_ = sql; #line 1447 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp329_ = in_simple_optional; + _tmp267_ = binding; #line 1447 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp328_->in_simple_optional = _tmp329_; -#line 13894 "tracker-sparql-pattern.c" - } - } else { - TrackerSparqlVariableBinding* _tmp330_; - TrackerSparqlVariableBinding* _tmp331_; - gchar* _tmp332_; - TrackerSparqlVariableBinding* _tmp333_; + tracker_sparql_pattern_add_variable_binding (self, _tmp266_, _tmp267_, TRACKER_SPARQL_VARIABLE_STATE_BOUND); +#line 1313 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (binding); +#line 13854 "tracker-sparql-pattern.c" + } +#line 1450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp268_ = newtable; +#line 1450 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp268_) { +#line 13860 "tracker-sparql-pattern.c" + gboolean _tmp269_; #line 1451 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp330_ = binding; + _tmp269_ = self->priv->current_subject_is_var; #line 1451 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp330_)->data_type = TRACKER_PROPERTY_TYPE_STRING; -#line 1452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp331_ = binding; -#line 1452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp332_ = g_strdup ("object"); + if (_tmp269_) { +#line 13866 "tracker-sparql-pattern.c" + TrackerSparqlVariableBinding* _tmp270_; + TrackerSparqlVariableBinding* binding; + TrackerSparqlVariableBinding* _tmp271_; + TrackerSparqlVariableBinding* _tmp272_; + TrackerSparqlContext* _tmp273_; + TrackerSparqlContext* _tmp274_; + const gchar* _tmp275_; + TrackerSparqlVariable* _tmp276_ = NULL; + TrackerSparqlVariableBinding* _tmp277_; + TrackerSparqlDataTable* _tmp278_; + TrackerSparqlDataTable* _tmp279_; + TrackerSparqlVariableBinding* _tmp280_; + TrackerClass* _tmp281_; + TrackerClass* _tmp282_; + gboolean _tmp283_; + GString* _tmp288_; + TrackerSparqlVariableBinding* _tmp289_; #line 1452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (((TrackerSparqlDataBinding*) _tmp331_)->sql_db_column_name); + _tmp270_ = tracker_sparql_variable_binding_new (); #line 1452 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp331_)->sql_db_column_name = _tmp332_; + binding = _tmp270_; #line 1453 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp333_ = binding; + _tmp271_ = binding; #line 1453 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp333_->maybe_null = TRUE; -#line 13917 "tracker-sparql-pattern.c" - } + ((TrackerSparqlDataBinding*) _tmp271_)->data_type = TRACKER_PROPERTY_TYPE_RESOURCE; +#line 1454 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp272_ = binding; +#line 1454 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp273_ = tracker_sparql_pattern_get_context (self); +#line 1454 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp274_ = _tmp273_; +#line 1454 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp275_ = self->priv->current_subject; +#line 1454 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp276_ = tracker_sparql_context_get_variable (_tmp274_, _tmp275_); +#line 1454 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp272_->variable = _tmp276_; +#line 1455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp277_ = binding; +#line 1455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp278_ = table; +#line 1455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp279_ = _g_object_ref0 (_tmp278_); +#line 1455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (((TrackerSparqlDataBinding*) _tmp277_)->table); +#line 1455 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp277_)->table = _tmp279_; +#line 1456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp280_ = binding; +#line 1456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp281_ = subject_type; +#line 1456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp282_ = _g_object_ref0 (_tmp281_); +#line 1456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (_tmp280_->type); +#line 1456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp280_->type = _tmp282_; #line 1457 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp334_ = in_simple_optional; + _tmp283_ = is_fts_match; #line 1457 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp334_) { + if (_tmp283_) { +#line 13928 "tracker-sparql-pattern.c" + TrackerSparqlVariableBinding* _tmp284_; + gchar* _tmp285_; #line 1458 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - state = TRACKER_SPARQL_VARIABLE_STATE_OPTIONAL; -#line 13925 "tracker-sparql-pattern.c" + _tmp284_ = binding; +#line 1458 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp285_ = g_strdup ("docid"); +#line 1458 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (((TrackerSparqlDataBinding*) _tmp284_)->sql_db_column_name); +#line 1458 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp284_)->sql_db_column_name = _tmp285_; +#line 13939 "tracker-sparql-pattern.c" } else { + TrackerSparqlVariableBinding* _tmp286_; + gchar* _tmp287_; #line 1460 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - state = TRACKER_SPARQL_VARIABLE_STATE_BOUND; -#line 13929 "tracker-sparql-pattern.c" + _tmp286_ = binding; +#line 1460 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp287_ = g_strdup ("ID"); +#line 1460 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (((TrackerSparqlDataBinding*) _tmp286_)->sql_db_column_name); +#line 1460 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp286_)->sql_db_column_name = _tmp287_; +#line 13951 "tracker-sparql-pattern.c" } #line 1463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp335_ = sql; -#line 1463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp336_ = binding; + _tmp288_ = sql; #line 1463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp337_ = state; + _tmp289_ = binding; #line 1463 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - tracker_sparql_pattern_add_variable_binding (self, _tmp335_, _tmp336_, _tmp337_); -#line 1433 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + tracker_sparql_pattern_add_variable_binding (self, _tmp288_, _tmp289_, TRACKER_SPARQL_VARIABLE_STATE_BOUND); +#line 1451 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (binding); -#line 13941 "tracker-sparql-pattern.c" +#line 13961 "tracker-sparql-pattern.c" } else { - gboolean _tmp338_; -#line 1464 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp338_ = is_fts_match; -#line 1464 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp338_) { -#line 13948 "tracker-sparql-pattern.c" - TrackerSparqlLiteralBinding* _tmp339_; - TrackerSparqlLiteralBinding* binding; - TrackerSparqlLiteralBinding* _tmp340_; - TrackerSparqlLiteralBinding* _tmp341_; - const gchar* _tmp342_; - gchar* _tmp343_; - TrackerSparqlLiteralBinding* _tmp344_; - TrackerSparqlDataTable* _tmp345_; - TrackerSparqlDataTable* _tmp346_; - TrackerSparqlLiteralBinding* _tmp347_; - gchar* _tmp348_; - TrackerSparqlPatternTripleContext* _tmp349_; - TrackerSparqlLiteralBinding* _tmp350_; - TrackerSparqlLiteralBinding* _tmp351_; - GString* _tmp352_; - TrackerSparqlLiteralBinding* _tmp353_; - TrackerSparqlDataTable* _tmp354_; - const gchar* _tmp355_; - TrackerSparqlContext* _tmp356_; - TrackerSparqlContext* _tmp357_; - const gchar* _tmp358_; - TrackerSparqlVariable* _tmp359_ = NULL; - const gchar* _tmp360_; - const gchar* _tmp361_; - GString* _tmp362_; - TrackerSparqlLiteralBinding* _tmp363_; - TrackerSparqlDataTable* _tmp364_; - const gchar* _tmp365_; - TrackerSparqlContext* _tmp366_; - TrackerSparqlContext* _tmp367_; - const gchar* _tmp368_; - TrackerSparqlVariable* _tmp369_ = NULL; - const gchar* _tmp370_; - const gchar* _tmp371_; + TrackerSparqlLiteralBinding* _tmp290_; + TrackerSparqlLiteralBinding* binding; + TrackerSparqlLiteralBinding* _tmp291_; + TrackerSparqlLiteralBinding* _tmp292_; + const gchar* _tmp293_; + gchar* _tmp294_; + TrackerSparqlLiteralBinding* _tmp295_; + TrackerSparqlDataTable* _tmp296_; + TrackerSparqlDataTable* _tmp297_; + TrackerSparqlLiteralBinding* _tmp298_; + gchar* _tmp299_; + TrackerSparqlPatternTripleContext* _tmp300_; + TrackerSparqlLiteralBinding* _tmp301_; + TrackerSparqlLiteralBinding* _tmp302_; #line 1465 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp339_ = tracker_sparql_literal_binding_new (); + _tmp290_ = tracker_sparql_literal_binding_new (); #line 1465 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - binding = _tmp339_; + binding = _tmp290_; #line 1466 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp340_ = binding; + _tmp291_ = binding; #line 1466 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp340_->is_fts_match = TRUE; + ((TrackerSparqlDataBinding*) _tmp291_)->data_type = TRACKER_PROPERTY_TYPE_RESOURCE; #line 1467 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp341_ = binding; + _tmp292_ = binding; #line 1467 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp342_ = object; + _tmp293_ = self->priv->current_subject; #line 1467 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp343_ = g_strdup (_tmp342_); + _tmp294_ = g_strdup (_tmp293_); #line 1467 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (_tmp341_->literal); + _g_free0 (_tmp292_->literal); #line 1467 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp341_->literal = _tmp343_; + _tmp292_->literal = _tmp294_; #line 1469 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp344_ = binding; + _tmp295_ = binding; #line 1469 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp345_ = table; + _tmp296_ = table; #line 1469 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp346_ = _g_object_ref0 (_tmp345_); + _tmp297_ = _g_object_ref0 (_tmp296_); #line 1469 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (((TrackerSparqlDataBinding*) _tmp344_)->table); + _g_object_unref0 (((TrackerSparqlDataBinding*) _tmp295_)->table); #line 1469 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp344_)->table = _tmp346_; + ((TrackerSparqlDataBinding*) _tmp295_)->table = _tmp297_; #line 1470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp347_ = binding; + _tmp298_ = binding; #line 1470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp348_ = g_strdup ("fts"); + _tmp299_ = g_strdup ("ID"); #line 1470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (((TrackerSparqlDataBinding*) _tmp347_)->sql_db_column_name); + _g_free0 (((TrackerSparqlDataBinding*) _tmp298_)->sql_db_column_name); #line 1470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp347_)->sql_db_column_name = _tmp348_; + ((TrackerSparqlDataBinding*) _tmp298_)->sql_db_column_name = _tmp299_; #line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp349_ = self->priv->triple_context; + _tmp300_ = self->priv->triple_context; #line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp350_ = binding; + _tmp301_ = binding; #line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp351_ = _g_object_ref0 (_tmp350_); + _tmp302_ = _g_object_ref0 (_tmp301_); #line 1471 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp349_->bindings = g_list_append (_tmp349_->bindings, _tmp351_); -#line 1473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp352_ = sql; -#line 1473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp353_ = binding; -#line 1473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp354_ = ((TrackerSparqlDataBinding*) _tmp353_)->table; -#line 1473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp355_ = _tmp354_->sql_query_tablename; -#line 1473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp356_ = tracker_sparql_pattern_get_context (self); -#line 1473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp357_ = _tmp356_; -#line 1473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp358_ = self->priv->current_subject; -#line 1473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp359_ = tracker_sparql_context_get_variable (_tmp357_, _tmp358_); -#line 1473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp360_ = tracker_sparql_variable_get_name (_tmp359_); -#line 1473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp361_ = _tmp360_; -#line 1473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append_printf (_tmp352_, "rank(\"%s\".\"fts\") AS \"%s_u_rank\", ", _tmp355_, _tmp361_); -#line 1476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp362_ = sql; -#line 1476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp363_ = binding; -#line 1476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp364_ = ((TrackerSparqlDataBinding*) _tmp363_)->table; -#line 1476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp365_ = _tmp364_->sql_query_tablename; -#line 1476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp366_ = tracker_sparql_pattern_get_context (self); -#line 1476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp367_ = _tmp366_; -#line 1476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp368_ = self->priv->current_subject; -#line 1476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp369_ = tracker_sparql_context_get_variable (_tmp367_, _tmp368_); -#line 1476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp370_ = tracker_sparql_variable_get_name (_tmp369_); + _tmp300_->bindings = g_list_append (_tmp300_->bindings, _tmp302_); +#line 1451 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (binding); +#line 14023 "tracker-sparql-pattern.c" + } + } +#line 1475 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp303_ = rdftype; +#line 1475 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (!_tmp303_) { +#line 14030 "tracker-sparql-pattern.c" + gboolean _tmp304_; + const gchar* _tmp393_; #line 1476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp371_ = _tmp370_; + _tmp304_ = object_is_var; #line 1476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append_printf (_tmp362_, "offsets(\"%s\".\"fts\") AS \"%s_u_offsets\", ", _tmp365_, _tmp371_); -#line 1464 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (binding); -#line 14073 "tracker-sparql-pattern.c" - } else { - TrackerSparqlLiteralBinding* _tmp372_; - TrackerSparqlLiteralBinding* binding; - TrackerSparqlLiteralBinding* _tmp373_; - const gchar* _tmp374_; - gchar* _tmp375_; - TrackerSparqlLiteralBinding* _tmp376_; - TrackerSparqlDataTable* _tmp377_; - TrackerSparqlDataTable* _tmp378_; - TrackerProperty* _tmp379_; - TrackerSparqlPatternTripleContext* _tmp391_; - TrackerSparqlLiteralBinding* _tmp392_; - TrackerSparqlLiteralBinding* _tmp393_; + if (_tmp304_) { +#line 14037 "tracker-sparql-pattern.c" + TrackerSparqlVariableBinding* _tmp305_; + TrackerSparqlVariableBinding* binding; + TrackerSparqlVariableBinding* _tmp306_; + TrackerSparqlContext* _tmp307_; + TrackerSparqlContext* _tmp308_; + const gchar* _tmp309_; + TrackerSparqlVariable* _tmp310_ = NULL; + TrackerSparqlVariableBinding* _tmp311_; + TrackerSparqlDataTable* _tmp312_; + TrackerSparqlDataTable* _tmp313_; + TrackerProperty* _tmp314_; + TrackerSparqlVariableState state = 0; + gboolean _tmp339_; + GString* _tmp340_; + TrackerSparqlVariableBinding* _tmp341_; + TrackerSparqlVariableState _tmp342_; +#line 1477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp305_ = tracker_sparql_variable_binding_new (); +#line 1477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + binding = _tmp305_; +#line 1478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp306_ = binding; +#line 1478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp307_ = tracker_sparql_pattern_get_context (self); +#line 1478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp308_ = _tmp307_; +#line 1478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp309_ = object; +#line 1478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp310_ = tracker_sparql_context_get_variable (_tmp308_, _tmp309_); +#line 1478 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp306_->variable = _tmp310_; +#line 1479 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp311_ = binding; +#line 1479 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp312_ = table; +#line 1479 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp313_ = _g_object_ref0 (_tmp312_); +#line 1479 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (((TrackerSparqlDataBinding*) _tmp311_)->table); +#line 1479 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp311_)->table = _tmp313_; #line 1480 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp372_ = tracker_sparql_literal_binding_new (); + _tmp314_ = prop; #line 1480 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - binding = _tmp372_; -#line 1481 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp373_ = binding; -#line 1481 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp374_ = object; -#line 1481 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp375_ = g_strdup (_tmp374_); -#line 1481 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (_tmp373_->literal); -#line 1481 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp373_->literal = _tmp375_; -#line 1483 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp376_ = binding; -#line 1483 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp377_ = table; -#line 1483 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp378_ = _g_object_ref0 (_tmp377_); -#line 1483 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (((TrackerSparqlDataBinding*) _tmp376_)->table); -#line 1483 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp376_)->table = _tmp378_; + if (_tmp314_ != NULL) { +#line 14084 "tracker-sparql-pattern.c" + TrackerSparqlVariableBinding* _tmp315_; + TrackerProperty* _tmp316_; + TrackerClass* _tmp317_; + TrackerClass* _tmp318_; + TrackerClass* _tmp319_; + TrackerSparqlVariableBinding* _tmp320_; + TrackerProperty* _tmp321_; + TrackerPropertyType _tmp322_; + TrackerPropertyType _tmp323_; + TrackerSparqlVariableBinding* _tmp324_; + TrackerProperty* _tmp325_; + const gchar* _tmp326_; + const gchar* _tmp327_; + gchar* _tmp328_; + TrackerProperty* _tmp329_; + gboolean _tmp330_; + gboolean _tmp331_; +#line 1482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp315_ = binding; +#line 1482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp316_ = prop; +#line 1482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp317_ = tracker_property_get_range (_tmp316_); +#line 1482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp318_ = _tmp317_; +#line 1482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp319_ = _g_object_ref0 (_tmp318_); +#line 1482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (_tmp315_->type); +#line 1482 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp315_->type = _tmp319_; #line 1484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp379_ = prop; + _tmp320_ = binding; #line 1484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp379_ != NULL) { -#line 14115 "tracker-sparql-pattern.c" - TrackerSparqlLiteralBinding* _tmp380_; - TrackerProperty* _tmp381_; - TrackerPropertyType _tmp382_; - TrackerPropertyType _tmp383_; - TrackerSparqlLiteralBinding* _tmp384_; - TrackerProperty* _tmp385_; - const gchar* _tmp386_; - const gchar* _tmp387_; - gchar* _tmp388_; + _tmp321_ = prop; +#line 1484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp322_ = tracker_property_get_data_type (_tmp321_); +#line 1484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp323_ = _tmp322_; +#line 1484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp320_)->data_type = _tmp323_; #line 1485 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp380_ = binding; + _tmp324_ = binding; #line 1485 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp381_ = prop; + _tmp325_ = prop; #line 1485 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp382_ = tracker_property_get_data_type (_tmp381_); + _tmp326_ = tracker_property_get_name (_tmp325_); #line 1485 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp383_ = _tmp382_; + _tmp327_ = _tmp326_; #line 1485 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp380_)->data_type = _tmp383_; -#line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp384_ = binding; -#line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp385_ = prop; -#line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp386_ = tracker_property_get_name (_tmp385_); + _tmp328_ = g_strdup (_tmp327_); +#line 1485 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (((TrackerSparqlDataBinding*) _tmp324_)->sql_db_column_name); +#line 1485 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp324_)->sql_db_column_name = _tmp328_; #line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp387_ = _tmp386_; + _tmp329_ = prop; #line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp388_ = g_strdup (_tmp387_); + _tmp330_ = tracker_property_get_multiple_values (_tmp329_); #line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (((TrackerSparqlDataBinding*) _tmp384_)->sql_db_column_name); + _tmp331_ = _tmp330_; #line 1486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp384_)->sql_db_column_name = _tmp388_; -#line 14149 "tracker-sparql-pattern.c" - } else { - TrackerSparqlLiteralBinding* _tmp389_; - gchar* _tmp390_; -#line 1489 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp389_ = binding; + if (!_tmp331_) { +#line 14148 "tracker-sparql-pattern.c" + TrackerSparqlVariableBinding* _tmp332_; + TrackerSparqlVariableBinding* _tmp333_; + gboolean _tmp334_; #line 1489 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp390_ = g_strdup ("object"); + _tmp332_ = binding; #line 1489 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (((TrackerSparqlDataBinding*) _tmp389_)->sql_db_column_name); -#line 1489 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp389_)->sql_db_column_name = _tmp390_; -#line 14161 "tracker-sparql-pattern.c" + _tmp332_->maybe_null = TRUE; +#line 1490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp333_ = binding; +#line 1490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp334_ = in_simple_optional; +#line 1490 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp333_->in_simple_optional = _tmp334_; +#line 14162 "tracker-sparql-pattern.c" } -#line 1491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp391_ = self->priv->triple_context; -#line 1491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp392_ = binding; -#line 1491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp393_ = _g_object_ref0 (_tmp392_); -#line 1491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp391_->bindings = g_list_append (_tmp391_->bindings, _tmp393_); -#line 1464 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (binding); -#line 14173 "tracker-sparql-pattern.c" - } - } + } else { + TrackerSparqlVariableBinding* _tmp335_; + TrackerSparqlVariableBinding* _tmp336_; + gchar* _tmp337_; + TrackerSparqlVariableBinding* _tmp338_; #line 1494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp394_ = self->current_graph; + _tmp335_ = binding; #line 1494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp394_ != NULL) { -#line 14180 "tracker-sparql-pattern.c" - gboolean _tmp395_; + ((TrackerSparqlDataBinding*) _tmp335_)->data_type = TRACKER_PROPERTY_TYPE_STRING; #line 1495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp395_ = self->priv->current_graph_is_var; + _tmp336_ = binding; #line 1495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp395_) { -#line 14186 "tracker-sparql-pattern.c" - TrackerSparqlVariableBinding* _tmp396_; - TrackerSparqlVariableBinding* binding; - TrackerSparqlVariableBinding* _tmp397_; - TrackerSparqlContext* _tmp398_; - TrackerSparqlContext* _tmp399_; - const gchar* _tmp400_; - TrackerSparqlVariable* _tmp401_ = NULL; - TrackerSparqlVariableBinding* _tmp402_; - TrackerSparqlDataTable* _tmp403_; - TrackerSparqlDataTable* _tmp404_; - TrackerSparqlVariableBinding* _tmp405_; - TrackerProperty* _tmp406_; - TrackerSparqlVariableBinding* _tmp414_; - TrackerSparqlVariableBinding* _tmp415_; - gboolean _tmp416_; - TrackerSparqlVariableState state = 0; - gboolean _tmp417_; - GString* _tmp418_; - TrackerSparqlVariableBinding* _tmp419_; - TrackerSparqlVariableState _tmp420_; + _tmp337_ = g_strdup ("object"); +#line 1495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (((TrackerSparqlDataBinding*) _tmp336_)->sql_db_column_name); +#line 1495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp336_)->sql_db_column_name = _tmp337_; #line 1496 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp396_ = tracker_sparql_variable_binding_new (); + _tmp338_ = binding; #line 1496 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - binding = _tmp396_; -#line 1497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp397_ = binding; -#line 1497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp398_ = tracker_sparql_pattern_get_context (self); -#line 1497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp399_ = _tmp398_; -#line 1497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp400_ = self->current_graph; -#line 1497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp401_ = tracker_sparql_context_get_variable (_tmp399_, _tmp400_); -#line 1497 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp397_->variable = _tmp401_; -#line 1498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp402_ = binding; -#line 1498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp403_ = table; -#line 1498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp404_ = _g_object_ref0 (_tmp403_); -#line 1498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (((TrackerSparqlDataBinding*) _tmp402_)->table); -#line 1498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp402_)->table = _tmp404_; -#line 1499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp405_ = binding; -#line 1499 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp405_)->data_type = TRACKER_PROPERTY_TYPE_RESOURCE; -#line 1501 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp406_ = prop; + _tmp338_->maybe_null = TRUE; +#line 14185 "tracker-sparql-pattern.c" + } +#line 1500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp339_ = in_simple_optional; +#line 1500 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp339_) { #line 1501 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp406_ != NULL) { -#line 14241 "tracker-sparql-pattern.c" - TrackerSparqlVariableBinding* _tmp407_; - TrackerProperty* _tmp408_; - const gchar* _tmp409_; - const gchar* _tmp410_; - gchar* _tmp411_; -#line 1502 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp407_ = binding; -#line 1502 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp408_ = prop; -#line 1502 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp409_ = tracker_property_get_name (_tmp408_); -#line 1502 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp410_ = _tmp409_; -#line 1502 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp411_ = g_strconcat (_tmp410_, ":graph", NULL); -#line 1502 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (((TrackerSparqlDataBinding*) _tmp407_)->sql_db_column_name); -#line 1502 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp407_)->sql_db_column_name = _tmp411_; -#line 14261 "tracker-sparql-pattern.c" - } else { - TrackerSparqlVariableBinding* _tmp412_; - gchar* _tmp413_; -#line 1505 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp412_ = binding; -#line 1505 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp413_ = g_strdup ("graph"); -#line 1505 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (((TrackerSparqlDataBinding*) _tmp412_)->sql_db_column_name); -#line 1505 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp412_)->sql_db_column_name = _tmp413_; -#line 14273 "tracker-sparql-pattern.c" - } + state = TRACKER_SPARQL_VARIABLE_STATE_OPTIONAL; +#line 14193 "tracker-sparql-pattern.c" + } else { +#line 1503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + state = TRACKER_SPARQL_VARIABLE_STATE_BOUND; +#line 14197 "tracker-sparql-pattern.c" + } +#line 1506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp340_ = sql; +#line 1506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp341_ = binding; +#line 1506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp342_ = state; +#line 1506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + tracker_sparql_pattern_add_variable_binding (self, _tmp340_, _tmp341_, _tmp342_); +#line 1476 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (binding); +#line 14209 "tracker-sparql-pattern.c" + } else { + gboolean _tmp343_; +#line 1507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp343_ = is_fts_match; +#line 1507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp343_) { +#line 14216 "tracker-sparql-pattern.c" + TrackerSparqlLiteralBinding* _tmp344_; + TrackerSparqlLiteralBinding* binding; + TrackerSparqlLiteralBinding* _tmp345_; + TrackerSparqlLiteralBinding* _tmp346_; + const gchar* _tmp347_; + gchar* _tmp348_; + TrackerSparqlLiteralBinding* _tmp349_; + TrackerSparqlDataTable* _tmp350_; + TrackerSparqlDataTable* _tmp351_; + TrackerSparqlLiteralBinding* _tmp352_; + gchar* _tmp353_; + TrackerSparqlPatternTripleContext* _tmp354_; + TrackerSparqlLiteralBinding* _tmp355_; + TrackerSparqlLiteralBinding* _tmp356_; + GString* _tmp357_; + TrackerSparqlLiteralBinding* _tmp358_; + TrackerSparqlDataTable* _tmp359_; + const gchar* _tmp360_; + GString* _tmp361_; + TrackerSparqlLiteralBinding* _tmp362_; + TrackerSparqlDataTable* _tmp363_; + const gchar* _tmp364_; + TrackerSparqlContext* _tmp365_; + TrackerSparqlContext* _tmp366_; + const gchar* _tmp367_; + TrackerSparqlVariable* _tmp368_ = NULL; + const gchar* _tmp369_; + const gchar* _tmp370_; #line 1508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp414_ = binding; + _tmp344_ = tracker_sparql_literal_binding_new (); #line 1508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp414_->maybe_null = TRUE; -#line 1509 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp415_ = binding; + binding = _tmp344_; #line 1509 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp416_ = in_simple_optional; + _tmp345_ = binding; #line 1509 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp415_->in_simple_optional = _tmp416_; + _tmp345_->is_fts_match = TRUE; +#line 1510 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp346_ = binding; +#line 1510 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp347_ = object; +#line 1510 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp348_ = g_strdup (_tmp347_); +#line 1510 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (_tmp346_->literal); +#line 1510 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp346_->literal = _tmp348_; +#line 1512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp349_ = binding; #line 1512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp417_ = in_simple_optional; + _tmp350_ = table; #line 1512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp417_) { + _tmp351_ = _g_object_ref0 (_tmp350_); +#line 1512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (((TrackerSparqlDataBinding*) _tmp349_)->table); +#line 1512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp349_)->table = _tmp351_; #line 1513 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - state = TRACKER_SPARQL_VARIABLE_STATE_OPTIONAL; -#line 14291 "tracker-sparql-pattern.c" - } else { -#line 1515 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - state = TRACKER_SPARQL_VARIABLE_STATE_BOUND; -#line 14295 "tracker-sparql-pattern.c" - } + _tmp352_ = binding; +#line 1513 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp353_ = g_strdup ("fts"); +#line 1513 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (((TrackerSparqlDataBinding*) _tmp352_)->sql_db_column_name); +#line 1513 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp352_)->sql_db_column_name = _tmp353_; +#line 1514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp354_ = self->priv->triple_context; +#line 1514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp355_ = binding; +#line 1514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp356_ = _g_object_ref0 (_tmp355_); +#line 1514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp354_->bindings = g_list_append (_tmp354_->bindings, _tmp356_); +#line 1516 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp357_ = sql; +#line 1516 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp358_ = binding; +#line 1516 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp359_ = ((TrackerSparqlDataBinding*) _tmp358_)->table; +#line 1516 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp360_ = _tmp359_->sql_query_tablename; +#line 1516 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append_printf (_tmp357_, "\"%s\".\"docid\" AS \"ID\", ", _tmp360_); #line 1518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp418_ = sql; + _tmp361_ = sql; #line 1518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp419_ = binding; + _tmp362_ = binding; #line 1518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp420_ = state; + _tmp363_ = ((TrackerSparqlDataBinding*) _tmp362_)->table; #line 1518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - tracker_sparql_pattern_add_variable_binding (self, _tmp418_, _tmp419_, _tmp420_); -#line 1495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp364_ = _tmp363_->sql_query_tablename; +#line 1518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp365_ = tracker_sparql_pattern_get_context (self); +#line 1518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp366_ = _tmp365_; +#line 1518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp367_ = self->priv->current_subject; +#line 1518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp368_ = tracker_sparql_context_get_variable (_tmp366_, _tmp367_); +#line 1518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp369_ = tracker_sparql_variable_get_name (_tmp368_); +#line 1518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp370_ = _tmp369_; +#line 1518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append_printf (_tmp361_, "tracker_rank(matchinfo(\"%s\".\"fts\", 'cl'),fts_column_weights()) " "AS \"%s_u_rank\", ", _tmp364_, _tmp370_); +#line 1507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (binding); -#line 14307 "tracker-sparql-pattern.c" +#line 14323 "tracker-sparql-pattern.c" } else { - TrackerSparqlLiteralBinding* _tmp421_; + TrackerSparqlLiteralBinding* _tmp371_; TrackerSparqlLiteralBinding* binding; - TrackerSparqlLiteralBinding* _tmp422_; - const gchar* _tmp423_; - gchar* _tmp424_; - TrackerSparqlLiteralBinding* _tmp425_; - TrackerSparqlDataTable* _tmp426_; - TrackerSparqlDataTable* _tmp427_; - TrackerSparqlLiteralBinding* _tmp428_; - TrackerProperty* _tmp429_; - TrackerSparqlPatternTripleContext* _tmp437_; - TrackerSparqlLiteralBinding* _tmp438_; - TrackerSparqlLiteralBinding* _tmp439_; -#line 1520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp421_ = tracker_sparql_literal_binding_new (); -#line 1520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - binding = _tmp421_; -#line 1521 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp422_ = binding; -#line 1521 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp423_ = self->current_graph; -#line 1521 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp424_ = g_strdup (_tmp423_); -#line 1521 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (_tmp422_->literal); -#line 1521 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp422_->literal = _tmp424_; -#line 1522 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp425_ = binding; -#line 1522 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp426_ = table; -#line 1522 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp427_ = _g_object_ref0 (_tmp426_); -#line 1522 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_object_unref0 (((TrackerSparqlDataBinding*) _tmp425_)->table); -#line 1522 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp425_)->table = _tmp427_; + TrackerSparqlLiteralBinding* _tmp372_; + const gchar* _tmp373_; + gchar* _tmp374_; + TrackerSparqlLiteralBinding* _tmp375_; + TrackerSparqlDataTable* _tmp376_; + TrackerSparqlDataTable* _tmp377_; + TrackerProperty* _tmp378_; + TrackerSparqlPatternTripleContext* _tmp390_; + TrackerSparqlLiteralBinding* _tmp391_; + TrackerSparqlLiteralBinding* _tmp392_; #line 1523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp428_ = binding; + _tmp371_ = tracker_sparql_literal_binding_new (); #line 1523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp428_)->data_type = TRACKER_PROPERTY_TYPE_RESOURCE; -#line 1525 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp429_ = prop; -#line 1525 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp429_ != NULL) { -#line 14354 "tracker-sparql-pattern.c" - TrackerSparqlLiteralBinding* _tmp430_; - TrackerProperty* _tmp431_; - const gchar* _tmp432_; - const gchar* _tmp433_; - gchar* _tmp434_; -#line 1526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp430_ = binding; + binding = _tmp371_; +#line 1524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp372_ = binding; +#line 1524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp373_ = object; +#line 1524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp374_ = g_strdup (_tmp373_); +#line 1524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (_tmp372_->literal); +#line 1524 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp372_->literal = _tmp374_; #line 1526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp431_ = prop; + _tmp375_ = binding; #line 1526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp432_ = tracker_property_get_name (_tmp431_); + _tmp376_ = table; #line 1526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp433_ = _tmp432_; + _tmp377_ = _g_object_ref0 (_tmp376_); #line 1526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp434_ = g_strconcat (_tmp433_, ":graph", NULL); + _g_object_unref0 (((TrackerSparqlDataBinding*) _tmp375_)->table); #line 1526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (((TrackerSparqlDataBinding*) _tmp430_)->sql_db_column_name); -#line 1526 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp430_)->sql_db_column_name = _tmp434_; -#line 14374 "tracker-sparql-pattern.c" - } else { - TrackerSparqlLiteralBinding* _tmp435_; - gchar* _tmp436_; + ((TrackerSparqlDataBinding*) _tmp375_)->table = _tmp377_; +#line 1527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp378_ = prop; +#line 1527 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp378_ != NULL) { +#line 14365 "tracker-sparql-pattern.c" + TrackerSparqlLiteralBinding* _tmp379_; + TrackerProperty* _tmp380_; + TrackerPropertyType _tmp381_; + TrackerPropertyType _tmp382_; + TrackerSparqlLiteralBinding* _tmp383_; + TrackerProperty* _tmp384_; + const gchar* _tmp385_; + const gchar* _tmp386_; + gchar* _tmp387_; +#line 1528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp379_ = binding; +#line 1528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp380_ = prop; +#line 1528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp381_ = tracker_property_get_data_type (_tmp380_); +#line 1528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp382_ = _tmp381_; +#line 1528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp379_)->data_type = _tmp382_; #line 1529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp435_ = binding; + _tmp383_ = binding; #line 1529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp436_ = g_strdup ("graph"); + _tmp384_ = prop; #line 1529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _g_free0 (((TrackerSparqlDataBinding*) _tmp435_)->sql_db_column_name); + _tmp385_ = tracker_property_get_name (_tmp384_); #line 1529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - ((TrackerSparqlDataBinding*) _tmp435_)->sql_db_column_name = _tmp436_; -#line 14386 "tracker-sparql-pattern.c" - } + _tmp386_ = _tmp385_; +#line 1529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp387_ = g_strdup (_tmp386_); +#line 1529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (((TrackerSparqlDataBinding*) _tmp383_)->sql_db_column_name); +#line 1529 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp383_)->sql_db_column_name = _tmp387_; +#line 14399 "tracker-sparql-pattern.c" + } else { + TrackerSparqlLiteralBinding* _tmp388_; + gchar* _tmp389_; #line 1532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp437_ = self->priv->triple_context; + _tmp388_ = binding; #line 1532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp438_ = binding; + _tmp389_ = g_strdup ("object"); #line 1532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp439_ = _g_object_ref0 (_tmp438_); + _g_free0 (((TrackerSparqlDataBinding*) _tmp388_)->sql_db_column_name); #line 1532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp437_->bindings = g_list_append (_tmp437_->bindings, _tmp439_); -#line 1495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp388_)->sql_db_column_name = _tmp389_; +#line 14411 "tracker-sparql-pattern.c" + } +#line 1534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp390_ = self->priv->triple_context; +#line 1534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp391_ = binding; +#line 1534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp392_ = _g_object_ref0 (_tmp391_); +#line 1534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp390_->bindings = g_list_append (_tmp390_->bindings, _tmp392_); +#line 1507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (binding); -#line 14398 "tracker-sparql-pattern.c" +#line 14423 "tracker-sparql-pattern.c" } } - } -#line 1537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp440_ = sql; -#line 1537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp441_ = _tmp440_->len; #line 1537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp442_ = begin_sql_len; + _tmp393_ = self->current_graph; #line 1537 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - if (_tmp441_ == ((gssize) _tmp442_)) { -#line 14410 "tracker-sparql-pattern.c" - GString* _tmp443_; + if (_tmp393_ != NULL) { +#line 14430 "tracker-sparql-pattern.c" + gboolean _tmp394_; +#line 1538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp394_ = self->priv->current_graph_is_var; +#line 1538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp394_) { +#line 14436 "tracker-sparql-pattern.c" + TrackerSparqlVariableBinding* _tmp395_; + TrackerSparqlVariableBinding* binding; + TrackerSparqlVariableBinding* _tmp396_; + TrackerSparqlContext* _tmp397_; + TrackerSparqlContext* _tmp398_; + const gchar* _tmp399_; + TrackerSparqlVariable* _tmp400_ = NULL; + TrackerSparqlVariableBinding* _tmp401_; + TrackerSparqlDataTable* _tmp402_; + TrackerSparqlDataTable* _tmp403_; + TrackerSparqlVariableBinding* _tmp404_; + TrackerProperty* _tmp405_; + TrackerSparqlVariableBinding* _tmp413_; + TrackerSparqlVariableBinding* _tmp414_; + gboolean _tmp415_; + TrackerSparqlVariableState state = 0; + gboolean _tmp416_; + GString* _tmp417_; + TrackerSparqlVariableBinding* _tmp418_; + TrackerSparqlVariableState _tmp419_; +#line 1539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp395_ = tracker_sparql_variable_binding_new (); +#line 1539 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + binding = _tmp395_; +#line 1540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp396_ = binding; #line 1540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - _tmp443_ = sql; + _tmp397_ = tracker_sparql_pattern_get_context (self); #line 1540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" - g_string_append (_tmp443_, "1, "); -#line 14416 "tracker-sparql-pattern.c" + _tmp398_ = _tmp397_; +#line 1540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp399_ = self->current_graph; +#line 1540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp400_ = tracker_sparql_context_get_variable (_tmp398_, _tmp399_); +#line 1540 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp396_->variable = _tmp400_; +#line 1541 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp401_ = binding; +#line 1541 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp402_ = table; +#line 1541 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp403_ = _g_object_ref0 (_tmp402_); +#line 1541 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (((TrackerSparqlDataBinding*) _tmp401_)->table); +#line 1541 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp401_)->table = _tmp403_; +#line 1542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp404_ = binding; +#line 1542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp404_)->data_type = TRACKER_PROPERTY_TYPE_RESOURCE; +#line 1544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp405_ = prop; +#line 1544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp405_ != NULL) { +#line 14491 "tracker-sparql-pattern.c" + TrackerSparqlVariableBinding* _tmp406_; + TrackerProperty* _tmp407_; + const gchar* _tmp408_; + const gchar* _tmp409_; + gchar* _tmp410_; +#line 1545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp406_ = binding; +#line 1545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp407_ = prop; +#line 1545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp408_ = tracker_property_get_name (_tmp407_); +#line 1545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp409_ = _tmp408_; +#line 1545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp410_ = g_strconcat (_tmp409_, ":graph", NULL); +#line 1545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (((TrackerSparqlDataBinding*) _tmp406_)->sql_db_column_name); +#line 1545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp406_)->sql_db_column_name = _tmp410_; +#line 14511 "tracker-sparql-pattern.c" + } else { + TrackerSparqlVariableBinding* _tmp411_; + gchar* _tmp412_; +#line 1548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp411_ = binding; +#line 1548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp412_ = g_strdup ("graph"); +#line 1548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (((TrackerSparqlDataBinding*) _tmp411_)->sql_db_column_name); +#line 1548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp411_)->sql_db_column_name = _tmp412_; +#line 14523 "tracker-sparql-pattern.c" + } +#line 1551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp413_ = binding; +#line 1551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp413_->maybe_null = TRUE; +#line 1552 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp414_ = binding; +#line 1552 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp415_ = in_simple_optional; +#line 1552 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp414_->in_simple_optional = _tmp415_; +#line 1555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp416_ = in_simple_optional; +#line 1555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp416_) { +#line 1556 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + state = TRACKER_SPARQL_VARIABLE_STATE_OPTIONAL; +#line 14541 "tracker-sparql-pattern.c" + } else { +#line 1558 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + state = TRACKER_SPARQL_VARIABLE_STATE_BOUND; +#line 14545 "tracker-sparql-pattern.c" + } +#line 1561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp417_ = sql; +#line 1561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp418_ = binding; +#line 1561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp419_ = state; +#line 1561 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + tracker_sparql_pattern_add_variable_binding (self, _tmp417_, _tmp418_, _tmp419_); +#line 1538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (binding); +#line 14557 "tracker-sparql-pattern.c" + } else { + TrackerSparqlLiteralBinding* _tmp420_; + TrackerSparqlLiteralBinding* binding; + TrackerSparqlLiteralBinding* _tmp421_; + const gchar* _tmp422_; + gchar* _tmp423_; + TrackerSparqlLiteralBinding* _tmp424_; + TrackerSparqlDataTable* _tmp425_; + TrackerSparqlDataTable* _tmp426_; + TrackerSparqlLiteralBinding* _tmp427_; + TrackerProperty* _tmp428_; + TrackerSparqlPatternTripleContext* _tmp436_; + TrackerSparqlLiteralBinding* _tmp437_; + TrackerSparqlLiteralBinding* _tmp438_; +#line 1563 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp420_ = tracker_sparql_literal_binding_new (); +#line 1563 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + binding = _tmp420_; +#line 1564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp421_ = binding; +#line 1564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp422_ = self->current_graph; +#line 1564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp423_ = g_strdup (_tmp422_); +#line 1564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (_tmp421_->literal); +#line 1564 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp421_->literal = _tmp423_; +#line 1565 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp424_ = binding; +#line 1565 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp425_ = table; +#line 1565 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp426_ = _g_object_ref0 (_tmp425_); +#line 1565 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (((TrackerSparqlDataBinding*) _tmp424_)->table); +#line 1565 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp424_)->table = _tmp426_; +#line 1566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp427_ = binding; +#line 1566 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp427_)->data_type = TRACKER_PROPERTY_TYPE_RESOURCE; +#line 1568 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp428_ = prop; +#line 1568 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp428_ != NULL) { +#line 14604 "tracker-sparql-pattern.c" + TrackerSparqlLiteralBinding* _tmp429_; + TrackerProperty* _tmp430_; + const gchar* _tmp431_; + const gchar* _tmp432_; + gchar* _tmp433_; +#line 1569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp429_ = binding; +#line 1569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp430_ = prop; +#line 1569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp431_ = tracker_property_get_name (_tmp430_); +#line 1569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp432_ = _tmp431_; +#line 1569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp433_ = g_strconcat (_tmp432_, ":graph", NULL); +#line 1569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (((TrackerSparqlDataBinding*) _tmp429_)->sql_db_column_name); +#line 1569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp429_)->sql_db_column_name = _tmp433_; +#line 14624 "tracker-sparql-pattern.c" + } else { + TrackerSparqlLiteralBinding* _tmp434_; + gchar* _tmp435_; +#line 1572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp434_ = binding; +#line 1572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp435_ = g_strdup ("graph"); +#line 1572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_free0 (((TrackerSparqlDataBinding*) _tmp434_)->sql_db_column_name); +#line 1572 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + ((TrackerSparqlDataBinding*) _tmp434_)->sql_db_column_name = _tmp435_; +#line 14636 "tracker-sparql-pattern.c" + } +#line 1575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp436_ = self->priv->triple_context; +#line 1575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp437_ = binding; +#line 1575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp438_ = _g_object_ref0 (_tmp437_); +#line 1575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp436_->bindings = g_list_append (_tmp436_->bindings, _tmp438_); +#line 1538 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (binding); +#line 14648 "tracker-sparql-pattern.c" + } + } } -#line 1254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp439_ = sql; +#line 1580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp440_ = _tmp439_->len; +#line 1580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp441_ = begin_sql_len; +#line 1580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + if (_tmp440_ == ((gssize) _tmp441_)) { +#line 14660 "tracker-sparql-pattern.c" + GString* _tmp442_; +#line 1583 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _tmp442_ = sql; +#line 1583 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + g_string_append (_tmp442_, "1, "); +#line 14666 "tracker-sparql-pattern.c" + } +#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (subject_type); -#line 1254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (prop); -#line 1254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (table); -#line 1254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (db_table); -#line 1254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (object); -#line 14428 "tracker-sparql-pattern.c" +#line 14678 "tracker-sparql-pattern.c" } @@ -14443,55 +14693,55 @@ TrackerSparqlDataTable* table; gboolean _tmp3_; TrackerSparqlDataTable* _tmp9_; -#line 1544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1587 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (self != NULL, NULL); -#line 1544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1587 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (subject != NULL, NULL); -#line 1544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1587 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (db_table != NULL, NULL); -#line 1545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = subject; -#line 1545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = db_table; -#line 1545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = g_strdup_printf ("%s.%s", _tmp0_, _tmp1_); -#line 1545 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tablestring = _tmp2_; -#line 1546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1589 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" table = NULL; -#line 1547 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1590 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _vala_newtable = FALSE; -#line 1548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1591 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = share_table; -#line 1548 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1591 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp3_) { -#line 14464 "tracker-sparql-pattern.c" +#line 14714 "tracker-sparql-pattern.c" TrackerSparqlPatternTripleContext* _tmp4_; GHashTable* _tmp5_; const gchar* _tmp6_; gconstpointer _tmp7_ = NULL; TrackerSparqlDataTable* _tmp8_; -#line 1549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp4_ = self->priv->triple_context; -#line 1549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_ = _tmp4_->table_map; -#line 1549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp6_ = tablestring; -#line 1549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp7_ = g_hash_table_lookup (_tmp5_, _tmp6_); -#line 1549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp8_ = _g_object_ref0 ((TrackerSparqlDataTable*) _tmp7_); -#line 1549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (table); -#line 1549 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" table = _tmp8_; -#line 14484 "tracker-sparql-pattern.c" +#line 14734 "tracker-sparql-pattern.c" } -#line 1551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1594 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp9_ = table; -#line 1551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1594 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (_tmp9_ == NULL) { -#line 14490 "tracker-sparql-pattern.c" +#line 14740 "tracker-sparql-pattern.c" TrackerSparqlDataTable* _tmp10_; TrackerSparqlDataTable* _tmp11_; const gchar* _tmp12_; @@ -14512,83 +14762,83 @@ gchar* _tmp27_; TrackerSparqlDataTable* _tmp28_; TrackerSparqlDataTable* _tmp29_; -#line 1552 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1595 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _vala_newtable = TRUE; -#line 1553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp10_ = tracker_sparql_data_table_new (); -#line 1553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_object_unref0 (table); -#line 1553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" table = _tmp10_; -#line 1554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp11_ = table; -#line 1554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp12_ = db_table; -#line 1554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp13_ = g_strdup (_tmp12_); -#line 1554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp11_->sql_db_tablename); -#line 1554 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp11_->sql_db_tablename = _tmp13_; -#line 1555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp14_ = table; -#line 1555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp15_ = db_table; -#line 1555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp16_ = self->priv->counter; -#line 1555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv->counter = _tmp16_ + 1; -#line 1555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp17_ = self->priv->counter; -#line 1555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp18_ = g_strdup_printf ("%i", _tmp17_); -#line 1555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp19_ = _tmp18_; -#line 1555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp20_ = g_strconcat (_tmp15_, _tmp19_, NULL); -#line 1555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp14_->sql_query_tablename); -#line 1555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp14_->sql_query_tablename = _tmp20_; -#line 1555 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1598 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (_tmp19_); -#line 1556 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1599 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp21_ = self->priv->triple_context; -#line 1556 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1599 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp22_ = table; -#line 1556 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1599 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp23_ = _g_object_ref0 (_tmp22_); -#line 1556 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1599 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp21_->tables = g_list_append (_tmp21_->tables, _tmp23_); -#line 1557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp24_ = self->priv->triple_context; -#line 1557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp25_ = _tmp24_->table_map; -#line 1557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp26_ = tablestring; -#line 1557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp27_ = g_strdup (_tmp26_); -#line 1557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp28_ = table; -#line 1557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp29_ = _g_object_ref0 (_tmp28_); -#line 1557 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_hash_table_insert (_tmp25_, _tmp27_, _tmp29_); -#line 14573 "tracker-sparql-pattern.c" +#line 14823 "tracker-sparql-pattern.c" } -#line 1559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = table; -#line 1559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (tablestring); -#line 1559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" if (newtable) { -#line 1559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" *newtable = _vala_newtable; -#line 14583 "tracker-sparql-pattern.c" +#line 14833 "tracker-sparql-pattern.c" } -#line 1559 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 1602 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 14587 "tracker-sparql-pattern.c" +#line 14837 "tracker-sparql-pattern.c" } @@ -14596,17 +14846,17 @@ TrackerSparqlContext* result; TrackerSparqlQuery* _tmp0_; TrackerSparqlContext* _tmp1_; -#line 179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 183 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (self != NULL, NULL); -#line 179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 183 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = self->priv->query; -#line 179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 183 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = _tmp0_->context; -#line 179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 183 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" result = _tmp1_; -#line 179 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 183 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return result; -#line 14605 "tracker-sparql-pattern.c" +#line 14855 "tracker-sparql-pattern.c" } @@ -14614,19 +14864,19 @@ TrackerSparqlQuery* _tmp0_; TrackerSparqlContext* _tmp1_; TrackerSparqlContext* _tmp2_; -#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_if_fail (self != NULL); -#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = self->priv->query; -#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = value; -#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = _tracker_sparql_context_ref0 (_tmp1_); -#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (_tmp0_->context); -#line 180 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_->context = _tmp2_; -#line 14625 "tracker-sparql-pattern.c" +#line 14875 "tracker-sparql-pattern.c" } @@ -14642,71 +14892,71 @@ GDestroyNotify _tmp7_; GDestroyNotify _tmp8_; GHashTable* _tmp9_; -#line 225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (query != NULL, NULL); -#line 225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" g_return_val_if_fail (parent_context != NULL, NULL); -#line 226 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp0_ = query; -#line 226 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp1_ = parent_context; -#line 226 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 230 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self = (TrackerSparqlPatternTripleContext*) tracker_sparql_context_construct (object_type, _tmp0_, _tmp1_); -#line 228 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (self->tables); -#line 228 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->tables = NULL; -#line 229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp2_ = g_str_hash; -#line 229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp3_ = g_str_equal; -#line 229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp4_ = g_free; -#line 229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp5_ = g_object_unref; -#line 229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp6_ = g_hash_table_new_full (_tmp2_, _tmp3_, _tmp4_, _tmp5_); -#line 229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_hash_table_unref0 (self->table_map); -#line 229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 233 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->table_map = _tmp6_; -#line 231 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (self->variables); -#line 231 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 235 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->variables = NULL; -#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 236 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp7_ = g_object_unref; -#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 236 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp8_ = g_object_unref; -#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 236 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tmp9_ = g_hash_table_new_full (_tracker_sparql_variable_hash_ghash_func, _tracker_sparql_variable_equal_gequal_func, _tmp7_, _tmp8_); -#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 236 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_hash_table_unref0 (self->var_bindings); -#line 232 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 236 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->var_bindings = _tmp9_; -#line 234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 238 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (self->bindings); -#line 234 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 238 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->bindings = NULL; -#line 225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return self; -#line 14689 "tracker-sparql-pattern.c" +#line 14939 "tracker-sparql-pattern.c" } static TrackerSparqlPatternTripleContext* tracker_sparql_pattern_triple_context_new (TrackerSparqlQuery* query, TrackerSparqlContext* parent_context) { -#line 225 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 229 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" return tracker_sparql_pattern_triple_context_construct (TRACKER_SPARQL_PATTERN_TYPE_TRIPLE_CONTEXT, query, parent_context); -#line 14696 "tracker-sparql-pattern.c" +#line 14946 "tracker-sparql-pattern.c" } static void tracker_sparql_pattern_triple_context_class_init (TrackerSparqlPatternTripleContextClass * klass) { -#line 215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" tracker_sparql_pattern_triple_context_parent_class = g_type_class_peek_parent (klass); -#line 215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" TRACKER_SPARQL_CONTEXT_CLASS (klass)->finalize = tracker_sparql_pattern_triple_context_finalize; -#line 14705 "tracker-sparql-pattern.c" +#line 14955 "tracker-sparql-pattern.c" } @@ -14716,21 +14966,21 @@ static void tracker_sparql_pattern_triple_context_finalize (TrackerSparqlContext* obj) { TrackerSparqlPatternTripleContext * self; -#line 215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self = TRACKER_SPARQL_PATTERN_TRIPLE_CONTEXT (obj); -#line 217 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 221 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (self->tables); -#line 218 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_hash_table_unref0 (self->table_map); -#line 220 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 224 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (self->bindings); -#line 222 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 226 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" __g_list_free__g_object_unref0_0 (self->variables); -#line 223 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 227 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_hash_table_unref0 (self->var_bindings); -#line 215 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 219 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" TRACKER_SPARQL_CONTEXT_CLASS (tracker_sparql_pattern_triple_context_parent_class)->finalize (obj); -#line 14729 "tracker-sparql-pattern.c" +#line 14979 "tracker-sparql-pattern.c" } @@ -14757,14 +15007,16 @@ G_OBJECT_CLASS (klass)->set_property = _vala_tracker_sparql_pattern_set_property; #line 158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" G_OBJECT_CLASS (klass)->finalize = tracker_sparql_pattern_finalize; -#line 14756 "tracker-sparql-pattern.c" +#line 15006 "tracker-sparql-pattern.c" } static void tracker_sparql_pattern_instance_init (TrackerSparqlPattern * self) { #line 158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" self->priv = TRACKER_SPARQL_PATTERN_GET_PRIVATE (self); -#line 14763 "tracker-sparql-pattern.c" +#line 175 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + self->queries_fts_data = FALSE; +#line 15015 "tracker-sparql-pattern.c" } @@ -14778,11 +15030,17 @@ _g_free0 (self->priv->current_subject); #line 170 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _g_free0 (self->priv->current_predicate); -#line 238 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" +#line 172 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_object_unref0 (self->fts_subject); +#line 173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + self->fts_variables = (_vala_array_free (self->fts_variables, self->fts_variables_length1, (GDestroyNotify) g_free), NULL); +#line 174 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" + _g_string_free0 (self->match_str); +#line 242 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" _tracker_sparql_context_unref0 (self->priv->triple_context); #line 158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" G_OBJECT_CLASS (tracker_sparql_pattern_parent_class)->finalize (obj); -#line 14781 "tracker-sparql-pattern.c" +#line 15039 "tracker-sparql-pattern.c" } @@ -14803,13 +15061,13 @@ self = TRACKER_SPARQL_PATTERN (object); #line 158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" switch (property_id) { -#line 14802 "tracker-sparql-pattern.c" +#line 15060 "tracker-sparql-pattern.c" default: #line 158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); #line 158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 14808 "tracker-sparql-pattern.c" +#line 15066 "tracker-sparql-pattern.c" } } @@ -14819,13 +15077,13 @@ self = TRACKER_SPARQL_PATTERN (object); #line 158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" switch (property_id) { -#line 14818 "tracker-sparql-pattern.c" +#line 15076 "tracker-sparql-pattern.c" default: #line 158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); #line 158 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-pattern.vala" break; -#line 14824 "tracker-sparql-pattern.c" +#line 15082 "tracker-sparql-pattern.c" } } diff -Nru tracker-0.15.1/src/libtracker-data/tracker-sparql-pattern.vala tracker-0.15.2/src/libtracker-data/tracker-sparql-pattern.vala --- tracker-0.15.1/src/libtracker-data/tracker-sparql-pattern.vala 2012-04-19 09:16:38.000000000 +0000 +++ tracker-0.15.2/src/libtracker-data/tracker-sparql-pattern.vala 2013-02-14 19:30:47.000000000 +0000 @@ -169,6 +169,10 @@ bool current_subject_is_var; string current_predicate; bool current_predicate_is_var; + public Variable? fts_subject; + public string[] fts_variables; + internal StringBuilder? match_str; + public bool queries_fts_data = false; public Pattern (Query query) { this.query = query; @@ -239,6 +243,7 @@ internal SelectContext translate_select (StringBuilder sql, bool subquery = false, bool scalar_subquery = false) throws Sparql.Error { SelectContext result; + if (scalar_subquery) { result = new SelectContext.subquery (query, context); } else { @@ -335,6 +340,17 @@ } } + if (queries_fts_data && fts_subject != null) { + // Ensure there's a docid to match on in FTS queries + if (!first) { + sql.append (", "); + } else { + first = false; + } + + sql.append ("%s AS docid ".printf (fts_subject.sql_expression)); + } + // literals in select expressions need to be bound before literals in the where clause foreach (var binding in where_bindings) { query.bindings.append (binding); @@ -429,9 +445,30 @@ query.bindings.append (binding); } + if (queries_fts_data && match_str != null && fts_subject != null) { + var str = new StringBuilder ("SELECT "); + first = true; + + foreach (var fts_var in fts_variables) { + if (!first) { + str.append (", "); + } else { + first = false; + } + + str.append (fts_var); + } + + str.append (" FROM fts JOIN ("); + sql.prepend (str.str); + sql.append_printf (") AS ranks USING (docid) WHERE fts %s".printf (match_str.str)); + } + context = context.parent_context; result.type = type; + match_str = null; + fts_subject = null; return result; } @@ -730,6 +767,11 @@ // parameters do not work with fts MATCH string escaped_literal = string.joinv ("''", binding.literal.split ("'")); sql.append_printf (" MATCH '%s'", escaped_literal); + + if (match_str == null) { + match_str = new StringBuilder (); + match_str.append_printf (" MATCH '%s'", escaped_literal); + } } else { sql.append (" = "); if (binding.data_type == PropertyType.RESOURCE) { @@ -1288,6 +1330,7 @@ db_table = "fts"; share_table = false; is_fts_match = true; + fts_subject = context.get_variable (current_subject); } else { throw new Sparql.Error.UNKNOWN_PROPERTY ("Unknown property `%s'".printf (current_predicate)); } @@ -1412,7 +1455,7 @@ binding.table = table; binding.type = subject_type; if (is_fts_match) { - binding.sql_db_column_name = "rowid"; + binding.sql_db_column_name = "docid"; } else { binding.sql_db_column_name = "ID"; } @@ -1470,12 +1513,12 @@ binding.sql_db_column_name = "fts"; triple_context.bindings.append (binding); - sql.append_printf ("rank(\"%s\".\"fts\") AS \"%s_u_rank\", ", - binding.table.sql_query_tablename, - context.get_variable (current_subject).name); - sql.append_printf ("offsets(\"%s\".\"fts\") AS \"%s_u_offsets\", ", - binding.table.sql_query_tablename, - context.get_variable (current_subject).name); + sql.append_printf ("\"%s\".\"docid\" AS \"ID\", ", + binding.table.sql_query_tablename); + sql.append_printf ("tracker_rank(matchinfo(\"%s\".\"fts\", 'cl'),fts_column_weights()) " + + "AS \"%s_u_rank\", ", + binding.table.sql_query_tablename, + context.get_variable (current_subject).name); } else { var binding = new LiteralBinding (); binding.literal = object; diff -Nru tracker-0.15.1/src/libtracker-data/tracker-sparql-query.c tracker-0.15.2/src/libtracker-data/tracker-sparql-query.c --- tracker-0.15.1/src/libtracker-data/tracker-sparql-query.c 2013-01-24 16:46:03.000000000 +0000 +++ tracker-0.15.2/src/libtracker-data/tracker-sparql-query.c 2013-02-15 11:38:31.000000000 +0000 @@ -515,6 +515,12 @@ GObject parent_instance; TrackerSparqlPatternPrivate * priv; gchar* current_graph; + TrackerSparqlVariable* fts_subject; + gchar** fts_variables; + gint fts_variables_length1; + gint _fts_variables_size_; + GString* match_str; + gboolean queries_fts_data; }; struct _TrackerSparqlPatternClass { @@ -737,14 +743,14 @@ self = (TrackerSparqlDataTable*) g_object_new (object_type, NULL); #line 28 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return self; -#line 741 "tracker-sparql-query.c" +#line 747 "tracker-sparql-query.c" } TrackerSparqlDataTable* tracker_sparql_data_table_new (void) { #line 28 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return tracker_sparql_data_table_construct (TRACKER_SPARQL_TYPE_DATA_TABLE); -#line 748 "tracker-sparql-query.c" +#line 754 "tracker-sparql-query.c" } @@ -753,7 +759,7 @@ tracker_sparql_data_table_parent_class = g_type_class_peek_parent (klass); #line 28 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" G_OBJECT_CLASS (klass)->finalize = tracker_sparql_data_table_finalize; -#line 757 "tracker-sparql-query.c" +#line 763 "tracker-sparql-query.c" } @@ -773,7 +779,7 @@ _g_object_unref0 (self->predicate_variable); #line 28 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" G_OBJECT_CLASS (tracker_sparql_data_table_parent_class)->finalize (obj); -#line 777 "tracker-sparql-query.c" +#line 783 "tracker-sparql-query.c" } @@ -814,7 +820,7 @@ result = _tmp4_; #line 51 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 818 "tracker-sparql-query.c" +#line 824 "tracker-sparql-query.c" } @@ -824,7 +830,7 @@ self = (TrackerSparqlDataBinding*) g_object_new (object_type, NULL); #line 34 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return self; -#line 828 "tracker-sparql-query.c" +#line 834 "tracker-sparql-query.c" } @@ -838,7 +844,7 @@ _tmp0_ = self->priv->_sql_expression; #line 40 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp0_ == NULL) { -#line 842 "tracker-sparql-query.c" +#line 848 "tracker-sparql-query.c" TrackerSparqlDataTable* _tmp1_; const gchar* _tmp2_; const gchar* _tmp3_; @@ -855,7 +861,7 @@ _g_free0 (self->priv->_sql_expression); #line 41 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->priv->_sql_expression = _tmp4_; -#line 859 "tracker-sparql-query.c" +#line 865 "tracker-sparql-query.c" } #line 43 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp5_ = self->priv->_sql_expression; @@ -863,7 +869,7 @@ result = _tmp5_; #line 43 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 867 "tracker-sparql-query.c" +#line 873 "tracker-sparql-query.c" } @@ -882,7 +888,7 @@ self->priv->_sql_expression = _tmp1_; #line 45 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_object_notify ((GObject *) self, "sql-expression"); -#line 886 "tracker-sparql-query.c" +#line 892 "tracker-sparql-query.c" } @@ -899,14 +905,14 @@ G_OBJECT_CLASS (klass)->finalize = tracker_sparql_data_binding_finalize; #line 34 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_object_class_install_property (G_OBJECT_CLASS (klass), TRACKER_SPARQL_DATA_BINDING_SQL_EXPRESSION, g_param_spec_string ("sql-expression", "sql-expression", "sql-expression", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 903 "tracker-sparql-query.c" +#line 909 "tracker-sparql-query.c" } static void tracker_sparql_data_binding_instance_init (TrackerSparqlDataBinding * self) { #line 34 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->priv = TRACKER_SPARQL_DATA_BINDING_GET_PRIVATE (self); -#line 910 "tracker-sparql-query.c" +#line 916 "tracker-sparql-query.c" } @@ -922,7 +928,7 @@ _g_free0 (self->priv->_sql_expression); #line 34 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" G_OBJECT_CLASS (tracker_sparql_data_binding_parent_class)->finalize (obj); -#line 926 "tracker-sparql-query.c" +#line 932 "tracker-sparql-query.c" } @@ -949,13 +955,13 @@ g_value_set_string (value, tracker_sparql_data_binding_get_sql_expression (self)); #line 34 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 953 "tracker-sparql-query.c" +#line 959 "tracker-sparql-query.c" default: #line 34 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); #line 34 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 959 "tracker-sparql-query.c" +#line 965 "tracker-sparql-query.c" } } @@ -971,13 +977,13 @@ tracker_sparql_data_binding_set_sql_expression (self, g_value_get_string (value)); #line 34 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 975 "tracker-sparql-query.c" +#line 981 "tracker-sparql-query.c" default: #line 34 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); #line 34 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 981 "tracker-sparql-query.c" +#line 987 "tracker-sparql-query.c" } } @@ -988,14 +994,14 @@ self = (TrackerSparqlLiteralBinding*) tracker_sparql_data_binding_construct (object_type); #line 56 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return self; -#line 992 "tracker-sparql-query.c" +#line 998 "tracker-sparql-query.c" } TrackerSparqlLiteralBinding* tracker_sparql_literal_binding_new (void) { #line 56 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return tracker_sparql_literal_binding_construct (TRACKER_SPARQL_TYPE_LITERAL_BINDING); -#line 999 "tracker-sparql-query.c" +#line 1005 "tracker-sparql-query.c" } @@ -1004,7 +1010,7 @@ tracker_sparql_literal_binding_parent_class = g_type_class_peek_parent (klass); #line 56 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" G_OBJECT_CLASS (klass)->finalize = tracker_sparql_literal_binding_finalize; -#line 1008 "tracker-sparql-query.c" +#line 1014 "tracker-sparql-query.c" } @@ -1020,7 +1026,7 @@ _g_free0 (self->literal); #line 56 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" G_OBJECT_CLASS (tracker_sparql_literal_binding_parent_class)->finalize (obj); -#line 1024 "tracker-sparql-query.c" +#line 1030 "tracker-sparql-query.c" } @@ -1042,14 +1048,14 @@ self = (TrackerSparqlVariableBinding*) tracker_sparql_data_binding_construct (object_type); #line 62 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return self; -#line 1046 "tracker-sparql-query.c" +#line 1052 "tracker-sparql-query.c" } TrackerSparqlVariableBinding* tracker_sparql_variable_binding_new (void) { #line 62 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return tracker_sparql_variable_binding_construct (TRACKER_SPARQL_TYPE_VARIABLE_BINDING); -#line 1053 "tracker-sparql-query.c" +#line 1059 "tracker-sparql-query.c" } @@ -1058,7 +1064,7 @@ tracker_sparql_variable_binding_parent_class = g_type_class_peek_parent (klass); #line 62 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" G_OBJECT_CLASS (klass)->finalize = tracker_sparql_variable_binding_finalize; -#line 1062 "tracker-sparql-query.c" +#line 1068 "tracker-sparql-query.c" } @@ -1074,7 +1080,7 @@ _g_object_unref0 (self->type); #line 62 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" G_OBJECT_CLASS (tracker_sparql_variable_binding_parent_class)->finalize (obj); -#line 1078 "tracker-sparql-query.c" +#line 1084 "tracker-sparql-query.c" } @@ -1093,7 +1099,7 @@ static void _g_object_unref0_ (gpointer var) { #line 71 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" (var == NULL) ? NULL : (var = (g_object_unref (var), NULL)); -#line 1097 "tracker-sparql-query.c" +#line 1103 "tracker-sparql-query.c" } @@ -1102,7 +1108,7 @@ g_list_foreach (self, (GFunc) _g_object_unref0_, NULL); #line 71 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_list_free (self); -#line 1106 "tracker-sparql-query.c" +#line 1112 "tracker-sparql-query.c" } @@ -1112,14 +1118,14 @@ self = (TrackerSparqlVariableBindingList*) g_object_new (object_type, NULL); #line 70 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return self; -#line 1116 "tracker-sparql-query.c" +#line 1122 "tracker-sparql-query.c" } TrackerSparqlVariableBindingList* tracker_sparql_variable_binding_list_new (void) { #line 70 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return tracker_sparql_variable_binding_list_construct (TRACKER_SPARQL_TYPE_VARIABLE_BINDING_LIST); -#line 1123 "tracker-sparql-query.c" +#line 1129 "tracker-sparql-query.c" } @@ -1128,7 +1134,7 @@ tracker_sparql_variable_binding_list_parent_class = g_type_class_peek_parent (klass); #line 70 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" G_OBJECT_CLASS (klass)->finalize = tracker_sparql_variable_binding_list_finalize; -#line 1132 "tracker-sparql-query.c" +#line 1138 "tracker-sparql-query.c" } @@ -1144,7 +1150,7 @@ __g_list_free__g_object_unref0_0 (self->list); #line 70 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" G_OBJECT_CLASS (tracker_sparql_variable_binding_list_parent_class)->finalize (obj); -#line 1148 "tracker-sparql-query.c" +#line 1154 "tracker-sparql-query.c" } @@ -1201,14 +1207,14 @@ _g_free0 (_tmp6_); #line 81 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return self; -#line 1205 "tracker-sparql-query.c" +#line 1211 "tracker-sparql-query.c" } TrackerSparqlVariable* tracker_sparql_variable_new (const gchar* name, gint index) { #line 81 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return tracker_sparql_variable_construct (TRACKER_SPARQL_TYPE_VARIABLE, name, index); -#line 1212 "tracker-sparql-query.c" +#line 1218 "tracker-sparql-query.c" } @@ -1231,7 +1237,7 @@ result = _tmp2_; #line 89 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 1235 "tracker-sparql-query.c" +#line 1241 "tracker-sparql-query.c" } @@ -1257,7 +1263,7 @@ result = _tmp1_ == _tmp3_; #line 93 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 1261 "tracker-sparql-query.c" +#line 1267 "tracker-sparql-query.c" } @@ -1275,7 +1281,7 @@ result = (guint) _tmp1_; #line 97 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 1279 "tracker-sparql-query.c" +#line 1285 "tracker-sparql-query.c" } @@ -1290,7 +1296,7 @@ result = _tmp0_; #line 75 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 1294 "tracker-sparql-query.c" +#line 1300 "tracker-sparql-query.c" } @@ -1309,7 +1315,7 @@ self->priv->_name = _tmp1_; #line 75 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_object_notify ((GObject *) self, "name"); -#line 1313 "tracker-sparql-query.c" +#line 1319 "tracker-sparql-query.c" } @@ -1324,7 +1330,7 @@ result = _tmp0_; #line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 1328 "tracker-sparql-query.c" +#line 1334 "tracker-sparql-query.c" } @@ -1338,7 +1344,7 @@ self->priv->_index = _tmp0_; #line 76 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_object_notify ((GObject *) self, "index"); -#line 1342 "tracker-sparql-query.c" +#line 1348 "tracker-sparql-query.c" } @@ -1353,7 +1359,7 @@ result = _tmp0_; #line 77 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 1357 "tracker-sparql-query.c" +#line 1363 "tracker-sparql-query.c" } @@ -1372,7 +1378,7 @@ self->priv->_sql_expression = _tmp1_; #line 77 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_object_notify ((GObject *) self, "sql-expression"); -#line 1376 "tracker-sparql-query.c" +#line 1382 "tracker-sparql-query.c" } @@ -1393,14 +1399,14 @@ g_object_class_install_property (G_OBJECT_CLASS (klass), TRACKER_SPARQL_VARIABLE_INDEX, g_param_spec_int ("index", "index", "index", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE)); #line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_object_class_install_property (G_OBJECT_CLASS (klass), TRACKER_SPARQL_VARIABLE_SQL_EXPRESSION, g_param_spec_string ("sql-expression", "sql-expression", "sql-expression", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE)); -#line 1397 "tracker-sparql-query.c" +#line 1403 "tracker-sparql-query.c" } static void tracker_sparql_variable_instance_init (TrackerSparqlVariable * self) { #line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->priv = TRACKER_SPARQL_VARIABLE_GET_PRIVATE (self); -#line 1404 "tracker-sparql-query.c" +#line 1410 "tracker-sparql-query.c" } @@ -1418,7 +1424,7 @@ _g_free0 (self->priv->sql_identifier); #line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" G_OBJECT_CLASS (tracker_sparql_variable_parent_class)->finalize (obj); -#line 1422 "tracker-sparql-query.c" +#line 1428 "tracker-sparql-query.c" } @@ -1457,13 +1463,13 @@ g_value_set_string (value, tracker_sparql_variable_get_sql_expression (self)); #line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 1461 "tracker-sparql-query.c" +#line 1467 "tracker-sparql-query.c" default: #line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); #line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 1467 "tracker-sparql-query.c" +#line 1473 "tracker-sparql-query.c" } } @@ -1491,13 +1497,13 @@ tracker_sparql_variable_set_sql_expression (self, g_value_get_string (value)); #line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 1495 "tracker-sparql-query.c" +#line 1501 "tracker-sparql-query.c" default: #line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); #line 74 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 1501 "tracker-sparql-query.c" +#line 1507 "tracker-sparql-query.c" } } @@ -1505,7 +1511,7 @@ static gpointer _tracker_sparql_context_ref0 (gpointer self) { #line 120 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return self ? tracker_sparql_context_ref (self) : NULL; -#line 1509 "tracker-sparql-query.c" +#line 1515 "tracker-sparql-query.c" } @@ -1514,7 +1520,7 @@ result = tracker_sparql_variable_hash (key); #line 121 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 1518 "tracker-sparql-query.c" +#line 1524 "tracker-sparql-query.c" } @@ -1523,14 +1529,14 @@ result = tracker_sparql_variable_equal (a, b); #line 121 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 1527 "tracker-sparql-query.c" +#line 1533 "tracker-sparql-query.c" } static gpointer _g_hash_table_ref0 (gpointer self) { #line 128 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return self ? g_hash_table_ref (self) : NULL; -#line 1534 "tracker-sparql-query.c" +#line 1540 "tracker-sparql-query.c" } @@ -1570,7 +1576,7 @@ _tmp5_ = parent_context; #line 123 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp5_ == NULL) { -#line 1574 "tracker-sparql-query.c" +#line 1580 "tracker-sparql-query.c" GDestroyNotify _tmp6_; GHashTable* _tmp7_; GHashFunc _tmp8_; @@ -1613,7 +1619,7 @@ _g_hash_table_unref0 (self->predicate_variable_map); #line 126 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->predicate_variable_map = _tmp15_; -#line 1617 "tracker-sparql-query.c" +#line 1623 "tracker-sparql-query.c" } else { TrackerSparqlContext* _tmp16_; GHashTable* _tmp17_; @@ -1654,18 +1660,18 @@ _g_hash_table_unref0 (self->predicate_variable_map); #line 130 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->predicate_variable_map = _tmp24_; -#line 1658 "tracker-sparql-query.c" +#line 1664 "tracker-sparql-query.c" } #line 118 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return self; -#line 1662 "tracker-sparql-query.c" +#line 1668 "tracker-sparql-query.c" } TrackerSparqlContext* tracker_sparql_context_new (TrackerSparqlQuery* query, TrackerSparqlContext* parent_context) { #line 118 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return tracker_sparql_context_construct (TRACKER_SPARQL_TYPE_CONTEXT, query, parent_context); -#line 1669 "tracker-sparql-query.c" +#line 1675 "tracker-sparql-query.c" } @@ -1742,21 +1748,21 @@ self->scalar_subquery = TRUE; #line 134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return self; -#line 1746 "tracker-sparql-query.c" +#line 1752 "tracker-sparql-query.c" } TrackerSparqlContext* tracker_sparql_context_new_subquery (TrackerSparqlQuery* query, TrackerSparqlContext* parent_context) { #line 134 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return tracker_sparql_context_construct_subquery (TRACKER_SPARQL_TYPE_CONTEXT, query, parent_context); -#line 1753 "tracker-sparql-query.c" +#line 1759 "tracker-sparql-query.c" } static gpointer _g_object_ref0 (gpointer self) { #line 149 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return self ? g_object_ref (self) : NULL; -#line 1760 "tracker-sparql-query.c" +#line 1766 "tracker-sparql-query.c" } @@ -1784,7 +1790,7 @@ _tmp3_ = _result_; #line 147 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp3_ == NULL) { -#line 1788 "tracker-sparql-query.c" +#line 1794 "tracker-sparql-query.c" const gchar* _tmp4_; TrackerSparqlQuery* _tmp5_; TrackerSparqlQuery* _tmp6_; @@ -1832,7 +1838,7 @@ _result_ = _tmp15_; #line 147 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_object_unref0 (variable); -#line 1836 "tracker-sparql-query.c" +#line 1842 "tracker-sparql-query.c" } #line 153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp16_ = _result_; @@ -1840,14 +1846,14 @@ result = _tmp16_; #line 153 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 1844 "tracker-sparql-query.c" +#line 1850 "tracker-sparql-query.c" } static void tracker_sparql_value_context_init (GValue* value) { #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" value->data[0].v_pointer = NULL; -#line 1851 "tracker-sparql-query.c" +#line 1857 "tracker-sparql-query.c" } @@ -1856,7 +1862,7 @@ if (value->data[0].v_pointer) { #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_context_unref (value->data[0].v_pointer); -#line 1860 "tracker-sparql-query.c" +#line 1866 "tracker-sparql-query.c" } } @@ -1866,11 +1872,11 @@ if (src_value->data[0].v_pointer) { #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" dest_value->data[0].v_pointer = tracker_sparql_context_ref (src_value->data[0].v_pointer); -#line 1870 "tracker-sparql-query.c" +#line 1876 "tracker-sparql-query.c" } else { #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" dest_value->data[0].v_pointer = NULL; -#line 1874 "tracker-sparql-query.c" +#line 1880 "tracker-sparql-query.c" } } @@ -1878,37 +1884,37 @@ static gpointer tracker_sparql_value_context_peek_pointer (const GValue* value) { #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return value->data[0].v_pointer; -#line 1882 "tracker-sparql-query.c" +#line 1888 "tracker-sparql-query.c" } static gchar* tracker_sparql_value_context_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (collect_values[0].v_pointer) { -#line 1889 "tracker-sparql-query.c" +#line 1895 "tracker-sparql-query.c" TrackerSparqlContext* object; object = collect_values[0].v_pointer; #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (object->parent_instance.g_class == NULL) { #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); -#line 1896 "tracker-sparql-query.c" +#line 1902 "tracker-sparql-query.c" } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); -#line 1900 "tracker-sparql-query.c" +#line 1906 "tracker-sparql-query.c" } #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" value->data[0].v_pointer = tracker_sparql_context_ref (object); -#line 1904 "tracker-sparql-query.c" +#line 1910 "tracker-sparql-query.c" } else { #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" value->data[0].v_pointer = NULL; -#line 1908 "tracker-sparql-query.c" +#line 1914 "tracker-sparql-query.c" } #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 1912 "tracker-sparql-query.c" +#line 1918 "tracker-sparql-query.c" } @@ -1919,25 +1925,25 @@ if (!object_p) { #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); -#line 1923 "tracker-sparql-query.c" +#line 1929 "tracker-sparql-query.c" } #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (!value->data[0].v_pointer) { #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" *object_p = NULL; -#line 1929 "tracker-sparql-query.c" +#line 1935 "tracker-sparql-query.c" } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) { #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" *object_p = value->data[0].v_pointer; -#line 1933 "tracker-sparql-query.c" +#line 1939 "tracker-sparql-query.c" } else { #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" *object_p = tracker_sparql_context_ref (value->data[0].v_pointer); -#line 1937 "tracker-sparql-query.c" +#line 1943 "tracker-sparql-query.c" } #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 1941 "tracker-sparql-query.c" +#line 1947 "tracker-sparql-query.c" } @@ -1951,7 +1957,7 @@ G_PARAM_SPEC (spec)->value_type = object_type; #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return G_PARAM_SPEC (spec); -#line 1955 "tracker-sparql-query.c" +#line 1961 "tracker-sparql-query.c" } @@ -1960,7 +1966,7 @@ g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TRACKER_SPARQL_TYPE_CONTEXT), NULL); #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return value->data[0].v_pointer; -#line 1964 "tracker-sparql-query.c" +#line 1970 "tracker-sparql-query.c" } @@ -1980,17 +1986,17 @@ value->data[0].v_pointer = v_object; #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_context_ref (value->data[0].v_pointer); -#line 1984 "tracker-sparql-query.c" +#line 1990 "tracker-sparql-query.c" } else { #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" value->data[0].v_pointer = NULL; -#line 1988 "tracker-sparql-query.c" +#line 1994 "tracker-sparql-query.c" } #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (old) { #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_context_unref (old); -#line 1994 "tracker-sparql-query.c" +#line 2000 "tracker-sparql-query.c" } } @@ -2009,17 +2015,17 @@ g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" value->data[0].v_pointer = v_object; -#line 2013 "tracker-sparql-query.c" +#line 2019 "tracker-sparql-query.c" } else { #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" value->data[0].v_pointer = NULL; -#line 2017 "tracker-sparql-query.c" +#line 2023 "tracker-sparql-query.c" } #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (old) { #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_context_unref (old); -#line 2023 "tracker-sparql-query.c" +#line 2029 "tracker-sparql-query.c" } } @@ -2029,14 +2035,14 @@ tracker_sparql_context_parent_class = g_type_class_peek_parent (klass); #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" TRACKER_SPARQL_CONTEXT_CLASS (klass)->finalize = tracker_sparql_context_finalize; -#line 2033 "tracker-sparql-query.c" +#line 2039 "tracker-sparql-query.c" } static void tracker_sparql_context_instance_init (TrackerSparqlContext * self) { #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->ref_count = 1; -#line 2040 "tracker-sparql-query.c" +#line 2046 "tracker-sparql-query.c" } @@ -2054,7 +2060,7 @@ _g_hash_table_unref0 (self->select_var_set); #line 114 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_hash_table_unref0 (self->predicate_variable_map); -#line 2058 "tracker-sparql-query.c" +#line 2064 "tracker-sparql-query.c" } @@ -2079,7 +2085,7 @@ g_atomic_int_inc (&self->ref_count); #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return instance; -#line 2083 "tracker-sparql-query.c" +#line 2089 "tracker-sparql-query.c" } @@ -2092,7 +2098,7 @@ TRACKER_SPARQL_CONTEXT_GET_CLASS (self)->finalize (self); #line 101 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_type_free_instance ((GTypeInstance *) self); -#line 2096 "tracker-sparql-query.c" +#line 2102 "tracker-sparql-query.c" } } @@ -2111,14 +2117,14 @@ self = (TrackerSparqlSelectContext*) tracker_sparql_context_construct (object_type, _tmp0_, _tmp1_); #line 162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return self; -#line 2115 "tracker-sparql-query.c" +#line 2121 "tracker-sparql-query.c" } TrackerSparqlSelectContext* tracker_sparql_select_context_new (TrackerSparqlQuery* query, TrackerSparqlContext* parent_context) { #line 162 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return tracker_sparql_select_context_construct (TRACKER_SPARQL_TYPE_SELECT_CONTEXT, query, parent_context); -#line 2122 "tracker-sparql-query.c" +#line 2128 "tracker-sparql-query.c" } @@ -2138,14 +2144,14 @@ self = (TrackerSparqlSelectContext*) tracker_sparql_context_construct_subquery (object_type, _tmp0_, _tmp1_); #line 166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return self; -#line 2142 "tracker-sparql-query.c" +#line 2148 "tracker-sparql-query.c" } TrackerSparqlSelectContext* tracker_sparql_select_context_new_subquery (TrackerSparqlQuery* query, TrackerSparqlContext* parent_context) { #line 166 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return tracker_sparql_select_context_construct_subquery (TRACKER_SPARQL_TYPE_SELECT_CONTEXT, query, parent_context); -#line 2149 "tracker-sparql-query.c" +#line 2155 "tracker-sparql-query.c" } @@ -2154,7 +2160,7 @@ tracker_sparql_select_context_parent_class = g_type_class_peek_parent (klass); #line 157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" TRACKER_SPARQL_CONTEXT_CLASS (klass)->finalize = tracker_sparql_select_context_finalize; -#line 2158 "tracker-sparql-query.c" +#line 2164 "tracker-sparql-query.c" } @@ -2177,7 +2183,7 @@ self->variable_names_length1 = 0; #line 160 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->_variable_names_size_ = self->variable_names_length1; -#line 2181 "tracker-sparql-query.c" +#line 2187 "tracker-sparql-query.c" } @@ -2191,7 +2197,7 @@ self->variable_names = (_vala_array_free (self->variable_names, self->variable_names_length1, (GDestroyNotify) g_free), NULL); #line 157 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" TRACKER_SPARQL_CONTEXT_CLASS (tracker_sparql_select_context_parent_class)->finalize (obj); -#line 2195 "tracker-sparql-query.c" +#line 2201 "tracker-sparql-query.c" } @@ -2210,7 +2216,7 @@ static void _g_free0_ (gpointer var) { #line 177 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" var = (g_free (var), NULL); -#line 2214 "tracker-sparql-query.c" +#line 2220 "tracker-sparql-query.c" } @@ -2240,14 +2246,14 @@ self->values = _tmp3_; #line 176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return self; -#line 2244 "tracker-sparql-query.c" +#line 2250 "tracker-sparql-query.c" } TrackerSparqlSolution* tracker_sparql_solution_new (void) { #line 176 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return tracker_sparql_solution_construct (TRACKER_SPARQL_TYPE_SOLUTION); -#line 2251 "tracker-sparql-query.c" +#line 2257 "tracker-sparql-query.c" } @@ -2283,7 +2289,7 @@ result = NULL; #line 184 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 2287 "tracker-sparql-query.c" +#line 2293 "tracker-sparql-query.c" } #line 186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp4_ = self->values; @@ -2303,14 +2309,14 @@ result = _tmp10_; #line 186 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 2307 "tracker-sparql-query.c" +#line 2313 "tracker-sparql-query.c" } static void tracker_sparql_value_solution_init (GValue* value) { #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" value->data[0].v_pointer = NULL; -#line 2314 "tracker-sparql-query.c" +#line 2320 "tracker-sparql-query.c" } @@ -2319,7 +2325,7 @@ if (value->data[0].v_pointer) { #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_solution_unref (value->data[0].v_pointer); -#line 2323 "tracker-sparql-query.c" +#line 2329 "tracker-sparql-query.c" } } @@ -2329,11 +2335,11 @@ if (src_value->data[0].v_pointer) { #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" dest_value->data[0].v_pointer = tracker_sparql_solution_ref (src_value->data[0].v_pointer); -#line 2333 "tracker-sparql-query.c" +#line 2339 "tracker-sparql-query.c" } else { #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" dest_value->data[0].v_pointer = NULL; -#line 2337 "tracker-sparql-query.c" +#line 2343 "tracker-sparql-query.c" } } @@ -2341,37 +2347,37 @@ static gpointer tracker_sparql_value_solution_peek_pointer (const GValue* value) { #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return value->data[0].v_pointer; -#line 2345 "tracker-sparql-query.c" +#line 2351 "tracker-sparql-query.c" } static gchar* tracker_sparql_value_solution_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (collect_values[0].v_pointer) { -#line 2352 "tracker-sparql-query.c" +#line 2358 "tracker-sparql-query.c" TrackerSparqlSolution* object; object = collect_values[0].v_pointer; #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (object->parent_instance.g_class == NULL) { #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); -#line 2359 "tracker-sparql-query.c" +#line 2365 "tracker-sparql-query.c" } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); -#line 2363 "tracker-sparql-query.c" +#line 2369 "tracker-sparql-query.c" } #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" value->data[0].v_pointer = tracker_sparql_solution_ref (object); -#line 2367 "tracker-sparql-query.c" +#line 2373 "tracker-sparql-query.c" } else { #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" value->data[0].v_pointer = NULL; -#line 2371 "tracker-sparql-query.c" +#line 2377 "tracker-sparql-query.c" } #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 2375 "tracker-sparql-query.c" +#line 2381 "tracker-sparql-query.c" } @@ -2382,25 +2388,25 @@ if (!object_p) { #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); -#line 2386 "tracker-sparql-query.c" +#line 2392 "tracker-sparql-query.c" } #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (!value->data[0].v_pointer) { #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" *object_p = NULL; -#line 2392 "tracker-sparql-query.c" +#line 2398 "tracker-sparql-query.c" } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) { #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" *object_p = value->data[0].v_pointer; -#line 2396 "tracker-sparql-query.c" +#line 2402 "tracker-sparql-query.c" } else { #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" *object_p = tracker_sparql_solution_ref (value->data[0].v_pointer); -#line 2400 "tracker-sparql-query.c" +#line 2406 "tracker-sparql-query.c" } #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 2404 "tracker-sparql-query.c" +#line 2410 "tracker-sparql-query.c" } @@ -2414,7 +2420,7 @@ G_PARAM_SPEC (spec)->value_type = object_type; #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return G_PARAM_SPEC (spec); -#line 2418 "tracker-sparql-query.c" +#line 2424 "tracker-sparql-query.c" } @@ -2423,7 +2429,7 @@ g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TRACKER_SPARQL_TYPE_SOLUTION), NULL); #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return value->data[0].v_pointer; -#line 2427 "tracker-sparql-query.c" +#line 2433 "tracker-sparql-query.c" } @@ -2443,17 +2449,17 @@ value->data[0].v_pointer = v_object; #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_solution_ref (value->data[0].v_pointer); -#line 2447 "tracker-sparql-query.c" +#line 2453 "tracker-sparql-query.c" } else { #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" value->data[0].v_pointer = NULL; -#line 2451 "tracker-sparql-query.c" +#line 2457 "tracker-sparql-query.c" } #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (old) { #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_solution_unref (old); -#line 2457 "tracker-sparql-query.c" +#line 2463 "tracker-sparql-query.c" } } @@ -2472,17 +2478,17 @@ g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" value->data[0].v_pointer = v_object; -#line 2476 "tracker-sparql-query.c" +#line 2482 "tracker-sparql-query.c" } else { #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" value->data[0].v_pointer = NULL; -#line 2480 "tracker-sparql-query.c" +#line 2486 "tracker-sparql-query.c" } #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (old) { #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_solution_unref (old); -#line 2486 "tracker-sparql-query.c" +#line 2492 "tracker-sparql-query.c" } } @@ -2492,14 +2498,14 @@ tracker_sparql_solution_parent_class = g_type_class_peek_parent (klass); #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" TRACKER_SPARQL_SOLUTION_CLASS (klass)->finalize = tracker_sparql_solution_finalize; -#line 2496 "tracker-sparql-query.c" +#line 2502 "tracker-sparql-query.c" } static void tracker_sparql_solution_instance_init (TrackerSparqlSolution * self) { #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->ref_count = 1; -#line 2503 "tracker-sparql-query.c" +#line 2509 "tracker-sparql-query.c" } @@ -2511,7 +2517,7 @@ _g_hash_table_unref0 (self->hash); #line 173 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_ptr_array_unref0 (self->values); -#line 2515 "tracker-sparql-query.c" +#line 2521 "tracker-sparql-query.c" } @@ -2536,7 +2542,7 @@ g_atomic_int_inc (&self->ref_count); #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return instance; -#line 2540 "tracker-sparql-query.c" +#line 2546 "tracker-sparql-query.c" } @@ -2549,7 +2555,7 @@ TRACKER_SPARQL_SOLUTION_GET_CLASS (self)->finalize (self); #line 171 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_type_free_instance ((GTypeInstance *) self); -#line 2553 "tracker-sparql-query.c" +#line 2559 "tracker-sparql-query.c" } } @@ -2637,14 +2643,14 @@ self->pattern = _tmp11_; #line 246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return self; -#line 2641 "tracker-sparql-query.c" +#line 2647 "tracker-sparql-query.c" } TrackerSparqlQuery* tracker_sparql_query_new (const gchar* query) { #line 246 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return tracker_sparql_query_construct (TRACKER_SPARQL_TYPE_QUERY, query); -#line 2648 "tracker-sparql-query.c" +#line 2654 "tracker-sparql-query.c" } @@ -2661,14 +2667,14 @@ self->priv->update_extensions = TRUE; #line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return self; -#line 2665 "tracker-sparql-query.c" +#line 2671 "tracker-sparql-query.c" } TrackerSparqlQuery* tracker_sparql_query_new_update (const gchar* query) { #line 260 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return tracker_sparql_query_construct_update (TRACKER_SPARQL_TYPE_QUERY, query); -#line 2672 "tracker-sparql-query.c" +#line 2678 "tracker-sparql-query.c" } @@ -2691,7 +2697,7 @@ _tmp3_ = end; #line 1339 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" if (_tmp3_ == NULL) { -#line 2695 "tracker-sparql-query.c" +#line 2701 "tracker-sparql-query.c" glong _tmp4_; #line 1340 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp4_ = maxlen; @@ -2699,7 +2705,7 @@ result = _tmp4_; #line 1340 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" return result; -#line 2703 "tracker-sparql-query.c" +#line 2709 "tracker-sparql-query.c" } else { gchar* _tmp5_; gchar* _tmp6_; @@ -2711,7 +2717,7 @@ result = (glong) (_tmp5_ - _tmp6_); #line 1342 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" return result; -#line 2715 "tracker-sparql-query.c" +#line 2721 "tracker-sparql-query.c" } } @@ -2736,23 +2742,23 @@ _tmp1_ = offset; #line 1351 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" if (_tmp1_ >= ((glong) 0)) { -#line 2740 "tracker-sparql-query.c" +#line 2746 "tracker-sparql-query.c" glong _tmp2_; #line 1351 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp2_ = len; #line 1351 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp0_ = _tmp2_ >= ((glong) 0); -#line 2746 "tracker-sparql-query.c" +#line 2752 "tracker-sparql-query.c" } else { #line 1351 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp0_ = FALSE; -#line 2750 "tracker-sparql-query.c" +#line 2756 "tracker-sparql-query.c" } #line 1351 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp3_ = _tmp0_; #line 1351 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" if (_tmp3_) { -#line 2756 "tracker-sparql-query.c" +#line 2762 "tracker-sparql-query.c" glong _tmp4_; glong _tmp5_; glong _tmp6_ = 0L; @@ -2764,7 +2770,7 @@ _tmp6_ = string_strnlen ((gchar*) self, _tmp4_ + _tmp5_); #line 1353 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" string_length = _tmp6_; -#line 2768 "tracker-sparql-query.c" +#line 2774 "tracker-sparql-query.c" } else { gint _tmp7_; gint _tmp8_; @@ -2774,13 +2780,13 @@ _tmp8_ = _tmp7_; #line 1355 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" string_length = (glong) _tmp8_; -#line 2778 "tracker-sparql-query.c" +#line 2784 "tracker-sparql-query.c" } #line 1358 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp9_ = offset; #line 1358 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" if (_tmp9_ < ((glong) 0)) { -#line 2784 "tracker-sparql-query.c" +#line 2790 "tracker-sparql-query.c" glong _tmp10_; glong _tmp11_; glong _tmp12_; @@ -2794,7 +2800,7 @@ _tmp12_ = offset; #line 1360 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" g_return_val_if_fail (_tmp12_ >= ((glong) 0), NULL); -#line 2798 "tracker-sparql-query.c" +#line 2804 "tracker-sparql-query.c" } else { glong _tmp13_; glong _tmp14_; @@ -2804,13 +2810,13 @@ _tmp14_ = string_length; #line 1362 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" g_return_val_if_fail (_tmp13_ <= _tmp14_, NULL); -#line 2808 "tracker-sparql-query.c" +#line 2814 "tracker-sparql-query.c" } #line 1364 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp15_ = len; #line 1364 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" if (_tmp15_ < ((glong) 0)) { -#line 2814 "tracker-sparql-query.c" +#line 2820 "tracker-sparql-query.c" glong _tmp16_; glong _tmp17_; #line 1365 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" @@ -2819,7 +2825,7 @@ _tmp17_ = offset; #line 1365 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" len = _tmp16_ - _tmp17_; -#line 2823 "tracker-sparql-query.c" +#line 2829 "tracker-sparql-query.c" } #line 1367 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" _tmp18_ = offset; @@ -2839,7 +2845,7 @@ result = _tmp23_; #line 1368 "/usr/share/vala-0.16/vapi/glib-2.0.vapi" return result; -#line 2843 "tracker-sparql-query.c" +#line 2849 "tracker-sparql-query.c" } @@ -2923,7 +2929,7 @@ _g_checksum_free0 (checksum); #line 276 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 2927 "tracker-sparql-query.c" +#line 2933 "tracker-sparql-query.c" } @@ -2936,7 +2942,7 @@ _tmp0_ = user_bnodeid; #line 282 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp0_ == NULL) { -#line 2940 "tracker-sparql-query.c" +#line 2946 "tracker-sparql-query.c" gint _tmp1_; gint _tmp2_; gchar* _tmp3_ = NULL; @@ -2952,7 +2958,7 @@ result = _tmp3_; #line 283 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 2956 "tracker-sparql-query.c" +#line 2962 "tracker-sparql-query.c" } else { gchar* uri; GHashTable* _tmp4_; @@ -2967,7 +2973,7 @@ _tmp4_ = self->priv->blank_nodes; #line 287 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp4_ != NULL) { -#line 2971 "tracker-sparql-query.c" +#line 2977 "tracker-sparql-query.c" GHashTable* _tmp5_; const gchar* _tmp6_; gconstpointer _tmp7_ = NULL; @@ -2993,7 +2999,7 @@ result = uri; #line 290 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 2997 "tracker-sparql-query.c" +#line 3003 "tracker-sparql-query.c" } } #line 294 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -3012,7 +3018,7 @@ _tmp13_ = self->priv->blank_nodes; #line 296 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp13_ != NULL) { -#line 3016 "tracker-sparql-query.c" +#line 3022 "tracker-sparql-query.c" GHashTable* _tmp21_; const gchar* _tmp22_; gchar* _tmp23_; @@ -3020,7 +3026,7 @@ gchar* _tmp25_; #line 297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" while (TRUE) { -#line 3024 "tracker-sparql-query.c" +#line 3030 "tracker-sparql-query.c" const gchar* _tmp14_; gint _tmp15_ = 0; guchar* _tmp16_ = NULL; @@ -3041,7 +3047,7 @@ if (!(_tmp15_ > 0)) { #line 297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 3045 "tracker-sparql-query.c" +#line 3051 "tracker-sparql-query.c" } #line 299 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp16_ = g_new0 (guchar, 16); @@ -3071,7 +3077,7 @@ uri = _tmp20_; #line 297 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" new_base_uuid = (g_free (new_base_uuid), NULL); -#line 3075 "tracker-sparql-query.c" +#line 3081 "tracker-sparql-query.c" } #line 304 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp21_ = self->priv->blank_nodes; @@ -3085,13 +3091,13 @@ _tmp25_ = g_strdup (_tmp24_); #line 304 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_hash_table_insert (_tmp21_, _tmp23_, _tmp25_); -#line 3089 "tracker-sparql-query.c" +#line 3095 "tracker-sparql-query.c" } #line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" result = uri; #line 307 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 3095 "tracker-sparql-query.c" +#line 3101 "tracker-sparql-query.c" } } @@ -3121,7 +3127,7 @@ _tmp2_ = self->priv->size; #line 314 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp2_ <= 0) { -#line 3125 "tracker-sparql-query.c" +#line 3131 "tracker-sparql-query.c" TrackerSourceLocation begin = {0}; TrackerSourceLocation end = {0}; TrackerSparqlScanner* _tmp3_; @@ -3159,7 +3165,7 @@ g_propagate_error (error, _inner_error_); #line 316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return FALSE; -#line 3163 "tracker-sparql-query.c" +#line 3169 "tracker-sparql-query.c" } else { #line 316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -3167,7 +3173,7 @@ g_clear_error (&_inner_error_); #line 316 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return FALSE; -#line 3171 "tracker-sparql-query.c" +#line 3177 "tracker-sparql-query.c" } } #line 317 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -3202,7 +3208,7 @@ _tmp13_[_tmp14_].end = _tmp15_; #line 320 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->priv->size = 1; -#line 3206 "tracker-sparql-query.c" +#line 3212 "tracker-sparql-query.c" } #line 322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp16_ = self->priv->tokens; @@ -3218,7 +3224,7 @@ result = _tmp19_ != TRACKER_SPARQL_TOKEN_TYPE_EOF; #line 322 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 3222 "tracker-sparql-query.c" +#line 3228 "tracker-sparql-query.c" } @@ -3245,7 +3251,7 @@ result = _tmp3_; #line 326 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 3249 "tracker-sparql-query.c" +#line 3255 "tracker-sparql-query.c" } @@ -3275,7 +3281,7 @@ result = _tmp3_; #line 331 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 3279 "tracker-sparql-query.c" +#line 3285 "tracker-sparql-query.c" } @@ -3302,7 +3308,7 @@ g_propagate_error (error, _inner_error_); #line 336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return FALSE; -#line 3306 "tracker-sparql-query.c" +#line 3312 "tracker-sparql-query.c" } else { #line 336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -3310,20 +3316,20 @@ g_clear_error (&_inner_error_); #line 336 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return FALSE; -#line 3314 "tracker-sparql-query.c" +#line 3320 "tracker-sparql-query.c" } } #line 337 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" result = TRUE; #line 337 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 3321 "tracker-sparql-query.c" +#line 3327 "tracker-sparql-query.c" } #line 339 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" result = FALSE; #line 339 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 3327 "tracker-sparql-query.c" +#line 3333 "tracker-sparql-query.c" } @@ -3390,7 +3396,7 @@ result = _tmp14_; #line 343 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 3394 "tracker-sparql-query.c" +#line 3400 "tracker-sparql-query.c" } @@ -3457,7 +3463,7 @@ result = _tmp14_; #line 347 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 3461 "tracker-sparql-query.c" +#line 3467 "tracker-sparql-query.c" } @@ -3489,7 +3495,7 @@ g_propagate_error (error, _inner_error_); #line 351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return FALSE; -#line 3493 "tracker-sparql-query.c" +#line 3499 "tracker-sparql-query.c" } else { #line 351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -3497,7 +3503,7 @@ g_clear_error (&_inner_error_); #line 351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return FALSE; -#line 3501 "tracker-sparql-query.c" +#line 3507 "tracker-sparql-query.c" } } #line 351 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -3506,7 +3512,7 @@ result = TRUE; #line 352 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 3510 "tracker-sparql-query.c" +#line 3516 "tracker-sparql-query.c" } #line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp3_ = type; @@ -3530,7 +3536,7 @@ g_propagate_error (error, _inner_error_); #line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return FALSE; -#line 3534 "tracker-sparql-query.c" +#line 3540 "tracker-sparql-query.c" } else { #line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -3538,7 +3544,7 @@ g_clear_error (&_inner_error_); #line 355 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return FALSE; -#line 3542 "tracker-sparql-query.c" +#line 3548 "tracker-sparql-query.c" } } @@ -3565,7 +3571,7 @@ *result = _tmp3_; #line 359 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 3569 "tracker-sparql-query.c" +#line 3575 "tracker-sparql-query.c" } @@ -3587,7 +3593,7 @@ self->priv->size = 0; #line 365 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->priv->index = 0; -#line 3591 "tracker-sparql-query.c" +#line 3597 "tracker-sparql-query.c" { #line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_query_next (self, &_inner_error_); @@ -3595,7 +3601,7 @@ if (_inner_error_ != NULL) { #line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 3599 "tracker-sparql-query.c" +#line 3605 "tracker-sparql-query.c" goto __catch2_tracker_sparql_error; } #line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -3604,7 +3610,7 @@ g_clear_error (&_inner_error_); #line 367 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 3608 "tracker-sparql-query.c" +#line 3614 "tracker-sparql-query.c" } } goto __finally2; @@ -3619,7 +3625,7 @@ g_critical ("internal error: next in set_location failed"); #line 366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_error_free0 (e); -#line 3623 "tracker-sparql-query.c" +#line 3629 "tracker-sparql-query.c" } __finally2: #line 366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -3630,7 +3636,7 @@ g_clear_error (&_inner_error_); #line 366 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 3634 "tracker-sparql-query.c" +#line 3640 "tracker-sparql-query.c" } } @@ -3703,7 +3709,7 @@ result = _tmp15_; #line 376 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 3707 "tracker-sparql-query.c" +#line 3713 "tracker-sparql-query.c" } @@ -3725,7 +3731,7 @@ g_propagate_error (error, _inner_error_); #line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 3729 "tracker-sparql-query.c" +#line 3735 "tracker-sparql-query.c" } else { #line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -3733,7 +3739,7 @@ g_clear_error (&_inner_error_); #line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 3737 "tracker-sparql-query.c" +#line 3743 "tracker-sparql-query.c" } } #line 380 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -3748,7 +3754,7 @@ g_propagate_error (error, _inner_error_); #line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 3752 "tracker-sparql-query.c" +#line 3758 "tracker-sparql-query.c" } else { #line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -3756,13 +3762,13 @@ g_clear_error (&_inner_error_); #line 381 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 3760 "tracker-sparql-query.c" +#line 3766 "tracker-sparql-query.c" } } } #line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" while (TRUE) { -#line 3766 "tracker-sparql-query.c" +#line 3772 "tracker-sparql-query.c" gboolean _tmp2_ = FALSE; gboolean _tmp3_; gchar* _tmp4_; @@ -3788,7 +3794,7 @@ g_propagate_error (error, _inner_error_); #line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 3792 "tracker-sparql-query.c" +#line 3798 "tracker-sparql-query.c" } else { #line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -3796,14 +3802,14 @@ g_clear_error (&_inner_error_); #line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 3800 "tracker-sparql-query.c" +#line 3806 "tracker-sparql-query.c" } } #line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (!_tmp3_) { #line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 3807 "tracker-sparql-query.c" +#line 3813 "tracker-sparql-query.c" } #line 384 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp4_ = g_strdup (""); @@ -3823,7 +3829,7 @@ _g_free0 (ns); #line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 3827 "tracker-sparql-query.c" +#line 3833 "tracker-sparql-query.c" } else { #line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (ns); @@ -3833,12 +3839,12 @@ g_clear_error (&_inner_error_); #line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 3837 "tracker-sparql-query.c" +#line 3843 "tracker-sparql-query.c" } } #line 385 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp6_) { -#line 3842 "tracker-sparql-query.c" +#line 3848 "tracker-sparql-query.c" gchar* _tmp7_ = NULL; #line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp7_ = tracker_sparql_query_get_last_string (self, 0); @@ -3846,7 +3852,7 @@ _g_free0 (ns); #line 386 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" ns = _tmp7_; -#line 3850 "tracker-sparql-query.c" +#line 3856 "tracker-sparql-query.c" } #line 388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_query_expect (self, TRACKER_SPARQL_TOKEN_TYPE_COLON, &_inner_error_); @@ -3860,7 +3866,7 @@ _g_free0 (ns); #line 388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 3864 "tracker-sparql-query.c" +#line 3870 "tracker-sparql-query.c" } else { #line 388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (ns); @@ -3870,7 +3876,7 @@ g_clear_error (&_inner_error_); #line 388 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 3874 "tracker-sparql-query.c" +#line 3880 "tracker-sparql-query.c" } } #line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -3885,7 +3891,7 @@ _g_free0 (ns); #line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 3889 "tracker-sparql-query.c" +#line 3895 "tracker-sparql-query.c" } else { #line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (ns); @@ -3895,7 +3901,7 @@ g_clear_error (&_inner_error_); #line 389 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 3899 "tracker-sparql-query.c" +#line 3905 "tracker-sparql-query.c" } } #line 390 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -3918,7 +3924,7 @@ _g_free0 (uri); #line 383 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (ns); -#line 3922 "tracker-sparql-query.c" +#line 3928 "tracker-sparql-query.c" } } @@ -3966,7 +3972,7 @@ g_propagate_error (error, _inner_error_); #line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 3970 "tracker-sparql-query.c" +#line 3976 "tracker-sparql-query.c" } else { #line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -3974,7 +3980,7 @@ g_clear_error (&_inner_error_); #line 399 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 3978 "tracker-sparql-query.c" +#line 3984 "tracker-sparql-query.c" } } #line 402 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -3987,7 +3993,7 @@ g_hash_table_insert (_tmp6_, _tmp7_, _tmp8_); #line 404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp10_ = tracker_ontologies_get_namespaces (&_tmp9_); -#line 3991 "tracker-sparql-query.c" +#line 3997 "tracker-sparql-query.c" { TrackerNamespace** ns_collection = NULL; gint ns_collection_length1 = 0; @@ -3999,14 +4005,14 @@ ns_collection_length1 = _tmp9_; #line 404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" for (ns_it = 0; ns_it < _tmp9_; ns_it = ns_it + 1) { -#line 4003 "tracker-sparql-query.c" +#line 4009 "tracker-sparql-query.c" TrackerNamespace* _tmp11_; TrackerNamespace* ns = NULL; #line 404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp11_ = _g_object_ref0 (ns_collection[ns_it]); #line 404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" ns = _tmp11_; -#line 4010 "tracker-sparql-query.c" +#line 4016 "tracker-sparql-query.c" { TrackerNamespace* _tmp12_; const gchar* _tmp13_; @@ -4028,7 +4034,7 @@ _tmp14_ = _tmp13_; #line 405 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp14_ == NULL) { -#line 4032 "tracker-sparql-query.c" +#line 4038 "tracker-sparql-query.c" TrackerNamespace* _tmp15_; const gchar* _tmp16_; const gchar* _tmp17_; @@ -4044,7 +4050,7 @@ _g_object_unref0 (ns); #line 407 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" continue; -#line 4048 "tracker-sparql-query.c" +#line 4054 "tracker-sparql-query.c" } #line 409 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp18_ = self->priv->prefix_map; @@ -4068,7 +4074,7 @@ g_hash_table_insert (_tmp18_, _tmp22_, _tmp26_); #line 404 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_object_unref0 (ns); -#line 4072 "tracker-sparql-query.c" +#line 4078 "tracker-sparql-query.c" } } } @@ -4082,7 +4088,7 @@ g_propagate_error (error, _inner_error_); #line 412 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 4086 "tracker-sparql-query.c" +#line 4092 "tracker-sparql-query.c" } else { #line 412 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -4090,7 +4096,7 @@ g_clear_error (&_inner_error_); #line 412 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 4094 "tracker-sparql-query.c" +#line 4100 "tracker-sparql-query.c" } } } @@ -4112,7 +4118,7 @@ g_propagate_error (error, _inner_error_); #line 418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4116 "tracker-sparql-query.c" +#line 4122 "tracker-sparql-query.c" } else { #line 418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -4120,7 +4126,7 @@ g_clear_error (&_inner_error_); #line 418 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4124 "tracker-sparql-query.c" +#line 4130 "tracker-sparql-query.c" } } #line 420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -4129,7 +4135,7 @@ switch (_tmp0_) { #line 420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" case TRACKER_SPARQL_TOKEN_TYPE_SELECT: -#line 4133 "tracker-sparql-query.c" +#line 4139 "tracker-sparql-query.c" { gboolean _tmp1_; TrackerDBCursor* _tmp2_ = NULL; @@ -4148,7 +4154,7 @@ g_propagate_error (error, _inner_error_); #line 422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4152 "tracker-sparql-query.c" +#line 4158 "tracker-sparql-query.c" } else { #line 422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -4156,18 +4162,18 @@ g_clear_error (&_inner_error_); #line 422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4160 "tracker-sparql-query.c" +#line 4166 "tracker-sparql-query.c" } } #line 422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" result = _tmp3_; #line 422 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 4167 "tracker-sparql-query.c" +#line 4173 "tracker-sparql-query.c" } #line 420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" case TRACKER_SPARQL_TOKEN_TYPE_CONSTRUCT: -#line 4171 "tracker-sparql-query.c" +#line 4177 "tracker-sparql-query.c" { GError* _tmp4_ = NULL; #line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -4180,7 +4186,7 @@ g_propagate_error (error, _inner_error_); #line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4184 "tracker-sparql-query.c" +#line 4190 "tracker-sparql-query.c" } else { #line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -4188,12 +4194,12 @@ g_clear_error (&_inner_error_); #line 424 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4192 "tracker-sparql-query.c" +#line 4198 "tracker-sparql-query.c" } } #line 420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" case TRACKER_SPARQL_TOKEN_TYPE_DESCRIBE: -#line 4197 "tracker-sparql-query.c" +#line 4203 "tracker-sparql-query.c" { GError* _tmp5_ = NULL; #line 426 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -4206,7 +4212,7 @@ g_propagate_error (error, _inner_error_); #line 426 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4210 "tracker-sparql-query.c" +#line 4216 "tracker-sparql-query.c" } else { #line 426 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -4214,12 +4220,12 @@ g_clear_error (&_inner_error_); #line 426 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4218 "tracker-sparql-query.c" +#line 4224 "tracker-sparql-query.c" } } #line 420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" case TRACKER_SPARQL_TOKEN_TYPE_ASK: -#line 4223 "tracker-sparql-query.c" +#line 4229 "tracker-sparql-query.c" { gboolean _tmp6_; TrackerDBCursor* _tmp7_ = NULL; @@ -4238,7 +4244,7 @@ g_propagate_error (error, _inner_error_); #line 428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4242 "tracker-sparql-query.c" +#line 4248 "tracker-sparql-query.c" } else { #line 428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -4246,14 +4252,14 @@ g_clear_error (&_inner_error_); #line 428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4250 "tracker-sparql-query.c" +#line 4256 "tracker-sparql-query.c" } } #line 428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" result = _tmp8_; #line 428 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 4257 "tracker-sparql-query.c" +#line 4263 "tracker-sparql-query.c" } #line 420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" case TRACKER_SPARQL_TOKEN_TYPE_INSERT: @@ -4261,7 +4267,7 @@ case TRACKER_SPARQL_TOKEN_TYPE_DELETE: #line 420 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" case TRACKER_SPARQL_TOKEN_TYPE_DROP: -#line 4265 "tracker-sparql-query.c" +#line 4271 "tracker-sparql-query.c" { GError* _tmp9_ = NULL; #line 432 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -4274,7 +4280,7 @@ g_propagate_error (error, _inner_error_); #line 432 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4278 "tracker-sparql-query.c" +#line 4284 "tracker-sparql-query.c" } else { #line 432 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -4282,7 +4288,7 @@ g_clear_error (&_inner_error_); #line 432 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4286 "tracker-sparql-query.c" +#line 4292 "tracker-sparql-query.c" } } default: @@ -4298,7 +4304,7 @@ g_propagate_error (error, _inner_error_); #line 434 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4302 "tracker-sparql-query.c" +#line 4308 "tracker-sparql-query.c" } else { #line 434 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -4306,7 +4312,7 @@ g_clear_error (&_inner_error_); #line 434 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4310 "tracker-sparql-query.c" +#line 4316 "tracker-sparql-query.c" } } } @@ -4363,7 +4369,7 @@ _g_variant_unref0 (_result_); #line 443 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4367 "tracker-sparql-query.c" +#line 4373 "tracker-sparql-query.c" } #line 446 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp6_ = self->priv->prefix_map; @@ -4375,7 +4381,7 @@ g_hash_table_insert (_tmp6_, _tmp7_, _tmp8_); #line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp10_ = tracker_ontologies_get_namespaces (&_tmp9_); -#line 4379 "tracker-sparql-query.c" +#line 4385 "tracker-sparql-query.c" { TrackerNamespace** ns_collection = NULL; gint ns_collection_length1 = 0; @@ -4387,14 +4393,14 @@ ns_collection_length1 = _tmp9_; #line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" for (ns_it = 0; ns_it < _tmp9_; ns_it = ns_it + 1) { -#line 4391 "tracker-sparql-query.c" +#line 4397 "tracker-sparql-query.c" TrackerNamespace* _tmp11_; TrackerNamespace* ns = NULL; #line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp11_ = _g_object_ref0 (ns_collection[ns_it]); #line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" ns = _tmp11_; -#line 4398 "tracker-sparql-query.c" +#line 4404 "tracker-sparql-query.c" { TrackerNamespace* _tmp12_; const gchar* _tmp13_; @@ -4416,7 +4422,7 @@ _tmp14_ = _tmp13_; #line 449 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp14_ == NULL) { -#line 4420 "tracker-sparql-query.c" +#line 4426 "tracker-sparql-query.c" TrackerNamespace* _tmp15_; const gchar* _tmp16_; const gchar* _tmp17_; @@ -4432,7 +4438,7 @@ _g_object_unref0 (ns); #line 451 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" continue; -#line 4436 "tracker-sparql-query.c" +#line 4442 "tracker-sparql-query.c" } #line 453 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp18_ = self->priv->prefix_map; @@ -4456,7 +4462,7 @@ g_hash_table_insert (_tmp18_, _tmp22_, _tmp26_); #line 448 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_object_unref0 (ns); -#line 4460 "tracker-sparql-query.c" +#line 4466 "tracker-sparql-query.c" } } } @@ -4470,7 +4476,7 @@ _g_variant_unref0 (_result_); #line 456 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4474 "tracker-sparql-query.c" +#line 4480 "tracker-sparql-query.c" } #line 459 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" ublank_nodes = NULL; @@ -4478,7 +4484,7 @@ _tmp27_ = blank; #line 461 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp27_) { -#line 4482 "tracker-sparql-query.c" +#line 4488 "tracker-sparql-query.c" GVariantBuilder* _tmp28_; #line 462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp28_ = g_variant_builder_new ((const GVariantType*) "aaa{ss}"); @@ -4486,11 +4492,11 @@ _g_variant_builder_unref0 (ublank_nodes); #line 462 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" ublank_nodes = _tmp28_; -#line 4490 "tracker-sparql-query.c" +#line 4496 "tracker-sparql-query.c" } #line 465 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" while (TRUE) { -#line 4494 "tracker-sparql-query.c" +#line 4500 "tracker-sparql-query.c" TrackerSparqlTokenType _tmp29_ = 0; TrackerSparqlTokenType _tmp30_ = 0; #line 465 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -4499,7 +4505,7 @@ if (!(_tmp29_ != TRACKER_SPARQL_TOKEN_TYPE_EOF)) { #line 465 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 4503 "tracker-sparql-query.c" +#line 4509 "tracker-sparql-query.c" } #line 466 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp30_ = tracker_sparql_query_current (self); @@ -4511,14 +4517,14 @@ case TRACKER_SPARQL_TOKEN_TYPE_INSERT: #line 466 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" case TRACKER_SPARQL_TOKEN_TYPE_DELETE: -#line 4515 "tracker-sparql-query.c" +#line 4521 "tracker-sparql-query.c" { gboolean _tmp31_; #line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp31_ = blank; #line 470 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp31_) { -#line 4522 "tracker-sparql-query.c" +#line 4528 "tracker-sparql-query.c" GVariantBuilder* _tmp32_; GVariantBuilder* _tmp33_; GVariantBuilder* _tmp34_; @@ -4540,13 +4546,13 @@ _g_variant_unref0 (_result_); #line 472 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4544 "tracker-sparql-query.c" +#line 4550 "tracker-sparql-query.c" } #line 473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp34_ = ublank_nodes; #line 473 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_variant_builder_close (_tmp34_); -#line 4550 "tracker-sparql-query.c" +#line 4556 "tracker-sparql-query.c" } else { #line 475 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_query_execute_insert_or_delete (self, NULL, &_inner_error_); @@ -4560,16 +4566,16 @@ _g_variant_unref0 (_result_); #line 475 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4564 "tracker-sparql-query.c" +#line 4570 "tracker-sparql-query.c" } } #line 477 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 4569 "tracker-sparql-query.c" +#line 4575 "tracker-sparql-query.c" } #line 466 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" case TRACKER_SPARQL_TOKEN_TYPE_DROP: -#line 4573 "tracker-sparql-query.c" +#line 4579 "tracker-sparql-query.c" { GError* _tmp35_ = NULL; #line 479 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -4584,7 +4590,7 @@ _g_variant_unref0 (_result_); #line 479 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4588 "tracker-sparql-query.c" +#line 4594 "tracker-sparql-query.c" } #line 466 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" case TRACKER_SPARQL_TOKEN_TYPE_SELECT: @@ -4594,7 +4600,7 @@ case TRACKER_SPARQL_TOKEN_TYPE_DESCRIBE: #line 466 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" case TRACKER_SPARQL_TOKEN_TYPE_ASK: -#line 4598 "tracker-sparql-query.c" +#line 4604 "tracker-sparql-query.c" { GError* _tmp36_ = NULL; #line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -4609,7 +4615,7 @@ _g_variant_unref0 (_result_); #line 484 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4613 "tracker-sparql-query.c" +#line 4619 "tracker-sparql-query.c" } default: { @@ -4626,7 +4632,7 @@ _g_variant_unref0 (_result_); #line 486 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4630 "tracker-sparql-query.c" +#line 4636 "tracker-sparql-query.c" } } #line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -4641,14 +4647,14 @@ _g_variant_unref0 (_result_); #line 491 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4645 "tracker-sparql-query.c" +#line 4651 "tracker-sparql-query.c" } } #line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp38_ = blank; #line 494 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp38_) { -#line 4652 "tracker-sparql-query.c" +#line 4658 "tracker-sparql-query.c" GVariantBuilder* _tmp39_; GVariant* _tmp40_ = NULL; GVariant* _tmp41_; @@ -4662,7 +4668,7 @@ _g_variant_unref0 (_result_); #line 495 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _result_ = _tmp41_; -#line 4666 "tracker-sparql-query.c" +#line 4672 "tracker-sparql-query.c" } #line 498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" result = _result_; @@ -4670,7 +4676,7 @@ _g_variant_builder_unref0 (ublank_nodes); #line 498 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 4674 "tracker-sparql-query.c" +#line 4680 "tracker-sparql-query.c" } @@ -4705,11 +4711,11 @@ if (_tmp3_) { #line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp2_ = TRACKER_DB_STATEMENT_CACHE_TYPE_NONE; -#line 4709 "tracker-sparql-query.c" +#line 4715 "tracker-sparql-query.c" } else { #line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp2_ = TRACKER_DB_STATEMENT_CACHE_TYPE_SELECT; -#line 4713 "tracker-sparql-query.c" +#line 4719 "tracker-sparql-query.c" } #line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp4_ = iface; @@ -4731,7 +4737,7 @@ _g_object_unref0 (iface); #line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4735 "tracker-sparql-query.c" +#line 4741 "tracker-sparql-query.c" } else { #line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_object_unref0 (iface); @@ -4741,14 +4747,14 @@ g_clear_error (&_inner_error_); #line 503 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4745 "tracker-sparql-query.c" +#line 4751 "tracker-sparql-query.c" } } #line 506 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" i = 0; #line 507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp8_ = self->bindings; -#line 4752 "tracker-sparql-query.c" +#line 4758 "tracker-sparql-query.c" { GList* binding_collection = NULL; GList* binding_it = NULL; @@ -4756,14 +4762,14 @@ binding_collection = _tmp8_; #line 507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" for (binding_it = binding_collection; binding_it != NULL; binding_it = binding_it->next) { -#line 4760 "tracker-sparql-query.c" +#line 4766 "tracker-sparql-query.c" TrackerSparqlLiteralBinding* _tmp9_; TrackerSparqlLiteralBinding* binding = NULL; #line 507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp9_ = _g_object_ref0 ((TrackerSparqlLiteralBinding*) binding_it->data); #line 507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" binding = _tmp9_; -#line 4767 "tracker-sparql-query.c" +#line 4773 "tracker-sparql-query.c" { TrackerSparqlLiteralBinding* _tmp10_; TrackerPropertyType _tmp11_; @@ -4774,7 +4780,7 @@ _tmp11_ = ((TrackerSparqlDataBinding*) _tmp10_)->data_type; #line 508 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp11_ == TRACKER_PROPERTY_TYPE_BOOLEAN) { -#line 4778 "tracker-sparql-query.c" +#line 4784 "tracker-sparql-query.c" gboolean _tmp12_ = FALSE; TrackerSparqlLiteralBinding* _tmp13_; const gchar* _tmp14_; @@ -4787,7 +4793,7 @@ if (g_strcmp0 (_tmp14_, "true") == 0) { #line 509 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp12_ = TRUE; -#line 4791 "tracker-sparql-query.c" +#line 4797 "tracker-sparql-query.c" } else { TrackerSparqlLiteralBinding* _tmp15_; const gchar* _tmp16_; @@ -4797,13 +4803,13 @@ _tmp16_ = _tmp15_->literal; #line 509 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp12_ = g_strcmp0 (_tmp16_, "1") == 0; -#line 4801 "tracker-sparql-query.c" +#line 4807 "tracker-sparql-query.c" } #line 509 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp17_ = _tmp12_; #line 509 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp17_) { -#line 4807 "tracker-sparql-query.c" +#line 4813 "tracker-sparql-query.c" TrackerDBStatement* _tmp18_; gint _tmp19_; #line 510 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -4812,7 +4818,7 @@ _tmp19_ = i; #line 510 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_db_statement_bind_int (_tmp18_, _tmp19_, 1); -#line 4816 "tracker-sparql-query.c" +#line 4822 "tracker-sparql-query.c" } else { gboolean _tmp20_ = FALSE; TrackerSparqlLiteralBinding* _tmp21_; @@ -4826,7 +4832,7 @@ if (g_strcmp0 (_tmp22_, "false") == 0) { #line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp20_ = TRUE; -#line 4830 "tracker-sparql-query.c" +#line 4836 "tracker-sparql-query.c" } else { TrackerSparqlLiteralBinding* _tmp23_; const gchar* _tmp24_; @@ -4836,13 +4842,13 @@ _tmp24_ = _tmp23_->literal; #line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp20_ = g_strcmp0 (_tmp24_, "0") == 0; -#line 4840 "tracker-sparql-query.c" +#line 4846 "tracker-sparql-query.c" } #line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp25_ = _tmp20_; #line 511 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp25_) { -#line 4846 "tracker-sparql-query.c" +#line 4852 "tracker-sparql-query.c" TrackerDBStatement* _tmp26_; gint _tmp27_; #line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -4851,7 +4857,7 @@ _tmp27_ = i; #line 512 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_db_statement_bind_int (_tmp26_, _tmp27_, 0); -#line 4855 "tracker-sparql-query.c" +#line 4861 "tracker-sparql-query.c" } else { TrackerSparqlLiteralBinding* _tmp28_; const gchar* _tmp29_; @@ -4887,7 +4893,7 @@ _g_object_unref0 (iface); #line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4891 "tracker-sparql-query.c" +#line 4897 "tracker-sparql-query.c" } else { #line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_object_unref0 (binding); @@ -4901,7 +4907,7 @@ g_clear_error (&_inner_error_); #line 514 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4905 "tracker-sparql-query.c" +#line 4911 "tracker-sparql-query.c" } } } @@ -4914,7 +4920,7 @@ _tmp35_ = ((TrackerSparqlDataBinding*) _tmp34_)->data_type; #line 516 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp35_ == TRACKER_PROPERTY_TYPE_DATE) { -#line 4918 "tracker-sparql-query.c" +#line 4924 "tracker-sparql-query.c" TrackerSparqlLiteralBinding* _tmp36_; const gchar* _tmp37_; gchar* _tmp38_; @@ -4954,7 +4960,7 @@ _g_object_unref0 (iface); #line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4958 "tracker-sparql-query.c" +#line 4964 "tracker-sparql-query.c" } else { #line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_object_unref0 (binding); @@ -4968,7 +4974,7 @@ g_clear_error (&_inner_error_); #line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 4972 "tracker-sparql-query.c" +#line 4978 "tracker-sparql-query.c" } } #line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -4977,7 +4983,7 @@ _tmp44_ = i; #line 517 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_db_statement_bind_int (_tmp43_, _tmp44_, (gint) _tmp42_); -#line 4981 "tracker-sparql-query.c" +#line 4987 "tracker-sparql-query.c" } else { TrackerSparqlLiteralBinding* _tmp45_; TrackerPropertyType _tmp46_; @@ -4987,7 +4993,7 @@ _tmp46_ = ((TrackerSparqlDataBinding*) _tmp45_)->data_type; #line 518 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp46_ == TRACKER_PROPERTY_TYPE_DATETIME) { -#line 4991 "tracker-sparql-query.c" +#line 4997 "tracker-sparql-query.c" TrackerSparqlLiteralBinding* _tmp47_; const gchar* _tmp48_; gdouble _tmp49_ = 0.0; @@ -5016,7 +5022,7 @@ _g_object_unref0 (iface); #line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5020 "tracker-sparql-query.c" +#line 5026 "tracker-sparql-query.c" } else { #line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_object_unref0 (binding); @@ -5030,7 +5036,7 @@ g_clear_error (&_inner_error_); #line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5034 "tracker-sparql-query.c" +#line 5040 "tracker-sparql-query.c" } } #line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -5039,7 +5045,7 @@ _tmp52_ = i; #line 519 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_db_statement_bind_double (_tmp51_, _tmp52_, _tmp50_); -#line 5043 "tracker-sparql-query.c" +#line 5049 "tracker-sparql-query.c" } else { TrackerSparqlLiteralBinding* _tmp53_; TrackerPropertyType _tmp54_; @@ -5049,7 +5055,7 @@ _tmp54_ = ((TrackerSparqlDataBinding*) _tmp53_)->data_type; #line 520 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp54_ == TRACKER_PROPERTY_TYPE_INTEGER) { -#line 5053 "tracker-sparql-query.c" +#line 5059 "tracker-sparql-query.c" TrackerDBStatement* _tmp55_; gint _tmp56_; TrackerSparqlLiteralBinding* _tmp57_; @@ -5067,7 +5073,7 @@ _tmp59_ = atoi (_tmp58_); #line 521 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_db_statement_bind_int (_tmp55_, _tmp56_, _tmp59_); -#line 5071 "tracker-sparql-query.c" +#line 5077 "tracker-sparql-query.c" } else { TrackerDBStatement* _tmp60_; gint _tmp61_; @@ -5083,7 +5089,7 @@ _tmp63_ = _tmp62_->literal; #line 523 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_db_statement_bind_text (_tmp60_, _tmp61_, _tmp63_); -#line 5087 "tracker-sparql-query.c" +#line 5093 "tracker-sparql-query.c" } } } @@ -5094,7 +5100,7 @@ i = _tmp64_ + 1; #line 507 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_object_unref0 (binding); -#line 5098 "tracker-sparql-query.c" +#line 5104 "tracker-sparql-query.c" } } } @@ -5104,7 +5110,7 @@ _g_object_unref0 (iface); #line 528 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 5108 "tracker-sparql-query.c" +#line 5114 "tracker-sparql-query.c" } @@ -5140,7 +5146,7 @@ g_propagate_error (error, _inner_error_); #line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5144 "tracker-sparql-query.c" +#line 5150 "tracker-sparql-query.c" } else { #line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -5148,7 +5154,7 @@ g_clear_error (&_inner_error_); #line 532 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5152 "tracker-sparql-query.c" +#line 5158 "tracker-sparql-query.c" } } #line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -5177,7 +5183,7 @@ _g_object_unref0 (stmt); #line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5181 "tracker-sparql-query.c" +#line 5187 "tracker-sparql-query.c" } else { #line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_object_unref0 (stmt); @@ -5187,7 +5193,7 @@ g_clear_error (&_inner_error_); #line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5191 "tracker-sparql-query.c" +#line 5197 "tracker-sparql-query.c" } } #line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -5196,7 +5202,7 @@ _g_object_unref0 (stmt); #line 534 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 5200 "tracker-sparql-query.c" +#line 5206 "tracker-sparql-query.c" } @@ -5237,7 +5243,7 @@ _g_string_free0 (sql); #line 542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5241 "tracker-sparql-query.c" +#line 5247 "tracker-sparql-query.c" } else { #line 542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_string_free0 (sql); @@ -5247,7 +5253,7 @@ g_clear_error (&_inner_error_); #line 542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5251 "tracker-sparql-query.c" +#line 5257 "tracker-sparql-query.c" } } #line 542 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -5266,7 +5272,7 @@ _g_string_free0 (sql); #line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5270 "tracker-sparql-query.c" +#line 5276 "tracker-sparql-query.c" } else { #line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_string_free0 (sql); @@ -5276,7 +5282,7 @@ g_clear_error (&_inner_error_); #line 544 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5280 "tracker-sparql-query.c" +#line 5286 "tracker-sparql-query.c" } } #line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -5293,15 +5299,15 @@ if (context) { #line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" *context = _vala_context; -#line 5297 "tracker-sparql-query.c" +#line 5303 "tracker-sparql-query.c" } else { #line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tracker_sparql_context_unref0 (_vala_context); -#line 5301 "tracker-sparql-query.c" +#line 5307 "tracker-sparql-query.c" } #line 546 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 5305 "tracker-sparql-query.c" +#line 5311 "tracker-sparql-query.c" } @@ -5341,7 +5347,7 @@ _tracker_sparql_context_unref0 (context); #line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5345 "tracker-sparql-query.c" +#line 5351 "tracker-sparql-query.c" } else { #line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tracker_sparql_context_unref0 (context); @@ -5351,7 +5357,7 @@ g_clear_error (&_inner_error_); #line 551 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5355 "tracker-sparql-query.c" +#line 5361 "tracker-sparql-query.c" } } #line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -5384,7 +5390,7 @@ _tracker_sparql_context_unref0 (context); #line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5388 "tracker-sparql-query.c" +#line 5394 "tracker-sparql-query.c" } else { #line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (sql); @@ -5396,7 +5402,7 @@ g_clear_error (&_inner_error_); #line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5400 "tracker-sparql-query.c" +#line 5406 "tracker-sparql-query.c" } } #line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -5407,7 +5413,7 @@ _tracker_sparql_context_unref0 (context); #line 553 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 5411 "tracker-sparql-query.c" +#line 5417 "tracker-sparql-query.c" } @@ -5469,7 +5475,7 @@ _g_string_free0 (pattern_sql); #line 565 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5473 "tracker-sparql-query.c" +#line 5479 "tracker-sparql-query.c" } else { #line 565 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_string_free0 (sql); @@ -5481,7 +5487,7 @@ g_clear_error (&_inner_error_); #line 565 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5485 "tracker-sparql-query.c" +#line 5491 "tracker-sparql-query.c" } } #line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -5498,7 +5504,7 @@ _g_string_free0 (pattern_sql); #line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5502 "tracker-sparql-query.c" +#line 5508 "tracker-sparql-query.c" } else { #line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_string_free0 (sql); @@ -5510,7 +5516,7 @@ g_clear_error (&_inner_error_); #line 567 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5514 "tracker-sparql-query.c" +#line 5520 "tracker-sparql-query.c" } } #line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -5533,7 +5539,7 @@ _g_string_free0 (pattern_sql); #line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5537 "tracker-sparql-query.c" +#line 5543 "tracker-sparql-query.c" } else { #line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_string_free0 (sql); @@ -5545,7 +5551,7 @@ g_clear_error (&_inner_error_); #line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5549 "tracker-sparql-query.c" +#line 5555 "tracker-sparql-query.c" } } #line 569 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -5580,7 +5586,7 @@ _g_string_free0 (pattern_sql); #line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5584 "tracker-sparql-query.c" +#line 5590 "tracker-sparql-query.c" } else { #line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_string_free0 (sql); @@ -5592,14 +5598,14 @@ g_clear_error (&_inner_error_); #line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5596 "tracker-sparql-query.c" +#line 5602 "tracker-sparql-query.c" } } #line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp15_) { #line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp13_ = TRUE; -#line 5603 "tracker-sparql-query.c" +#line 5609 "tracker-sparql-query.c" } else { gboolean _tmp16_ = FALSE; gboolean _tmp17_; @@ -5619,7 +5625,7 @@ _g_string_free0 (pattern_sql); #line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5623 "tracker-sparql-query.c" +#line 5629 "tracker-sparql-query.c" } else { #line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_string_free0 (sql); @@ -5631,12 +5637,12 @@ g_clear_error (&_inner_error_); #line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5635 "tracker-sparql-query.c" +#line 5641 "tracker-sparql-query.c" } } #line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp13_ = _tmp17_; -#line 5640 "tracker-sparql-query.c" +#line 5646 "tracker-sparql-query.c" } #line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp18_ = _tmp13_; @@ -5644,7 +5650,7 @@ if (_tmp18_) { #line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp12_ = TRUE; -#line 5648 "tracker-sparql-query.c" +#line 5654 "tracker-sparql-query.c" } else { gboolean _tmp19_ = FALSE; gboolean _tmp20_; @@ -5664,7 +5670,7 @@ _g_string_free0 (pattern_sql); #line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5668 "tracker-sparql-query.c" +#line 5674 "tracker-sparql-query.c" } else { #line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_string_free0 (sql); @@ -5676,12 +5682,12 @@ g_clear_error (&_inner_error_); #line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5680 "tracker-sparql-query.c" +#line 5686 "tracker-sparql-query.c" } } #line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp12_ = _tmp20_; -#line 5685 "tracker-sparql-query.c" +#line 5691 "tracker-sparql-query.c" } #line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp21_ = _tmp12_; @@ -5689,7 +5695,7 @@ if (_tmp21_) { #line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp11_ = TRUE; -#line 5693 "tracker-sparql-query.c" +#line 5699 "tracker-sparql-query.c" } else { gboolean _tmp22_ = FALSE; gboolean _tmp23_; @@ -5709,7 +5715,7 @@ _g_string_free0 (pattern_sql); #line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5713 "tracker-sparql-query.c" +#line 5719 "tracker-sparql-query.c" } else { #line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_string_free0 (sql); @@ -5721,18 +5727,18 @@ g_clear_error (&_inner_error_); #line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5725 "tracker-sparql-query.c" +#line 5731 "tracker-sparql-query.c" } } #line 576 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp11_ = _tmp23_; -#line 5730 "tracker-sparql-query.c" +#line 5736 "tracker-sparql-query.c" } #line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp24_ = _tmp11_; #line 575 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp24_) { -#line 5736 "tracker-sparql-query.c" +#line 5742 "tracker-sparql-query.c" TrackerSparqlTokenType _tmp25_ = 0; const gchar* _tmp26_ = NULL; gchar* _tmp27_ = NULL; @@ -5765,7 +5771,7 @@ _g_string_free0 (pattern_sql); #line 577 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5769 "tracker-sparql-query.c" +#line 5775 "tracker-sparql-query.c" } else { #line 577 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_string_free0 (sql); @@ -5777,7 +5783,7 @@ g_clear_error (&_inner_error_); #line 577 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5781 "tracker-sparql-query.c" +#line 5787 "tracker-sparql-query.c" } } #line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -5794,7 +5800,7 @@ _g_string_free0 (pattern_sql); #line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5798 "tracker-sparql-query.c" +#line 5804 "tracker-sparql-query.c" } else { #line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_string_free0 (sql); @@ -5806,7 +5812,7 @@ g_clear_error (&_inner_error_); #line 580 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5810 "tracker-sparql-query.c" +#line 5816 "tracker-sparql-query.c" } } #line 582 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -5833,7 +5839,7 @@ _g_string_free0 (pattern_sql); #line 584 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 5837 "tracker-sparql-query.c" +#line 5843 "tracker-sparql-query.c" } @@ -5867,7 +5873,7 @@ g_propagate_error (error, _inner_error_); #line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5871 "tracker-sparql-query.c" +#line 5877 "tracker-sparql-query.c" } else { #line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -5875,7 +5881,7 @@ g_clear_error (&_inner_error_); #line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5879 "tracker-sparql-query.c" +#line 5885 "tracker-sparql-query.c" } } #line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -5918,7 +5924,7 @@ g_propagate_error (error, _inner_error_); #line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5922 "tracker-sparql-query.c" +#line 5928 "tracker-sparql-query.c" } else { #line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -5926,14 +5932,14 @@ g_clear_error (&_inner_error_); #line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 5930 "tracker-sparql-query.c" +#line 5936 "tracker-sparql-query.c" } } #line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" result = _tmp10_; #line 588 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 5937 "tracker-sparql-query.c" +#line 5943 "tracker-sparql-query.c" } @@ -5955,7 +5961,7 @@ g_propagate_error (error, _inner_error_); #line 592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 5959 "tracker-sparql-query.c" +#line 5965 "tracker-sparql-query.c" } else { #line 592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -5963,12 +5969,12 @@ g_clear_error (&_inner_error_); #line 592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 5967 "tracker-sparql-query.c" +#line 5973 "tracker-sparql-query.c" } } #line 592 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp1_) { -#line 5972 "tracker-sparql-query.c" +#line 5978 "tracker-sparql-query.c" gchar* _tmp2_ = NULL; #line 593 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp2_ = tracker_sparql_query_get_last_string (self, 1); @@ -5976,7 +5982,7 @@ _g_free0 (self->priv->current_graph); #line 593 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->priv->current_graph = _tmp2_; -#line 5980 "tracker-sparql-query.c" +#line 5986 "tracker-sparql-query.c" } else { gboolean _tmp3_ = FALSE; gboolean _tmp4_; @@ -5992,7 +5998,7 @@ g_propagate_error (error, _inner_error_); #line 594 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 5996 "tracker-sparql-query.c" +#line 6002 "tracker-sparql-query.c" } else { #line 594 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -6000,12 +6006,12 @@ g_clear_error (&_inner_error_); #line 594 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6004 "tracker-sparql-query.c" +#line 6010 "tracker-sparql-query.c" } } #line 594 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp4_) { -#line 6009 "tracker-sparql-query.c" +#line 6015 "tracker-sparql-query.c" gchar* _tmp5_ = NULL; gchar* ns; const gchar* _tmp6_; @@ -6032,7 +6038,7 @@ _g_free0 (ns); #line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6036 "tracker-sparql-query.c" +#line 6042 "tracker-sparql-query.c" } else { #line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (ns); @@ -6042,7 +6048,7 @@ g_clear_error (&_inner_error_); #line 596 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6046 "tracker-sparql-query.c" +#line 6052 "tracker-sparql-query.c" } } #line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -6075,7 +6081,7 @@ _g_free0 (ns); #line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6079 "tracker-sparql-query.c" +#line 6085 "tracker-sparql-query.c" } else { #line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (ns); @@ -6085,7 +6091,7 @@ g_clear_error (&_inner_error_); #line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6089 "tracker-sparql-query.c" +#line 6095 "tracker-sparql-query.c" } } #line 597 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -6094,7 +6100,7 @@ self->priv->current_graph = _tmp13_; #line 594 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (ns); -#line 6098 "tracker-sparql-query.c" +#line 6104 "tracker-sparql-query.c" } else { gchar* _tmp14_ = NULL; gchar* _tmp15_; @@ -6113,7 +6119,7 @@ g_propagate_error (error, _inner_error_); #line 599 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6117 "tracker-sparql-query.c" +#line 6123 "tracker-sparql-query.c" } else { #line 599 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -6121,7 +6127,7 @@ g_clear_error (&_inner_error_); #line 599 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6125 "tracker-sparql-query.c" +#line 6131 "tracker-sparql-query.c" } } #line 600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -6150,7 +6156,7 @@ g_propagate_error (error, _inner_error_); #line 600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6154 "tracker-sparql-query.c" +#line 6160 "tracker-sparql-query.c" } else { #line 600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -6158,14 +6164,14 @@ g_clear_error (&_inner_error_); #line 600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6162 "tracker-sparql-query.c" +#line 6168 "tracker-sparql-query.c" } } #line 600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (self->priv->current_graph); #line 600 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->priv->current_graph = _tmp20_; -#line 6169 "tracker-sparql-query.c" +#line 6175 "tracker-sparql-query.c" } } } @@ -6182,7 +6188,7 @@ g_variant_builder_init (&_tmp131_, G_VARIANT_TYPE ("a{ss}")); #line 745 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" while (g_hash_table_iter_next (&_tmp132_, &_tmp133_, &_tmp134_)) { -#line 6186 "tracker-sparql-query.c" +#line 6192 "tracker-sparql-query.c" gchar* _key; gchar* _value; #line 745 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -6191,11 +6197,11 @@ _value = (gchar*) _tmp134_; #line 745 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_variant_builder_add (&_tmp131_, "{?*}", g_variant_new_string (_key), g_variant_new_string (_value)); -#line 6195 "tracker-sparql-query.c" +#line 6201 "tracker-sparql-query.c" } #line 745 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return g_variant_ref_sink (g_variant_builder_end (&_tmp131_)); -#line 6199 "tracker-sparql-query.c" +#line 6205 "tracker-sparql-query.c" } @@ -6259,7 +6265,7 @@ g_propagate_error (error, _inner_error_); #line 609 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6263 "tracker-sparql-query.c" +#line 6269 "tracker-sparql-query.c" } #line 609 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp1_) { @@ -6271,14 +6277,14 @@ g_propagate_error (error, _inner_error_); #line 610 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6275 "tracker-sparql-query.c" +#line 6281 "tracker-sparql-query.c" } } else { #line 612 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (self->priv->current_graph); #line 612 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->priv->current_graph = NULL; -#line 6282 "tracker-sparql-query.c" +#line 6288 "tracker-sparql-query.c" } #line 618 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp2_ = tracker_sparql_query_accept (self, TRACKER_SPARQL_TOKEN_TYPE_INSERT, &_inner_error_); @@ -6290,11 +6296,11 @@ g_propagate_error (error, _inner_error_); #line 618 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6294 "tracker-sparql-query.c" +#line 6300 "tracker-sparql-query.c" } #line 618 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp3_) { -#line 6298 "tracker-sparql-query.c" +#line 6304 "tracker-sparql-query.c" gboolean _tmp4_ = FALSE; gboolean _tmp5_; gboolean _tmp6_; @@ -6315,7 +6321,7 @@ g_propagate_error (error, _inner_error_); #line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6319 "tracker-sparql-query.c" +#line 6325 "tracker-sparql-query.c" } #line 622 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp5_) { @@ -6327,17 +6333,17 @@ g_propagate_error (error, _inner_error_); #line 623 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6331 "tracker-sparql-query.c" +#line 6337 "tracker-sparql-query.c" } #line 624 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" update_statements = TRUE; -#line 6335 "tracker-sparql-query.c" +#line 6341 "tracker-sparql-query.c" } #line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp6_ = update_statements; #line 627 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (!_tmp6_) { -#line 6341 "tracker-sparql-query.c" +#line 6347 "tracker-sparql-query.c" gboolean _tmp7_ = FALSE; gboolean _tmp8_; #line 629 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -6350,17 +6356,17 @@ g_propagate_error (error, _inner_error_); #line 629 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6354 "tracker-sparql-query.c" +#line 6360 "tracker-sparql-query.c" } #line 629 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->priv->silent = _tmp8_; -#line 6358 "tracker-sparql-query.c" +#line 6364 "tracker-sparql-query.c" } #line 632 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp10_ = self->priv->current_graph; #line 632 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp10_ == NULL) { -#line 6364 "tracker-sparql-query.c" +#line 6370 "tracker-sparql-query.c" gboolean _tmp11_ = FALSE; gboolean _tmp12_; #line 632 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -6373,15 +6379,15 @@ g_propagate_error (error, _inner_error_); #line 632 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6377 "tracker-sparql-query.c" +#line 6383 "tracker-sparql-query.c" } #line 632 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp9_ = _tmp12_; -#line 6381 "tracker-sparql-query.c" +#line 6387 "tracker-sparql-query.c" } else { #line 632 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp9_ = FALSE; -#line 6385 "tracker-sparql-query.c" +#line 6391 "tracker-sparql-query.c" } #line 632 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp13_ = _tmp9_; @@ -6395,7 +6401,7 @@ g_propagate_error (error, _inner_error_); #line 633 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6399 "tracker-sparql-query.c" +#line 6405 "tracker-sparql-query.c" } } } else { @@ -6412,7 +6418,7 @@ g_propagate_error (error, _inner_error_); #line 636 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6416 "tracker-sparql-query.c" +#line 6422 "tracker-sparql-query.c" } #line 637 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" delete_statements = TRUE; @@ -6430,7 +6436,7 @@ g_propagate_error (error, _inner_error_); #line 642 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6434 "tracker-sparql-query.c" +#line 6440 "tracker-sparql-query.c" } #line 642 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->priv->silent = _tmp15_; @@ -6438,7 +6444,7 @@ _tmp17_ = self->priv->current_graph; #line 644 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp17_ == NULL) { -#line 6442 "tracker-sparql-query.c" +#line 6448 "tracker-sparql-query.c" gboolean _tmp18_ = FALSE; gboolean _tmp19_; #line 644 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -6451,15 +6457,15 @@ g_propagate_error (error, _inner_error_); #line 644 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6455 "tracker-sparql-query.c" +#line 6461 "tracker-sparql-query.c" } #line 644 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp16_ = _tmp19_; -#line 6459 "tracker-sparql-query.c" +#line 6465 "tracker-sparql-query.c" } else { #line 644 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp16_ = FALSE; -#line 6463 "tracker-sparql-query.c" +#line 6469 "tracker-sparql-query.c" } #line 644 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp20_ = _tmp16_; @@ -6473,7 +6479,7 @@ g_propagate_error (error, _inner_error_); #line 645 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6477 "tracker-sparql-query.c" +#line 6483 "tracker-sparql-query.c" } } } @@ -6481,7 +6487,7 @@ _tmp22_ = self->priv->current_graph; #line 650 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp22_ == NULL) { -#line 6485 "tracker-sparql-query.c" +#line 6491 "tracker-sparql-query.c" gboolean _tmp23_ = FALSE; gboolean _tmp24_; #line 650 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -6494,15 +6500,15 @@ g_propagate_error (error, _inner_error_); #line 650 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6498 "tracker-sparql-query.c" +#line 6504 "tracker-sparql-query.c" } #line 650 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp21_ = _tmp24_; -#line 6502 "tracker-sparql-query.c" +#line 6508 "tracker-sparql-query.c" } else { #line 650 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp21_ = FALSE; -#line 6506 "tracker-sparql-query.c" +#line 6512 "tracker-sparql-query.c" } #line 650 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp25_ = _tmp21_; @@ -6524,7 +6530,7 @@ _tmp29_ = data; #line 658 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (!_tmp29_) { -#line 6528 "tracker-sparql-query.c" +#line 6534 "tracker-sparql-query.c" gboolean _tmp30_ = FALSE; gboolean delete_where; gboolean _tmp31_; @@ -6545,19 +6551,19 @@ _g_string_free0 (pattern_sql); #line 660 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6549 "tracker-sparql-query.c" +#line 6555 "tracker-sparql-query.c" } #line 662 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp31_ = delete_where; #line 662 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp31_) { -#line 6555 "tracker-sparql-query.c" +#line 6561 "tracker-sparql-query.c" TrackerSourceLocation _tmp32_ = {0}; #line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_query_get_location (self, &_tmp32_); #line 663 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" template_location = _tmp32_; -#line 6561 "tracker-sparql-query.c" +#line 6567 "tracker-sparql-query.c" } else { #line 665 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_query_skip_braces (self, &_inner_error_); @@ -6571,7 +6577,7 @@ _g_string_free0 (pattern_sql); #line 665 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6575 "tracker-sparql-query.c" +#line 6581 "tracker-sparql-query.c" } } #line 668 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -6580,7 +6586,7 @@ if (_tmp34_) { #line 668 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp33_ = TRUE; -#line 6584 "tracker-sparql-query.c" +#line 6590 "tracker-sparql-query.c" } else { gboolean _tmp35_ = FALSE; gboolean _tmp36_; @@ -6598,17 +6604,17 @@ _g_string_free0 (pattern_sql); #line 668 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6602 "tracker-sparql-query.c" +#line 6608 "tracker-sparql-query.c" } #line 668 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp33_ = _tmp36_; -#line 6606 "tracker-sparql-query.c" +#line 6612 "tracker-sparql-query.c" } #line 668 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp37_ = _tmp33_; #line 668 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp37_) { -#line 6612 "tracker-sparql-query.c" +#line 6618 "tracker-sparql-query.c" TrackerSparqlPattern* _tmp38_; const gchar* _tmp39_; gchar* _tmp40_; @@ -6645,7 +6651,7 @@ _g_string_free0 (pattern_sql); #line 670 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6649 "tracker-sparql-query.c" +#line 6655 "tracker-sparql-query.c" } #line 670 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tracker_sparql_context_unref0 (self->context); @@ -6657,7 +6663,7 @@ _g_free0 (_tmp45_->current_graph); #line 671 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp45_->current_graph = NULL; -#line 6661 "tracker-sparql-query.c" +#line 6667 "tracker-sparql-query.c" } else { TrackerSparqlContext* _tmp46_; GString* _tmp47_; @@ -6671,7 +6677,7 @@ _tmp47_ = pattern_sql; #line 675 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_string_append (_tmp47_, "SELECT 1"); -#line 6675 "tracker-sparql-query.c" +#line 6681 "tracker-sparql-query.c" } } else { TrackerSparqlContext* _tmp48_; @@ -6686,7 +6692,7 @@ _tmp49_ = pattern_sql; #line 682 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_string_append (_tmp49_, "SELECT 1"); -#line 6690 "tracker-sparql-query.c" +#line 6696 "tracker-sparql-query.c" } #line 685 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_query_get_location (self, &_tmp50_); @@ -6708,7 +6714,7 @@ _tmp54_ = _tmp53_->var_set; #line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp55_ = g_hash_table_get_keys (_tmp54_); -#line 6712 "tracker-sparql-query.c" +#line 6718 "tracker-sparql-query.c" { GList* variable_collection = NULL; GList* variable_it = NULL; @@ -6716,11 +6722,11 @@ variable_collection = _tmp55_; #line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" for (variable_it = variable_collection; variable_it != NULL; variable_it = variable_it->next) { -#line 6720 "tracker-sparql-query.c" +#line 6726 "tracker-sparql-query.c" TrackerSparqlVariable* variable = NULL; #line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" variable = (TrackerSparqlVariable*) variable_it->data; -#line 6724 "tracker-sparql-query.c" +#line 6730 "tracker-sparql-query.c" { gint _tmp56_; TrackerSparqlVariable* _tmp58_; @@ -6743,13 +6749,13 @@ _tmp56_ = var_idx; #line 693 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp56_ > 0) { -#line 6747 "tracker-sparql-query.c" +#line 6753 "tracker-sparql-query.c" GString* _tmp57_; #line 694 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp57_ = sql; #line 694 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_string_append (_tmp57_, ", "); -#line 6753 "tracker-sparql-query.c" +#line 6759 "tracker-sparql-query.c" } #line 697 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp58_ = variable; @@ -6757,7 +6763,7 @@ _tmp59_ = _tmp58_->binding; #line 697 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp59_ == NULL) { -#line 6761 "tracker-sparql-query.c" +#line 6767 "tracker-sparql-query.c" TrackerSparqlVariable* _tmp60_; const gchar* _tmp61_; const gchar* _tmp62_; @@ -6795,7 +6801,7 @@ _g_string_free0 (pattern_sql); #line 698 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6799 "tracker-sparql-query.c" +#line 6805 "tracker-sparql-query.c" } #line 700 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp67_ = sql; @@ -6831,24 +6837,24 @@ var_idx = _tmp80_ + 1; #line 702 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_hash_table_insert (_tmp75_, _tmp79_, GINT_TO_POINTER (_tmp80_)); -#line 6835 "tracker-sparql-query.c" +#line 6841 "tracker-sparql-query.c" } } #line 692 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_list_free0 (variable_collection); -#line 6840 "tracker-sparql-query.c" +#line 6846 "tracker-sparql-query.c" } #line 705 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp81_ = var_idx; #line 705 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp81_ == 0) { -#line 6846 "tracker-sparql-query.c" +#line 6852 "tracker-sparql-query.c" GString* _tmp82_; #line 706 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp82_ = sql; #line 706 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_string_append (_tmp82_, "1"); -#line 6852 "tracker-sparql-query.c" +#line 6858 "tracker-sparql-query.c" } #line 710 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp83_ = sql; @@ -6886,7 +6892,7 @@ _g_string_free0 (pattern_sql); #line 714 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6890 "tracker-sparql-query.c" +#line 6896 "tracker-sparql-query.c" } #line 716 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp91_ = delete_statements; @@ -6900,7 +6906,7 @@ n_solutions = 0; #line 720 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" while (TRUE) { -#line 6904 "tracker-sparql-query.c" +#line 6910 "tracker-sparql-query.c" TrackerDBCursor* _tmp93_; gboolean _tmp94_ = FALSE; gboolean _tmp95_; @@ -6925,13 +6931,13 @@ _g_string_free0 (pattern_sql); #line 720 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 6929 "tracker-sparql-query.c" +#line 6935 "tracker-sparql-query.c" } #line 720 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (!_tmp95_) { #line 720 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 6935 "tracker-sparql-query.c" +#line 6941 "tracker-sparql-query.c" } { gboolean _tmp96_; @@ -6941,7 +6947,7 @@ _tmp96_ = TRUE; #line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" while (TRUE) { -#line 6945 "tracker-sparql-query.c" +#line 6951 "tracker-sparql-query.c" gboolean _tmp97_; gint _tmp99_; TrackerSparqlSolution* _tmp100_; @@ -6957,13 +6963,13 @@ _tmp97_ = _tmp96_; #line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (!_tmp97_) { -#line 6961 "tracker-sparql-query.c" +#line 6967 "tracker-sparql-query.c" gint _tmp98_; #line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp98_ = var_idx; #line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" var_idx = _tmp98_ + 1; -#line 6967 "tracker-sparql-query.c" +#line 6973 "tracker-sparql-query.c" } #line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp96_ = FALSE; @@ -6979,7 +6985,7 @@ if (!(((guint) _tmp99_) < _tmp102_)) { #line 722 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 6983 "tracker-sparql-query.c" +#line 6989 "tracker-sparql-query.c" } #line 723 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp103_ = solution; @@ -6995,32 +7001,32 @@ _tmp108_ = g_strdup (_tmp107_); #line 723 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_ptr_array_add (_tmp104_, _tmp108_); -#line 6999 "tracker-sparql-query.c" +#line 7005 "tracker-sparql-query.c" } } #line 725 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp109_ = n_solutions; #line 725 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" n_solutions = _tmp109_ + 1; -#line 7006 "tracker-sparql-query.c" +#line 7012 "tracker-sparql-query.c" } #line 728 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_object_unref0 (cursor); #line 728 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" cursor = NULL; -#line 7012 "tracker-sparql-query.c" +#line 7018 "tracker-sparql-query.c" { gint i; #line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" i = 0; -#line 7017 "tracker-sparql-query.c" +#line 7023 "tracker-sparql-query.c" { gboolean _tmp110_; #line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp110_ = TRUE; #line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" while (TRUE) { -#line 7024 "tracker-sparql-query.c" +#line 7030 "tracker-sparql-query.c" gboolean _tmp111_; gint _tmp113_; gint _tmp114_; @@ -7042,13 +7048,13 @@ _tmp111_ = _tmp110_; #line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (!_tmp111_) { -#line 7046 "tracker-sparql-query.c" +#line 7052 "tracker-sparql-query.c" gint _tmp112_; #line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp112_ = i; #line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" i = _tmp112_ + 1; -#line 7052 "tracker-sparql-query.c" +#line 7058 "tracker-sparql-query.c" } #line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp110_ = FALSE; @@ -7060,7 +7066,7 @@ if (!(_tmp113_ < _tmp114_)) { #line 731 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 7064 "tracker-sparql-query.c" +#line 7070 "tracker-sparql-query.c" } #line 734 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp115_ = self->priv->base_uuid; @@ -7110,29 +7116,29 @@ _g_string_free0 (pattern_sql); #line 742 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7114 "tracker-sparql-query.c" +#line 7120 "tracker-sparql-query.c" } #line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp126_ = blank; #line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp126_) { -#line 7120 "tracker-sparql-query.c" +#line 7126 "tracker-sparql-query.c" GVariantBuilder* _tmp127_; #line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp127_ = update_blank_nodes; #line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp125_ = _tmp127_ != NULL; -#line 7126 "tracker-sparql-query.c" +#line 7132 "tracker-sparql-query.c" } else { #line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp125_ = FALSE; -#line 7130 "tracker-sparql-query.c" +#line 7136 "tracker-sparql-query.c" } #line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp128_ = _tmp125_; #line 744 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp128_) { -#line 7136 "tracker-sparql-query.c" +#line 7142 "tracker-sparql-query.c" GVariantBuilder* _tmp129_; GHashTable* _tmp130_; GVariant* _tmp135_; @@ -7144,7 +7150,7 @@ _tmp135_ = _variant_new1 (_tmp130_); #line 745 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_variant_builder_add_value (_tmp129_, _tmp135_); -#line 7148 "tracker-sparql-query.c" +#line 7154 "tracker-sparql-query.c" } #line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_data_update_buffer_might_flush (&_inner_error_); @@ -7162,7 +7168,7 @@ _g_string_free0 (pattern_sql); #line 748 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7166 "tracker-sparql-query.c" +#line 7172 "tracker-sparql-query.c" } } } @@ -7175,13 +7181,13 @@ _tmp136_ = data; #line 753 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (!_tmp136_) { -#line 7179 "tracker-sparql-query.c" +#line 7185 "tracker-sparql-query.c" TrackerSourceLocation _tmp137_; #line 755 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp137_ = after_where; #line 755 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_query_set_location (self, &_tmp137_); -#line 7185 "tracker-sparql-query.c" +#line 7191 "tracker-sparql-query.c" } #line 759 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_data_update_buffer_flush (&_inner_error_); @@ -7199,7 +7205,7 @@ _g_string_free0 (pattern_sql); #line 759 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7203 "tracker-sparql-query.c" +#line 7209 "tracker-sparql-query.c" } #line 760 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" __g_list_free__g_object_unref0_0 (self->bindings); @@ -7223,7 +7229,7 @@ _g_string_free0 (sql); #line 604 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_string_free0 (pattern_sql); -#line 7227 "tracker-sparql-query.c" +#line 7233 "tracker-sparql-query.c" } @@ -7259,7 +7265,7 @@ _tmp4_ = ns; #line 767 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp4_ == NULL) { -#line 7263 "tracker-sparql-query.c" +#line 7269 "tracker-sparql-query.c" const gchar* _tmp5_; gchar* _tmp6_ = NULL; gchar* _tmp7_; @@ -7287,7 +7293,7 @@ _g_free0 (ns); #line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 7291 "tracker-sparql-query.c" +#line 7297 "tracker-sparql-query.c" } else { #line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (ns); @@ -7297,7 +7303,7 @@ g_clear_error (&_inner_error_); #line 768 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 7301 "tracker-sparql-query.c" +#line 7307 "tracker-sparql-query.c" } } #line 770 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -7312,7 +7318,7 @@ _g_free0 (ns); #line 770 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 7316 "tracker-sparql-query.c" +#line 7322 "tracker-sparql-query.c" } @@ -7331,7 +7337,7 @@ g_propagate_error (error, _inner_error_); #line 774 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7335 "tracker-sparql-query.c" +#line 7341 "tracker-sparql-query.c" } else { #line 774 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -7339,14 +7345,14 @@ g_clear_error (&_inner_error_); #line 774 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7343 "tracker-sparql-query.c" +#line 7349 "tracker-sparql-query.c" } } #line 775 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" n_braces = 1; #line 776 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" while (TRUE) { -#line 7350 "tracker-sparql-query.c" +#line 7356 "tracker-sparql-query.c" gint _tmp0_; gboolean _tmp1_ = FALSE; gboolean _tmp2_; @@ -7356,7 +7362,7 @@ if (!(_tmp0_ > 0)) { #line 776 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 7360 "tracker-sparql-query.c" +#line 7366 "tracker-sparql-query.c" } #line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp1_ = tracker_sparql_query_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OPEN_BRACE, &_inner_error_); @@ -7370,7 +7376,7 @@ g_propagate_error (error, _inner_error_); #line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7374 "tracker-sparql-query.c" +#line 7380 "tracker-sparql-query.c" } else { #line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -7378,18 +7384,18 @@ g_clear_error (&_inner_error_); #line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7382 "tracker-sparql-query.c" +#line 7388 "tracker-sparql-query.c" } } #line 777 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp2_) { -#line 7387 "tracker-sparql-query.c" +#line 7393 "tracker-sparql-query.c" gint _tmp3_; #line 778 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp3_ = n_braces; #line 778 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" n_braces = _tmp3_ + 1; -#line 7393 "tracker-sparql-query.c" +#line 7399 "tracker-sparql-query.c" } else { gboolean _tmp4_ = FALSE; gboolean _tmp5_; @@ -7405,7 +7411,7 @@ g_propagate_error (error, _inner_error_); #line 779 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7409 "tracker-sparql-query.c" +#line 7415 "tracker-sparql-query.c" } else { #line 779 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -7413,25 +7419,25 @@ g_clear_error (&_inner_error_); #line 779 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7417 "tracker-sparql-query.c" +#line 7423 "tracker-sparql-query.c" } } #line 779 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp5_) { -#line 7422 "tracker-sparql-query.c" +#line 7428 "tracker-sparql-query.c" gint _tmp6_; #line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp6_ = n_braces; #line 780 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" n_braces = _tmp6_ - 1; -#line 7428 "tracker-sparql-query.c" +#line 7434 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp7_ = 0; #line 781 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp7_ = tracker_sparql_query_current (self); #line 781 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp7_ == TRACKER_SPARQL_TOKEN_TYPE_EOF) { -#line 7435 "tracker-sparql-query.c" +#line 7441 "tracker-sparql-query.c" GError* _tmp8_ = NULL; #line 782 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp8_ = tracker_sparql_query_get_error (self, "unexpected end of query, expected }"); @@ -7443,7 +7449,7 @@ g_propagate_error (error, _inner_error_); #line 782 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7447 "tracker-sparql-query.c" +#line 7453 "tracker-sparql-query.c" } else { #line 782 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -7451,7 +7457,7 @@ g_clear_error (&_inner_error_); #line 782 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7455 "tracker-sparql-query.c" +#line 7461 "tracker-sparql-query.c" } } else { #line 785 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -7464,7 +7470,7 @@ g_propagate_error (error, _inner_error_); #line 785 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7468 "tracker-sparql-query.c" +#line 7474 "tracker-sparql-query.c" } else { #line 785 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -7472,7 +7478,7 @@ g_clear_error (&_inner_error_); #line 785 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7476 "tracker-sparql-query.c" +#line 7482 "tracker-sparql-query.c" } } } @@ -7498,7 +7504,7 @@ g_propagate_error (error, _inner_error_); #line 791 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7502 "tracker-sparql-query.c" +#line 7508 "tracker-sparql-query.c" } else { #line 791 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -7506,12 +7512,12 @@ g_clear_error (&_inner_error_); #line 791 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7510 "tracker-sparql-query.c" +#line 7516 "tracker-sparql-query.c" } } #line 793 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" while (TRUE) { -#line 7515 "tracker-sparql-query.c" +#line 7521 "tracker-sparql-query.c" TrackerSparqlTokenType _tmp0_ = 0; gboolean is_null; gboolean _tmp1_ = FALSE; @@ -7522,7 +7528,7 @@ if (!(_tmp0_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACE)) { #line 793 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 7526 "tracker-sparql-query.c" +#line 7532 "tracker-sparql-query.c" } #line 794 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" is_null = FALSE; @@ -7538,7 +7544,7 @@ g_propagate_error (error, _inner_error_); #line 796 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7542 "tracker-sparql-query.c" +#line 7548 "tracker-sparql-query.c" } else { #line 796 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -7546,12 +7552,12 @@ g_clear_error (&_inner_error_); #line 796 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7550 "tracker-sparql-query.c" +#line 7556 "tracker-sparql-query.c" } } #line 796 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp2_) { -#line 7555 "tracker-sparql-query.c" +#line 7561 "tracker-sparql-query.c" const gchar* _tmp3_; gchar* _tmp4_; gchar* old_graph; @@ -7586,7 +7592,7 @@ _g_free0 (old_graph); #line 798 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7590 "tracker-sparql-query.c" +#line 7596 "tracker-sparql-query.c" } else { #line 798 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_graph); @@ -7596,7 +7602,7 @@ g_clear_error (&_inner_error_); #line 798 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7600 "tracker-sparql-query.c" +#line 7606 "tracker-sparql-query.c" } } #line 798 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -7607,7 +7613,7 @@ _tmp9_ = is_null; #line 800 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp9_) { -#line 7611 "tracker-sparql-query.c" +#line 7617 "tracker-sparql-query.c" GError* _tmp10_ = NULL; #line 801 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp10_ = tracker_sparql_query_get_error (self, "'null' not supported for graph"); @@ -7621,7 +7627,7 @@ _g_free0 (old_graph); #line 801 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7625 "tracker-sparql-query.c" +#line 7631 "tracker-sparql-query.c" } else { #line 801 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_graph); @@ -7631,7 +7637,7 @@ g_clear_error (&_inner_error_); #line 801 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7635 "tracker-sparql-query.c" +#line 7641 "tracker-sparql-query.c" } } #line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -7646,7 +7652,7 @@ _g_free0 (old_graph); #line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7650 "tracker-sparql-query.c" +#line 7656 "tracker-sparql-query.c" } else { #line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_graph); @@ -7656,12 +7662,12 @@ g_clear_error (&_inner_error_); #line 804 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7660 "tracker-sparql-query.c" +#line 7666 "tracker-sparql-query.c" } } #line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" while (TRUE) { -#line 7665 "tracker-sparql-query.c" +#line 7671 "tracker-sparql-query.c" TrackerSparqlTokenType _tmp11_ = 0; TrackerSparqlSolution* _tmp12_; gboolean _tmp13_ = FALSE; @@ -7677,7 +7683,7 @@ if (!(_tmp11_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACE)) { #line 806 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 7681 "tracker-sparql-query.c" +#line 7687 "tracker-sparql-query.c" } #line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp12_ = var_value_map; @@ -7697,7 +7703,7 @@ _g_free0 (old_graph); #line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7701 "tracker-sparql-query.c" +#line 7707 "tracker-sparql-query.c" } else { #line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_graph); @@ -7707,7 +7713,7 @@ g_clear_error (&_inner_error_); #line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7711 "tracker-sparql-query.c" +#line 7717 "tracker-sparql-query.c" } } #line 807 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -7718,7 +7724,7 @@ _tmp16_ = is_null; #line 809 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp16_) { -#line 7722 "tracker-sparql-query.c" +#line 7728 "tracker-sparql-query.c" GError* _tmp17_ = NULL; #line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp17_ = tracker_sparql_query_get_error (self, "'null' not supported for subject"); @@ -7732,7 +7738,7 @@ _g_free0 (old_graph); #line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7736 "tracker-sparql-query.c" +#line 7742 "tracker-sparql-query.c" } else { #line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_graph); @@ -7742,7 +7748,7 @@ g_clear_error (&_inner_error_); #line 810 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7746 "tracker-sparql-query.c" +#line 7752 "tracker-sparql-query.c" } } #line 813 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -7759,7 +7765,7 @@ _g_free0 (old_graph); #line 813 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7763 "tracker-sparql-query.c" +#line 7769 "tracker-sparql-query.c" } else { #line 813 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_graph); @@ -7769,7 +7775,7 @@ g_clear_error (&_inner_error_); #line 813 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7773 "tracker-sparql-query.c" +#line 7779 "tracker-sparql-query.c" } } #line 814 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -7786,7 +7792,7 @@ _g_free0 (old_graph); #line 814 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7790 "tracker-sparql-query.c" +#line 7796 "tracker-sparql-query.c" } else { #line 814 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_graph); @@ -7796,14 +7802,14 @@ g_clear_error (&_inner_error_); #line 814 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7800 "tracker-sparql-query.c" +#line 7806 "tracker-sparql-query.c" } } #line 814 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (!_tmp20_) { #line 816 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 7807 "tracker-sparql-query.c" +#line 7813 "tracker-sparql-query.c" } } #line 820 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -7818,7 +7824,7 @@ _g_free0 (old_graph); #line 820 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7822 "tracker-sparql-query.c" +#line 7828 "tracker-sparql-query.c" } else { #line 820 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_graph); @@ -7828,7 +7834,7 @@ g_clear_error (&_inner_error_); #line 820 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7832 "tracker-sparql-query.c" +#line 7838 "tracker-sparql-query.c" } } #line 822 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -7851,7 +7857,7 @@ _g_free0 (old_graph); #line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7855 "tracker-sparql-query.c" +#line 7861 "tracker-sparql-query.c" } else { #line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_graph); @@ -7861,12 +7867,12 @@ g_clear_error (&_inner_error_); #line 824 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7865 "tracker-sparql-query.c" +#line 7871 "tracker-sparql-query.c" } } #line 796 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_graph); -#line 7870 "tracker-sparql-query.c" +#line 7876 "tracker-sparql-query.c" } else { TrackerSparqlSolution* _tmp23_; gboolean _tmp24_ = FALSE; @@ -7894,7 +7900,7 @@ g_propagate_error (error, _inner_error_); #line 826 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7898 "tracker-sparql-query.c" +#line 7904 "tracker-sparql-query.c" } else { #line 826 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -7902,7 +7908,7 @@ g_clear_error (&_inner_error_); #line 826 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7906 "tracker-sparql-query.c" +#line 7912 "tracker-sparql-query.c" } } #line 826 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -7913,7 +7919,7 @@ _tmp27_ = is_null; #line 828 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp27_) { -#line 7917 "tracker-sparql-query.c" +#line 7923 "tracker-sparql-query.c" GError* _tmp28_ = NULL; #line 829 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp28_ = tracker_sparql_query_get_error (self, "'null' not supported for subject"); @@ -7925,7 +7931,7 @@ g_propagate_error (error, _inner_error_); #line 829 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7929 "tracker-sparql-query.c" +#line 7935 "tracker-sparql-query.c" } else { #line 829 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -7933,7 +7939,7 @@ g_clear_error (&_inner_error_); #line 829 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7937 "tracker-sparql-query.c" +#line 7943 "tracker-sparql-query.c" } } #line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -7948,7 +7954,7 @@ g_propagate_error (error, _inner_error_); #line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7952 "tracker-sparql-query.c" +#line 7958 "tracker-sparql-query.c" } else { #line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -7956,7 +7962,7 @@ g_clear_error (&_inner_error_); #line 832 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7960 "tracker-sparql-query.c" +#line 7966 "tracker-sparql-query.c" } } #line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -7971,7 +7977,7 @@ g_propagate_error (error, _inner_error_); #line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7975 "tracker-sparql-query.c" +#line 7981 "tracker-sparql-query.c" } else { #line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -7979,22 +7985,22 @@ g_clear_error (&_inner_error_); #line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 7983 "tracker-sparql-query.c" +#line 7989 "tracker-sparql-query.c" } } #line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (!_tmp32_) { -#line 7988 "tracker-sparql-query.c" +#line 7994 "tracker-sparql-query.c" TrackerSparqlTokenType _tmp33_ = 0; #line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp33_ = tracker_sparql_query_current (self); #line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp30_ = _tmp33_ != TRACKER_SPARQL_TOKEN_TYPE_GRAPH; -#line 7994 "tracker-sparql-query.c" +#line 8000 "tracker-sparql-query.c" } else { #line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp30_ = FALSE; -#line 7998 "tracker-sparql-query.c" +#line 8004 "tracker-sparql-query.c" } #line 833 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp34_ = _tmp30_; @@ -8002,7 +8008,7 @@ if (_tmp34_) { #line 835 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 8006 "tracker-sparql-query.c" +#line 8012 "tracker-sparql-query.c" } } } @@ -8016,7 +8022,7 @@ g_propagate_error (error, _inner_error_); #line 840 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 8020 "tracker-sparql-query.c" +#line 8026 "tracker-sparql-query.c" } else { #line 840 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -8024,7 +8030,7 @@ g_clear_error (&_inner_error_); #line 840 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 8028 "tracker-sparql-query.c" +#line 8034 "tracker-sparql-query.c" } } } @@ -8051,7 +8057,7 @@ _tmp1_ = tracker_sparql_query_current (self); #line 848 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp1_ == TRACKER_SPARQL_TOKEN_TYPE_VAR) { -#line 8055 "tracker-sparql-query.c" +#line 8061 "tracker-sparql-query.c" TrackerSparqlSolution* _tmp2_; gchar* _tmp3_ = NULL; gchar* _tmp4_; @@ -8070,7 +8076,7 @@ _g_free0 (_result_); #line 849 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8074 "tracker-sparql-query.c" +#line 8080 "tracker-sparql-query.c" } else { #line 849 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8080,7 +8086,7 @@ g_clear_error (&_inner_error_); #line 849 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8084 "tracker-sparql-query.c" +#line 8090 "tracker-sparql-query.c" } } #line 850 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -8103,14 +8109,14 @@ _g_free0 (_tmp6_); #line 850 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_tmp4_); -#line 8107 "tracker-sparql-query.c" +#line 8113 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp8_ = 0; #line 851 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp8_ = tracker_sparql_query_current (self); #line 851 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp8_ == TRACKER_SPARQL_TOKEN_TYPE_IRI_REF) { -#line 8114 "tracker-sparql-query.c" +#line 8120 "tracker-sparql-query.c" gchar* _tmp9_ = NULL; #line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_query_next (self, &_inner_error_); @@ -8124,7 +8130,7 @@ _g_free0 (_result_); #line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8128 "tracker-sparql-query.c" +#line 8134 "tracker-sparql-query.c" } else { #line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8134,7 +8140,7 @@ g_clear_error (&_inner_error_); #line 852 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8138 "tracker-sparql-query.c" +#line 8144 "tracker-sparql-query.c" } } #line 853 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -8143,14 +8149,14 @@ _g_free0 (_result_); #line 853 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _result_ = _tmp9_; -#line 8147 "tracker-sparql-query.c" +#line 8153 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp10_ = 0; #line 854 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp10_ = tracker_sparql_query_current (self); #line 854 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp10_ == TRACKER_SPARQL_TOKEN_TYPE_PN_PREFIX) { -#line 8154 "tracker-sparql-query.c" +#line 8160 "tracker-sparql-query.c" gchar* _tmp11_ = NULL; gchar* ns; const gchar* _tmp12_; @@ -8173,7 +8179,7 @@ _g_free0 (_result_); #line 856 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8177 "tracker-sparql-query.c" +#line 8183 "tracker-sparql-query.c" } else { #line 856 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8183,7 +8189,7 @@ g_clear_error (&_inner_error_); #line 856 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8187 "tracker-sparql-query.c" +#line 8193 "tracker-sparql-query.c" } } #line 857 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -8204,7 +8210,7 @@ _g_free0 (_result_); #line 858 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8208 "tracker-sparql-query.c" +#line 8214 "tracker-sparql-query.c" } else { #line 858 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (ns); @@ -8216,7 +8222,7 @@ g_clear_error (&_inner_error_); #line 858 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8220 "tracker-sparql-query.c" +#line 8226 "tracker-sparql-query.c" } } #line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -8251,7 +8257,7 @@ _g_free0 (_result_); #line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8255 "tracker-sparql-query.c" +#line 8261 "tracker-sparql-query.c" } else { #line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (ns); @@ -8263,7 +8269,7 @@ g_clear_error (&_inner_error_); #line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8267 "tracker-sparql-query.c" +#line 8273 "tracker-sparql-query.c" } } #line 859 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -8272,14 +8278,14 @@ _result_ = _tmp19_; #line 854 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (ns); -#line 8276 "tracker-sparql-query.c" +#line 8282 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp20_ = 0; #line 860 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp20_ = tracker_sparql_query_current (self); #line 860 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp20_ == TRACKER_SPARQL_TOKEN_TYPE_COLON) { -#line 8283 "tracker-sparql-query.c" +#line 8289 "tracker-sparql-query.c" gchar* _tmp21_ = NULL; gchar* _tmp22_; gchar* _tmp23_ = NULL; @@ -8299,7 +8305,7 @@ _g_free0 (_result_); #line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8303 "tracker-sparql-query.c" +#line 8309 "tracker-sparql-query.c" } else { #line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8309,7 +8315,7 @@ g_clear_error (&_inner_error_); #line 862 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8313 "tracker-sparql-query.c" +#line 8319 "tracker-sparql-query.c" } } #line 863 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -8340,7 +8346,7 @@ _g_free0 (_result_); #line 863 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8344 "tracker-sparql-query.c" +#line 8350 "tracker-sparql-query.c" } else { #line 863 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8350,14 +8356,14 @@ g_clear_error (&_inner_error_); #line 863 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8354 "tracker-sparql-query.c" +#line 8360 "tracker-sparql-query.c" } } #line 863 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); #line 863 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _result_ = _tmp27_; -#line 8361 "tracker-sparql-query.c" +#line 8367 "tracker-sparql-query.c" } else { gboolean _tmp28_ = FALSE; gboolean _tmp29_; @@ -8375,7 +8381,7 @@ _g_free0 (_result_); #line 864 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8379 "tracker-sparql-query.c" +#line 8385 "tracker-sparql-query.c" } else { #line 864 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8385,12 +8391,12 @@ g_clear_error (&_inner_error_); #line 864 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8389 "tracker-sparql-query.c" +#line 8395 "tracker-sparql-query.c" } } #line 864 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp29_) { -#line 8394 "tracker-sparql-query.c" +#line 8400 "tracker-sparql-query.c" gchar* _tmp30_ = NULL; gchar* _tmp31_; gchar* _tmp32_ = NULL; @@ -8408,7 +8414,7 @@ _g_free0 (_result_); #line 866 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8412 "tracker-sparql-query.c" +#line 8418 "tracker-sparql-query.c" } else { #line 866 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8418,7 +8424,7 @@ g_clear_error (&_inner_error_); #line 866 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8422 "tracker-sparql-query.c" +#line 8428 "tracker-sparql-query.c" } } #line 867 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -8439,14 +8445,14 @@ _g_free0 (_tmp33_); #line 867 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_tmp31_); -#line 8443 "tracker-sparql-query.c" +#line 8449 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp35_ = 0; #line 868 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp35_ = tracker_sparql_query_current (self); #line 868 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp35_ == TRACKER_SPARQL_TOKEN_TYPE_MINUS) { -#line 8450 "tracker-sparql-query.c" +#line 8456 "tracker-sparql-query.c" gboolean _tmp36_ = FALSE; gboolean _tmp37_ = FALSE; TrackerSparqlTokenType _tmp38_ = 0; @@ -8464,7 +8470,7 @@ _g_free0 (_result_); #line 869 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8468 "tracker-sparql-query.c" +#line 8474 "tracker-sparql-query.c" } else { #line 869 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8474,7 +8480,7 @@ g_clear_error (&_inner_error_); #line 869 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8478 "tracker-sparql-query.c" +#line 8484 "tracker-sparql-query.c" } } #line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -8483,14 +8489,14 @@ if (_tmp38_ == TRACKER_SPARQL_TOKEN_TYPE_INTEGER) { #line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp37_ = TRUE; -#line 8487 "tracker-sparql-query.c" +#line 8493 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp39_ = 0; #line 871 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp39_ = tracker_sparql_query_current (self); #line 871 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp37_ = _tmp39_ == TRACKER_SPARQL_TOKEN_TYPE_DECIMAL; -#line 8494 "tracker-sparql-query.c" +#line 8500 "tracker-sparql-query.c" } #line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp40_ = _tmp37_; @@ -8498,20 +8504,20 @@ if (_tmp40_) { #line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp36_ = TRUE; -#line 8502 "tracker-sparql-query.c" +#line 8508 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp41_ = 0; #line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp41_ = tracker_sparql_query_current (self); #line 872 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp36_ = _tmp41_ == TRACKER_SPARQL_TOKEN_TYPE_DOUBLE; -#line 8509 "tracker-sparql-query.c" +#line 8515 "tracker-sparql-query.c" } #line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp42_ = _tmp36_; #line 870 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp42_) { -#line 8515 "tracker-sparql-query.c" +#line 8521 "tracker-sparql-query.c" gchar* _tmp43_ = NULL; gchar* _tmp44_; gchar* _tmp45_; @@ -8527,7 +8533,7 @@ _g_free0 (_result_); #line 873 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8531 "tracker-sparql-query.c" +#line 8537 "tracker-sparql-query.c" } else { #line 873 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8537,7 +8543,7 @@ g_clear_error (&_inner_error_); #line 873 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8541 "tracker-sparql-query.c" +#line 8547 "tracker-sparql-query.c" } } #line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -8552,7 +8558,7 @@ _result_ = _tmp45_; #line 874 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_tmp44_); -#line 8556 "tracker-sparql-query.c" +#line 8562 "tracker-sparql-query.c" } else { GError* _tmp46_ = NULL; #line 876 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -8567,7 +8573,7 @@ _g_free0 (_result_); #line 876 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8571 "tracker-sparql-query.c" +#line 8577 "tracker-sparql-query.c" } else { #line 876 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8577,7 +8583,7 @@ g_clear_error (&_inner_error_); #line 876 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8581 "tracker-sparql-query.c" +#line 8587 "tracker-sparql-query.c" } } } else { @@ -8586,7 +8592,7 @@ _tmp47_ = tracker_sparql_query_current (self); #line 878 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp47_ == TRACKER_SPARQL_TOKEN_TYPE_INTEGER) { -#line 8590 "tracker-sparql-query.c" +#line 8596 "tracker-sparql-query.c" gchar* _tmp48_ = NULL; #line 879 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_query_next (self, &_inner_error_); @@ -8600,7 +8606,7 @@ _g_free0 (_result_); #line 879 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8604 "tracker-sparql-query.c" +#line 8610 "tracker-sparql-query.c" } else { #line 879 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8610,7 +8616,7 @@ g_clear_error (&_inner_error_); #line 879 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8614 "tracker-sparql-query.c" +#line 8620 "tracker-sparql-query.c" } } #line 880 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -8619,14 +8625,14 @@ _g_free0 (_result_); #line 880 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _result_ = _tmp48_; -#line 8623 "tracker-sparql-query.c" +#line 8629 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp49_ = 0; #line 881 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp49_ = tracker_sparql_query_current (self); #line 881 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp49_ == TRACKER_SPARQL_TOKEN_TYPE_NULL) { -#line 8630 "tracker-sparql-query.c" +#line 8636 "tracker-sparql-query.c" gchar* _tmp50_; #line 882 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_query_next (self, &_inner_error_); @@ -8640,7 +8646,7 @@ _g_free0 (_result_); #line 882 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8644 "tracker-sparql-query.c" +#line 8650 "tracker-sparql-query.c" } else { #line 882 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8650,7 +8656,7 @@ g_clear_error (&_inner_error_); #line 882 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8654 "tracker-sparql-query.c" +#line 8660 "tracker-sparql-query.c" } } #line 883 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -8661,14 +8667,14 @@ _result_ = _tmp50_; #line 884 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _vala_is_null = TRUE; -#line 8665 "tracker-sparql-query.c" +#line 8671 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp51_ = 0; #line 885 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp51_ = tracker_sparql_query_current (self); #line 885 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp51_ == TRACKER_SPARQL_TOKEN_TYPE_DECIMAL) { -#line 8672 "tracker-sparql-query.c" +#line 8678 "tracker-sparql-query.c" gchar* _tmp52_ = NULL; #line 886 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_query_next (self, &_inner_error_); @@ -8682,7 +8688,7 @@ _g_free0 (_result_); #line 886 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8686 "tracker-sparql-query.c" +#line 8692 "tracker-sparql-query.c" } else { #line 886 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8692,7 +8698,7 @@ g_clear_error (&_inner_error_); #line 886 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8696 "tracker-sparql-query.c" +#line 8702 "tracker-sparql-query.c" } } #line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -8701,14 +8707,14 @@ _g_free0 (_result_); #line 887 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _result_ = _tmp52_; -#line 8705 "tracker-sparql-query.c" +#line 8711 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp53_ = 0; #line 888 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp53_ = tracker_sparql_query_current (self); #line 888 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp53_ == TRACKER_SPARQL_TOKEN_TYPE_DOUBLE) { -#line 8712 "tracker-sparql-query.c" +#line 8718 "tracker-sparql-query.c" gchar* _tmp54_ = NULL; #line 889 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_query_next (self, &_inner_error_); @@ -8722,7 +8728,7 @@ _g_free0 (_result_); #line 889 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8726 "tracker-sparql-query.c" +#line 8732 "tracker-sparql-query.c" } else { #line 889 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8732,7 +8738,7 @@ g_clear_error (&_inner_error_); #line 889 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8736 "tracker-sparql-query.c" +#line 8742 "tracker-sparql-query.c" } } #line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -8741,14 +8747,14 @@ _g_free0 (_result_); #line 890 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _result_ = _tmp54_; -#line 8745 "tracker-sparql-query.c" +#line 8751 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp55_ = 0; #line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp55_ = tracker_sparql_query_current (self); #line 891 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp55_ == TRACKER_SPARQL_TOKEN_TYPE_TRUE) { -#line 8752 "tracker-sparql-query.c" +#line 8758 "tracker-sparql-query.c" gchar* _tmp56_; #line 892 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_query_next (self, &_inner_error_); @@ -8762,7 +8768,7 @@ _g_free0 (_result_); #line 892 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8766 "tracker-sparql-query.c" +#line 8772 "tracker-sparql-query.c" } else { #line 892 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8772,7 +8778,7 @@ g_clear_error (&_inner_error_); #line 892 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8776 "tracker-sparql-query.c" +#line 8782 "tracker-sparql-query.c" } } #line 893 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -8781,14 +8787,14 @@ _g_free0 (_result_); #line 893 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _result_ = _tmp56_; -#line 8785 "tracker-sparql-query.c" +#line 8791 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp57_ = 0; #line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp57_ = tracker_sparql_query_current (self); #line 894 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp57_ == TRACKER_SPARQL_TOKEN_TYPE_FALSE) { -#line 8792 "tracker-sparql-query.c" +#line 8798 "tracker-sparql-query.c" gchar* _tmp58_; #line 895 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_query_next (self, &_inner_error_); @@ -8802,7 +8808,7 @@ _g_free0 (_result_); #line 895 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8806 "tracker-sparql-query.c" +#line 8812 "tracker-sparql-query.c" } else { #line 895 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8812,7 +8818,7 @@ g_clear_error (&_inner_error_); #line 895 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8816 "tracker-sparql-query.c" +#line 8822 "tracker-sparql-query.c" } } #line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -8821,14 +8827,14 @@ _g_free0 (_result_); #line 896 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _result_ = _tmp58_; -#line 8825 "tracker-sparql-query.c" +#line 8831 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp59_ = 0; #line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp59_ = tracker_sparql_query_current (self); #line 897 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp59_ == TRACKER_SPARQL_TOKEN_TYPE_STRING_LITERAL1) { -#line 8832 "tracker-sparql-query.c" +#line 8838 "tracker-sparql-query.c" TrackerSparqlExpression* _tmp60_; gchar* _tmp61_ = NULL; gchar* _tmp62_; @@ -8848,7 +8854,7 @@ _g_free0 (_result_); #line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8852 "tracker-sparql-query.c" +#line 8858 "tracker-sparql-query.c" } else { #line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8858,21 +8864,21 @@ g_clear_error (&_inner_error_); #line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8862 "tracker-sparql-query.c" +#line 8868 "tracker-sparql-query.c" } } #line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); #line 898 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _result_ = _tmp62_; -#line 8869 "tracker-sparql-query.c" +#line 8875 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp63_ = 0; #line 899 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp63_ = tracker_sparql_query_current (self); #line 899 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp63_ == TRACKER_SPARQL_TOKEN_TYPE_STRING_LITERAL2) { -#line 8876 "tracker-sparql-query.c" +#line 8882 "tracker-sparql-query.c" TrackerSparqlExpression* _tmp64_; gchar* _tmp65_ = NULL; gchar* _tmp66_; @@ -8892,7 +8898,7 @@ _g_free0 (_result_); #line 900 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8896 "tracker-sparql-query.c" +#line 8902 "tracker-sparql-query.c" } else { #line 900 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8902,21 +8908,21 @@ g_clear_error (&_inner_error_); #line 900 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8906 "tracker-sparql-query.c" +#line 8912 "tracker-sparql-query.c" } } #line 900 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); #line 900 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _result_ = _tmp66_; -#line 8913 "tracker-sparql-query.c" +#line 8919 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp67_ = 0; #line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp67_ = tracker_sparql_query_current (self); #line 901 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp67_ == TRACKER_SPARQL_TOKEN_TYPE_STRING_LITERAL_LONG1) { -#line 8920 "tracker-sparql-query.c" +#line 8926 "tracker-sparql-query.c" TrackerSparqlExpression* _tmp68_; gchar* _tmp69_ = NULL; gchar* _tmp70_; @@ -8936,7 +8942,7 @@ _g_free0 (_result_); #line 902 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8940 "tracker-sparql-query.c" +#line 8946 "tracker-sparql-query.c" } else { #line 902 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8946,21 +8952,21 @@ g_clear_error (&_inner_error_); #line 902 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8950 "tracker-sparql-query.c" +#line 8956 "tracker-sparql-query.c" } } #line 902 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); #line 902 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _result_ = _tmp70_; -#line 8957 "tracker-sparql-query.c" +#line 8963 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp71_ = 0; #line 903 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp71_ = tracker_sparql_query_current (self); #line 903 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp71_ == TRACKER_SPARQL_TOKEN_TYPE_STRING_LITERAL_LONG2) { -#line 8964 "tracker-sparql-query.c" +#line 8970 "tracker-sparql-query.c" TrackerSparqlExpression* _tmp72_; gchar* _tmp73_ = NULL; gchar* _tmp74_; @@ -8980,7 +8986,7 @@ _g_free0 (_result_); #line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8984 "tracker-sparql-query.c" +#line 8990 "tracker-sparql-query.c" } else { #line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -8990,21 +8996,21 @@ g_clear_error (&_inner_error_); #line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 8994 "tracker-sparql-query.c" +#line 9000 "tracker-sparql-query.c" } } #line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); #line 904 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _result_ = _tmp74_; -#line 9001 "tracker-sparql-query.c" +#line 9007 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp75_ = 0; #line 905 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp75_ = tracker_sparql_query_current (self); #line 905 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp75_ == TRACKER_SPARQL_TOKEN_TYPE_OPEN_BRACKET) { -#line 9008 "tracker-sparql-query.c" +#line 9014 "tracker-sparql-query.c" gboolean _tmp76_; gchar* _tmp78_ = NULL; const gchar* _tmp79_; @@ -9022,7 +9028,7 @@ _tmp76_ = self->priv->anon_blank_node_open; #line 907 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp76_) { -#line 9026 "tracker-sparql-query.c" +#line 9032 "tracker-sparql-query.c" GError* _tmp77_ = NULL; #line 908 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp77_ = tracker_sparql_query_get_error (self, "no support for nested anonymous blank nodes"); @@ -9036,7 +9042,7 @@ _g_free0 (_result_); #line 908 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 9040 "tracker-sparql-query.c" +#line 9046 "tracker-sparql-query.c" } else { #line 908 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -9046,7 +9052,7 @@ g_clear_error (&_inner_error_); #line 908 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 9050 "tracker-sparql-query.c" +#line 9056 "tracker-sparql-query.c" } } #line 911 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9063,7 +9069,7 @@ _g_free0 (_result_); #line 912 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 9067 "tracker-sparql-query.c" +#line 9073 "tracker-sparql-query.c" } else { #line 912 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -9073,7 +9079,7 @@ g_clear_error (&_inner_error_); #line 912 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 9077 "tracker-sparql-query.c" +#line 9083 "tracker-sparql-query.c" } } #line 914 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9116,7 +9122,7 @@ _g_free0 (_result_); #line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 9120 "tracker-sparql-query.c" +#line 9126 "tracker-sparql-query.c" } else { #line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_subject); @@ -9128,7 +9134,7 @@ g_clear_error (&_inner_error_); #line 920 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 9132 "tracker-sparql-query.c" +#line 9138 "tracker-sparql-query.c" } } #line 921 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9145,7 +9151,7 @@ _g_free0 (_result_); #line 921 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 9149 "tracker-sparql-query.c" +#line 9155 "tracker-sparql-query.c" } else { #line 921 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_subject); @@ -9157,7 +9163,7 @@ g_clear_error (&_inner_error_); #line 921 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 9161 "tracker-sparql-query.c" +#line 9167 "tracker-sparql-query.c" } } #line 922 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9176,7 +9182,7 @@ self->priv->current_subject_is_var = _tmp87_; #line 905 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_subject); -#line 9180 "tracker-sparql-query.c" +#line 9186 "tracker-sparql-query.c" } else { GError* _tmp88_ = NULL; #line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9191,7 +9197,7 @@ _g_free0 (_result_); #line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 9195 "tracker-sparql-query.c" +#line 9201 "tracker-sparql-query.c" } else { #line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_result_); @@ -9201,7 +9207,7 @@ g_clear_error (&_inner_error_); #line 927 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return NULL; -#line 9205 "tracker-sparql-query.c" +#line 9211 "tracker-sparql-query.c" } } } @@ -9226,11 +9232,11 @@ if (is_null) { #line 929 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" *is_null = _vala_is_null; -#line 9230 "tracker-sparql-query.c" +#line 9236 "tracker-sparql-query.c" } #line 929 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 9234 "tracker-sparql-query.c" +#line 9240 "tracker-sparql-query.c" } @@ -9242,7 +9248,7 @@ g_return_if_fail (var_value_map != NULL); #line 933 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" while (TRUE) { -#line 9246 "tracker-sparql-query.c" +#line 9252 "tracker-sparql-query.c" const gchar* _tmp0_; gchar* _tmp1_; gchar* old_predicate; @@ -9266,7 +9272,7 @@ _tmp2_ = tracker_sparql_query_current (self); #line 937 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp2_ == TRACKER_SPARQL_TOKEN_TYPE_VAR) { -#line 9270 "tracker-sparql-query.c" +#line 9276 "tracker-sparql-query.c" TrackerSparqlSolution* _tmp3_; gchar* _tmp4_ = NULL; gchar* _tmp5_; @@ -9287,7 +9293,7 @@ _g_free0 (old_predicate); #line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9291 "tracker-sparql-query.c" +#line 9297 "tracker-sparql-query.c" } else { #line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_predicate); @@ -9297,7 +9303,7 @@ g_clear_error (&_inner_error_); #line 939 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9301 "tracker-sparql-query.c" +#line 9307 "tracker-sparql-query.c" } } #line 940 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9320,14 +9326,14 @@ _g_free0 (_tmp7_); #line 940 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (_tmp5_); -#line 9324 "tracker-sparql-query.c" +#line 9330 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp9_ = 0; #line 941 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp9_ = tracker_sparql_query_current (self); #line 941 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp9_ == TRACKER_SPARQL_TOKEN_TYPE_IRI_REF) { -#line 9331 "tracker-sparql-query.c" +#line 9337 "tracker-sparql-query.c" gchar* _tmp10_ = NULL; #line 942 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_query_next (self, &_inner_error_); @@ -9341,7 +9347,7 @@ _g_free0 (old_predicate); #line 942 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9345 "tracker-sparql-query.c" +#line 9351 "tracker-sparql-query.c" } else { #line 942 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_predicate); @@ -9351,7 +9357,7 @@ g_clear_error (&_inner_error_); #line 942 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9355 "tracker-sparql-query.c" +#line 9361 "tracker-sparql-query.c" } } #line 943 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9360,14 +9366,14 @@ _g_free0 (self->priv->current_predicate); #line 943 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->priv->current_predicate = _tmp10_; -#line 9364 "tracker-sparql-query.c" +#line 9370 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp11_ = 0; #line 944 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp11_ = tracker_sparql_query_current (self); #line 944 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp11_ == TRACKER_SPARQL_TOKEN_TYPE_PN_PREFIX) { -#line 9371 "tracker-sparql-query.c" +#line 9377 "tracker-sparql-query.c" gchar* _tmp12_ = NULL; gchar* ns; const gchar* _tmp13_; @@ -9390,7 +9396,7 @@ _g_free0 (old_predicate); #line 945 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9394 "tracker-sparql-query.c" +#line 9400 "tracker-sparql-query.c" } else { #line 945 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_predicate); @@ -9400,7 +9406,7 @@ g_clear_error (&_inner_error_); #line 945 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9404 "tracker-sparql-query.c" +#line 9410 "tracker-sparql-query.c" } } #line 946 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9421,7 +9427,7 @@ _g_free0 (old_predicate); #line 947 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9425 "tracker-sparql-query.c" +#line 9431 "tracker-sparql-query.c" } else { #line 947 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (ns); @@ -9433,7 +9439,7 @@ g_clear_error (&_inner_error_); #line 947 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9437 "tracker-sparql-query.c" +#line 9443 "tracker-sparql-query.c" } } #line 948 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9468,7 +9474,7 @@ _g_free0 (old_predicate); #line 948 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9472 "tracker-sparql-query.c" +#line 9478 "tracker-sparql-query.c" } else { #line 948 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (ns); @@ -9480,7 +9486,7 @@ g_clear_error (&_inner_error_); #line 948 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9484 "tracker-sparql-query.c" +#line 9490 "tracker-sparql-query.c" } } #line 948 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9489,14 +9495,14 @@ self->priv->current_predicate = _tmp20_; #line 944 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (ns); -#line 9493 "tracker-sparql-query.c" +#line 9499 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp21_ = 0; #line 949 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp21_ = tracker_sparql_query_current (self); #line 949 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp21_ == TRACKER_SPARQL_TOKEN_TYPE_COLON) { -#line 9500 "tracker-sparql-query.c" +#line 9506 "tracker-sparql-query.c" gchar* _tmp22_ = NULL; gchar* _tmp23_; gchar* _tmp24_ = NULL; @@ -9516,7 +9522,7 @@ _g_free0 (old_predicate); #line 950 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9520 "tracker-sparql-query.c" +#line 9526 "tracker-sparql-query.c" } else { #line 950 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_predicate); @@ -9526,7 +9532,7 @@ g_clear_error (&_inner_error_); #line 950 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9530 "tracker-sparql-query.c" +#line 9536 "tracker-sparql-query.c" } } #line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9557,7 +9563,7 @@ _g_free0 (old_predicate); #line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9561 "tracker-sparql-query.c" +#line 9567 "tracker-sparql-query.c" } else { #line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_predicate); @@ -9567,21 +9573,21 @@ g_clear_error (&_inner_error_); #line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9571 "tracker-sparql-query.c" +#line 9577 "tracker-sparql-query.c" } } #line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (self->priv->current_predicate); #line 951 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->priv->current_predicate = _tmp28_; -#line 9578 "tracker-sparql-query.c" +#line 9584 "tracker-sparql-query.c" } else { TrackerSparqlTokenType _tmp29_ = 0; #line 952 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp29_ = tracker_sparql_query_current (self); #line 952 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp29_ == TRACKER_SPARQL_TOKEN_TYPE_A) { -#line 9585 "tracker-sparql-query.c" +#line 9591 "tracker-sparql-query.c" gchar* _tmp30_; #line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" tracker_sparql_query_next (self, &_inner_error_); @@ -9595,7 +9601,7 @@ _g_free0 (old_predicate); #line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9599 "tracker-sparql-query.c" +#line 9605 "tracker-sparql-query.c" } else { #line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_predicate); @@ -9605,7 +9611,7 @@ g_clear_error (&_inner_error_); #line 953 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9609 "tracker-sparql-query.c" +#line 9615 "tracker-sparql-query.c" } } #line 954 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9614,7 +9620,7 @@ _g_free0 (self->priv->current_predicate); #line 954 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->priv->current_predicate = _tmp30_; -#line 9618 "tracker-sparql-query.c" +#line 9624 "tracker-sparql-query.c" } else { GError* _tmp31_ = NULL; #line 956 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9629,7 +9635,7 @@ _g_free0 (old_predicate); #line 956 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9633 "tracker-sparql-query.c" +#line 9639 "tracker-sparql-query.c" } else { #line 956 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_predicate); @@ -9639,7 +9645,7 @@ g_clear_error (&_inner_error_); #line 956 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9643 "tracker-sparql-query.c" +#line 9649 "tracker-sparql-query.c" } } } @@ -9660,7 +9666,7 @@ _g_free0 (old_predicate); #line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9664 "tracker-sparql-query.c" +#line 9670 "tracker-sparql-query.c" } else { #line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_predicate); @@ -9670,7 +9676,7 @@ g_clear_error (&_inner_error_); #line 958 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9674 "tracker-sparql-query.c" +#line 9680 "tracker-sparql-query.c" } } #line 960 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9695,7 +9701,7 @@ _g_free0 (old_predicate); #line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9699 "tracker-sparql-query.c" +#line 9705 "tracker-sparql-query.c" } else { #line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_predicate); @@ -9705,7 +9711,7 @@ g_clear_error (&_inner_error_); #line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9709 "tracker-sparql-query.c" +#line 9715 "tracker-sparql-query.c" } } #line 962 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9714,13 +9720,13 @@ _g_free0 (old_predicate); #line 963 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" continue; -#line 9718 "tracker-sparql-query.c" +#line 9724 "tracker-sparql-query.c" } #line 965 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (old_predicate); #line 965 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 9724 "tracker-sparql-query.c" +#line 9730 "tracker-sparql-query.c" } } @@ -9733,7 +9739,7 @@ g_return_if_fail (var_value_map != NULL); #line 970 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" while (TRUE) { -#line 9737 "tracker-sparql-query.c" +#line 9743 "tracker-sparql-query.c" TrackerSparqlSolution* _tmp0_; gboolean _tmp1_ = FALSE; gboolean _tmp2_; @@ -9749,7 +9755,7 @@ g_propagate_error (error, _inner_error_); #line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9753 "tracker-sparql-query.c" +#line 9759 "tracker-sparql-query.c" } else { #line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -9757,7 +9763,7 @@ g_clear_error (&_inner_error_); #line 971 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9761 "tracker-sparql-query.c" +#line 9767 "tracker-sparql-query.c" } } #line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9772,7 +9778,7 @@ g_propagate_error (error, _inner_error_); #line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9776 "tracker-sparql-query.c" +#line 9782 "tracker-sparql-query.c" } else { #line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -9780,18 +9786,18 @@ g_clear_error (&_inner_error_); #line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9784 "tracker-sparql-query.c" +#line 9790 "tracker-sparql-query.c" } } #line 972 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp2_) { #line 973 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" continue; -#line 9791 "tracker-sparql-query.c" +#line 9797 "tracker-sparql-query.c" } #line 975 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 9795 "tracker-sparql-query.c" +#line 9801 "tracker-sparql-query.c" } } @@ -9799,7 +9805,7 @@ static gpointer _g_error_copy0 (gpointer self) { #line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return self ? g_error_copy (self) : NULL; -#line 9803 "tracker-sparql-query.c" +#line 9809 "tracker-sparql-query.c" } @@ -9837,7 +9843,7 @@ g_propagate_error (error, _inner_error_); #line 981 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9841 "tracker-sparql-query.c" +#line 9847 "tracker-sparql-query.c" } else { #line 981 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -9845,7 +9851,7 @@ g_clear_error (&_inner_error_); #line 981 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9849 "tracker-sparql-query.c" +#line 9855 "tracker-sparql-query.c" } } #line 982 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9854,14 +9860,14 @@ if (_tmp5_ == NULL) { #line 982 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp4_ = TRUE; -#line 9858 "tracker-sparql-query.c" +#line 9864 "tracker-sparql-query.c" } else { const gchar* _tmp6_; #line 982 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp6_ = self->priv->current_predicate; #line 982 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp4_ = _tmp6_ == NULL; -#line 9865 "tracker-sparql-query.c" +#line 9871 "tracker-sparql-query.c" } #line 982 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp7_ = _tmp4_; @@ -9869,14 +9875,14 @@ if (_tmp7_) { #line 982 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp3_ = TRUE; -#line 9873 "tracker-sparql-query.c" +#line 9879 "tracker-sparql-query.c" } else { const gchar* _tmp8_; #line 982 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp8_ = object; #line 982 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp3_ = _tmp8_ == NULL; -#line 9880 "tracker-sparql-query.c" +#line 9886 "tracker-sparql-query.c" } #line 982 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp9_ = _tmp3_; @@ -9886,7 +9892,7 @@ _g_free0 (object); #line 985 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9890 "tracker-sparql-query.c" +#line 9896 "tracker-sparql-query.c" } { gboolean _tmp10_; @@ -9894,7 +9900,7 @@ _tmp10_ = self->priv->update_statements; #line 988 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp10_) { -#line 9898 "tracker-sparql-query.c" +#line 9904 "tracker-sparql-query.c" const gchar* _tmp11_ = NULL; gboolean _tmp12_; const gchar* _tmp14_; @@ -9907,14 +9913,14 @@ if (_tmp12_) { #line 990 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp11_ = NULL; -#line 9911 "tracker-sparql-query.c" +#line 9917 "tracker-sparql-query.c" } else { const gchar* _tmp13_; #line 990 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp13_ = object; #line 990 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp11_ = _tmp13_; -#line 9918 "tracker-sparql-query.c" +#line 9924 "tracker-sparql-query.c" } #line 990 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp14_ = self->priv->current_graph; @@ -9930,12 +9936,12 @@ if (_inner_error_ != NULL) { #line 990 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 9934 "tracker-sparql-query.c" +#line 9940 "tracker-sparql-query.c" goto __catch3_tracker_sparql_error; } #line 990 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_inner_error_->domain == TRACKER_DATE_ERROR) { -#line 9939 "tracker-sparql-query.c" +#line 9945 "tracker-sparql-query.c" goto __catch3_tracker_date_error; } #line 990 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9946,7 +9952,7 @@ g_clear_error (&_inner_error_); #line 990 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9950 "tracker-sparql-query.c" +#line 9956 "tracker-sparql-query.c" } } else { gboolean _tmp18_; @@ -9954,7 +9960,7 @@ _tmp18_ = self->priv->delete_statements; #line 991 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp18_) { -#line 9958 "tracker-sparql-query.c" +#line 9964 "tracker-sparql-query.c" gboolean _tmp19_; const gchar* _tmp21_; const gchar* _tmp22_; @@ -9964,7 +9970,7 @@ _tmp19_ = is_null; #line 993 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp19_) { -#line 9968 "tracker-sparql-query.c" +#line 9974 "tracker-sparql-query.c" GError* _tmp20_ = NULL; #line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp20_ = tracker_sparql_query_get_error (self, "'null' not supported in this mode"); @@ -9972,12 +9978,12 @@ _inner_error_ = _tmp20_; #line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 9976 "tracker-sparql-query.c" +#line 9982 "tracker-sparql-query.c" goto __catch3_tracker_sparql_error; } #line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_inner_error_->domain == TRACKER_DATE_ERROR) { -#line 9981 "tracker-sparql-query.c" +#line 9987 "tracker-sparql-query.c" goto __catch3_tracker_date_error; } #line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -9988,7 +9994,7 @@ g_clear_error (&_inner_error_); #line 994 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 9992 "tracker-sparql-query.c" +#line 9998 "tracker-sparql-query.c" } #line 996 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp21_ = self->priv->current_graph; @@ -10004,12 +10010,12 @@ if (_inner_error_ != NULL) { #line 996 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 10008 "tracker-sparql-query.c" +#line 10014 "tracker-sparql-query.c" goto __catch3_tracker_sparql_error; } #line 996 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_inner_error_->domain == TRACKER_DATE_ERROR) { -#line 10013 "tracker-sparql-query.c" +#line 10019 "tracker-sparql-query.c" goto __catch3_tracker_date_error; } #line 996 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -10020,7 +10026,7 @@ g_clear_error (&_inner_error_); #line 996 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 10024 "tracker-sparql-query.c" +#line 10030 "tracker-sparql-query.c" } } else { gboolean _tmp25_; @@ -10032,7 +10038,7 @@ _tmp25_ = is_null; #line 999 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_tmp25_) { -#line 10036 "tracker-sparql-query.c" +#line 10042 "tracker-sparql-query.c" GError* _tmp26_ = NULL; #line 1000 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp26_ = tracker_sparql_query_get_error (self, "'null' not supported in this mode"); @@ -10040,12 +10046,12 @@ _inner_error_ = _tmp26_; #line 1000 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 10044 "tracker-sparql-query.c" +#line 10050 "tracker-sparql-query.c" goto __catch3_tracker_sparql_error; } #line 1000 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_inner_error_->domain == TRACKER_DATE_ERROR) { -#line 10049 "tracker-sparql-query.c" +#line 10055 "tracker-sparql-query.c" goto __catch3_tracker_date_error; } #line 1000 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -10056,7 +10062,7 @@ g_clear_error (&_inner_error_); #line 1000 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 10060 "tracker-sparql-query.c" +#line 10066 "tracker-sparql-query.c" } #line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _tmp27_ = self->priv->current_graph; @@ -10072,12 +10078,12 @@ if (_inner_error_ != NULL) { #line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_inner_error_->domain == TRACKER_SPARQL_ERROR) { -#line 10076 "tracker-sparql-query.c" +#line 10082 "tracker-sparql-query.c" goto __catch3_tracker_sparql_error; } #line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (_inner_error_->domain == TRACKER_DATE_ERROR) { -#line 10081 "tracker-sparql-query.c" +#line 10087 "tracker-sparql-query.c" goto __catch3_tracker_date_error; } #line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -10088,7 +10094,7 @@ g_clear_error (&_inner_error_); #line 1002 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 10092 "tracker-sparql-query.c" +#line 10098 "tracker-sparql-query.c" } } } @@ -10106,7 +10112,7 @@ _tmp31_ = self->priv->silent; #line 1005 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (!_tmp31_) { -#line 10110 "tracker-sparql-query.c" +#line 10116 "tracker-sparql-query.c" GError* _tmp32_; GError* _tmp33_; #line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -10117,12 +10123,12 @@ _inner_error_ = _tmp33_; #line 1006 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_error_free0 (e); -#line 10121 "tracker-sparql-query.c" +#line 10127 "tracker-sparql-query.c" goto __finally3; } #line 987 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_error_free0 (e); -#line 10126 "tracker-sparql-query.c" +#line 10132 "tracker-sparql-query.c" } goto __finally3; __catch3_tracker_date_error: @@ -10137,7 +10143,7 @@ _tmp34_ = self->priv->silent; #line 1009 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" if (!_tmp34_) { -#line 10141 "tracker-sparql-query.c" +#line 10147 "tracker-sparql-query.c" GError* _tmp35_; const gchar* _tmp36_; GError* _tmp37_; @@ -10151,12 +10157,12 @@ _inner_error_ = _tmp37_; #line 1010 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_error_free0 (e); -#line 10155 "tracker-sparql-query.c" +#line 10161 "tracker-sparql-query.c" goto __finally3; } #line 987 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_error_free0 (e); -#line 10160 "tracker-sparql-query.c" +#line 10166 "tracker-sparql-query.c" } __finally3: #line 987 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" @@ -10169,7 +10175,7 @@ _g_free0 (object); #line 987 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 10173 "tracker-sparql-query.c" +#line 10179 "tracker-sparql-query.c" } else { #line 987 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (object); @@ -10179,12 +10185,12 @@ g_clear_error (&_inner_error_); #line 987 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return; -#line 10183 "tracker-sparql-query.c" +#line 10189 "tracker-sparql-query.c" } } #line 979 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" _g_free0 (object); -#line 10188 "tracker-sparql-query.c" +#line 10194 "tracker-sparql-query.c" } @@ -10199,7 +10205,7 @@ result = _tmp0_; #line 244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return result; -#line 10203 "tracker-sparql-query.c" +#line 10209 "tracker-sparql-query.c" } @@ -10213,7 +10219,7 @@ self->priv->_no_cache = _tmp0_; #line 244 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_object_notify ((GObject *) self, "no-cache"); -#line 10217 "tracker-sparql-query.c" +#line 10223 "tracker-sparql-query.c" } @@ -10225,14 +10231,14 @@ memcpy (dup, self, sizeof (TrackerSparqlQueryTokenInfo)); #line 203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" return dup; -#line 10229 "tracker-sparql-query.c" +#line 10235 "tracker-sparql-query.c" } static void tracker_sparql_query_token_info_free (TrackerSparqlQueryTokenInfo* self) { #line 203 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_free (self); -#line 10236 "tracker-sparql-query.c" +#line 10242 "tracker-sparql-query.c" } @@ -10260,7 +10266,7 @@ G_OBJECT_CLASS (klass)->finalize = tracker_sparql_query_finalize; #line 191 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" g_object_class_install_property (G_OBJECT_CLASS (klass), TRACKER_SPARQL_QUERY_NO_CACHE, g_param_spec_boolean ("no-cache", "no-cache", "no-cache", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); -#line 10264 "tracker-sparql-query.c" +#line 10270 "tracker-sparql-query.c" } @@ -10271,7 +10277,7 @@ self->priv->bnodeid = 0; #line 843 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" self->priv->anon_blank_node_open = FALSE; -#line 10275 "tracker-sparql-query.c" +#line 10281 "tracker-sparql-query.c" } @@ -10307,7 +10313,7 @@ _g_hash_table_unref0 (self->priv->blank_nodes); #line 191 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" G_OBJECT_CLASS (tracker_sparql_query_parent_class)->finalize (obj); -#line 10311 "tracker-sparql-query.c" +#line 10317 "tracker-sparql-query.c" } @@ -10334,13 +10340,13 @@ g_value_set_boolean (value, tracker_sparql_query_get_no_cache (self)); #line 191 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 10338 "tracker-sparql-query.c" +#line 10344 "tracker-sparql-query.c" default: #line 191 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); #line 191 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 10344 "tracker-sparql-query.c" +#line 10350 "tracker-sparql-query.c" } } @@ -10356,13 +10362,13 @@ tracker_sparql_query_set_no_cache (self, g_value_get_boolean (value)); #line 191 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 10360 "tracker-sparql-query.c" +#line 10366 "tracker-sparql-query.c" default: #line 191 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); #line 191 "/home/martyn/Source/tracker/src/libtracker-data/tracker-sparql-query.vala" break; -#line 10366 "tracker-sparql-query.c" +#line 10372 "tracker-sparql-query.c" } } diff -Nru tracker-0.15.1/src/libtracker-data/tracker-turtle-reader.c tracker-0.15.2/src/libtracker-data/tracker-turtle-reader.c --- tracker-0.15.1/src/libtracker-data/tracker-turtle-reader.c 2013-01-24 16:46:03.000000000 +0000 +++ tracker-0.15.2/src/libtracker-data/tracker-turtle-reader.c 2013-02-15 11:38:31.000000000 +0000 @@ -271,9 +271,9 @@ static void tracker_turtle_reader_set_object (TrackerTurtleReader* self, const gchar* value); static void tracker_turtle_reader_set_object_is_uri (TrackerTurtleReader* self, gboolean value); const gchar* tracker_turtle_reader_get_subject (TrackerTurtleReader* self); -static void _vala_array_add10 (gchar*** array, int* length, int* size, gchar* value); +static void _vala_array_add12 (gchar*** array, int* length, int* size, gchar* value); const gchar* tracker_turtle_reader_get_predicate (TrackerTurtleReader* self); -static void _vala_array_add11 (gchar*** array, int* length, int* size, gchar* value); +static void _vala_array_add13 (gchar*** array, int* length, int* size, gchar* value); void tracker_turtle_reader_load (const gchar* path, GError** error); gboolean tracker_turtle_reader_get_object_is_uri (TrackerTurtleReader* self); const gchar* tracker_turtle_reader_get_graph (TrackerTurtleReader* self); @@ -1232,7 +1232,7 @@ } -static void _vala_array_add10 (gchar*** array, int* length, int* size, gchar* value) { +static void _vala_array_add12 (gchar*** array, int* length, int* size, gchar* value) { #line 254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-turtle-reader.vala" if ((*length) == (*size)) { #line 254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-turtle-reader.vala" @@ -1249,7 +1249,7 @@ } -static void _vala_array_add11 (gchar*** array, int* length, int* size, gchar* value) { +static void _vala_array_add13 (gchar*** array, int* length, int* size, gchar* value) { #line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-turtle-reader.vala" if ((*length) == (*size)) { #line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-turtle-reader.vala" @@ -2667,7 +2667,7 @@ #line 254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-turtle-reader.vala" _tmp118_ = g_strdup (_tmp117_); #line 254 "/home/martyn/Source/tracker/src/libtracker-data/tracker-turtle-reader.vala" - _vala_array_add10 (&self->priv->subject_stack, &self->priv->subject_stack_length1, &self->priv->_subject_stack_size_, _tmp118_); + _vala_array_add12 (&self->priv->subject_stack, &self->priv->subject_stack_length1, &self->priv->_subject_stack_size_, _tmp118_); #line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-turtle-reader.vala" _tmp119_ = self->priv->predicate_stack; #line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-turtle-reader.vala" @@ -2677,7 +2677,7 @@ #line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-turtle-reader.vala" _tmp121_ = g_strdup (_tmp120_); #line 255 "/home/martyn/Source/tracker/src/libtracker-data/tracker-turtle-reader.vala" - _vala_array_add11 (&self->priv->predicate_stack, &self->priv->predicate_stack_length1, &self->priv->_predicate_stack_size_, _tmp121_); + _vala_array_add13 (&self->priv->predicate_stack, &self->priv->predicate_stack_length1, &self->priv->_predicate_stack_size_, _tmp121_); #line 256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-turtle-reader.vala" _tmp122_ = tracker_turtle_reader_generate_bnodeid (self, NULL); #line 256 "/home/martyn/Source/tracker/src/libtracker-data/tracker-turtle-reader.vala" diff -Nru tracker-0.15.1/src/libtracker-fts/Makefile.am tracker-0.15.2/src/libtracker-fts/Makefile.am --- tracker-0.15.1/src/libtracker-fts/Makefile.am 2012-08-07 19:05:10.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/Makefile.am 2013-02-14 19:30:47.000000000 +0000 @@ -8,17 +8,40 @@ noinst_LTLIBRARIES = libtracker-fts.la +fts4_sources = \ + fts3_aux.c \ + fts3.c \ + fts3_expr.c \ + fts3.h \ + fts3_hash.c \ + fts3_hash.h \ + fts3_icu.c \ + fts3Int.h \ + fts3_porter.c \ + fts3_snippet.c \ + fts3_term.c \ + fts3_tokenizer1.c \ + fts3_tokenizer.c \ + fts3_tokenizer.h \ + fts3_unicode.c \ + fts3_unicode2.c \ + fts3_write.c + libtracker_fts_la_SOURCES = \ tracker-fts.c \ tracker-fts.h \ tracker-fts-config.c \ tracker-fts-config.h \ - tracker-fts-hash.c \ - tracker-fts-hash.h \ + tracker-fts-tokenizer.c \ + tracker-fts-tokenizer.h \ tracker-parser-utils.c \ tracker-parser-utils.h \ tracker-parser.h +if !HAVE_BUILTIN_FTS + libtracker_fts_la_SOURCES += $(fts4_sources) +endif + if BUILD_LIBUNISTRING_PARSER libtracker_fts_la_SOURCES += tracker-parser-libunistring.c endif @@ -31,3 +54,5 @@ $(top_builddir)/src/libtracker-common/libtracker-common.la \ $(BUILD_LIBS) \ $(LIBTRACKER_FTS_LIBS) + +EXTRA_DIST = $(fts4_sources) diff -Nru tracker-0.15.1/src/libtracker-fts/Makefile.in tracker-0.15.2/src/libtracker-fts/Makefile.in --- tracker-0.15.1/src/libtracker-fts/Makefile.in 2013-01-24 17:25:30.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/Makefile.in 2013-02-15 11:28:45.000000000 +0000 @@ -63,8 +63,9 @@ host_triplet = @host@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile.decl -@BUILD_LIBUNISTRING_PARSER_TRUE@am__append_1 = tracker-parser-libunistring.c -@BUILD_LIBICU_PARSER_TRUE@am__append_2 = tracker-parser-libicu.c +@HAVE_BUILTIN_FTS_FALSE@am__append_1 = $(fts4_sources) +@BUILD_LIBUNISTRING_PARSER_TRUE@am__append_2 = tracker-parser-libunistring.c +@BUILD_LIBICU_PARSER_TRUE@am__append_3 = tracker-parser-libicu.c subdir = src/libtracker-fts ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -90,15 +91,24 @@ $(top_builddir)/src/libtracker-common/libtracker-common.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am__libtracker_fts_la_SOURCES_DIST = tracker-fts.c tracker-fts.h \ - tracker-fts-config.c tracker-fts-config.h tracker-fts-hash.c \ - tracker-fts-hash.h tracker-parser-utils.c \ - tracker-parser-utils.h tracker-parser.h \ + tracker-fts-config.c tracker-fts-config.h \ + tracker-fts-tokenizer.c tracker-fts-tokenizer.h \ + tracker-parser-utils.c tracker-parser-utils.h tracker-parser.h \ + fts3_aux.c fts3.c fts3_expr.c fts3.h fts3_hash.c fts3_hash.h \ + fts3_icu.c fts3Int.h fts3_porter.c fts3_snippet.c fts3_term.c \ + fts3_tokenizer1.c fts3_tokenizer.c fts3_tokenizer.h \ + fts3_unicode.c fts3_unicode2.c fts3_write.c \ tracker-parser-libunistring.c tracker-parser-libicu.c -@BUILD_LIBUNISTRING_PARSER_TRUE@am__objects_1 = tracker-parser-libunistring.lo -@BUILD_LIBICU_PARSER_TRUE@am__objects_2 = tracker-parser-libicu.lo +am__objects_1 = fts3_aux.lo fts3.lo fts3_expr.lo fts3_hash.lo \ + fts3_icu.lo fts3_porter.lo fts3_snippet.lo fts3_term.lo \ + fts3_tokenizer1.lo fts3_tokenizer.lo fts3_unicode.lo \ + fts3_unicode2.lo fts3_write.lo +@HAVE_BUILTIN_FTS_FALSE@am__objects_2 = $(am__objects_1) +@BUILD_LIBUNISTRING_PARSER_TRUE@am__objects_3 = tracker-parser-libunistring.lo +@BUILD_LIBICU_PARSER_TRUE@am__objects_4 = tracker-parser-libicu.lo am_libtracker_fts_la_OBJECTS = tracker-fts.lo tracker-fts-config.lo \ - tracker-fts-hash.lo tracker-parser-utils.lo $(am__objects_1) \ - $(am__objects_2) + tracker-fts-tokenizer.lo tracker-parser-utils.lo \ + $(am__objects_2) $(am__objects_3) $(am__objects_4) libtracker_fts_la_OBJECTS = $(am_libtracker_fts_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) @@ -467,16 +477,36 @@ $(LIBTRACKER_FTS_CFLAGS) noinst_LTLIBRARIES = libtracker-fts.la +fts4_sources = \ + fts3_aux.c \ + fts3.c \ + fts3_expr.c \ + fts3.h \ + fts3_hash.c \ + fts3_hash.h \ + fts3_icu.c \ + fts3Int.h \ + fts3_porter.c \ + fts3_snippet.c \ + fts3_term.c \ + fts3_tokenizer1.c \ + fts3_tokenizer.c \ + fts3_tokenizer.h \ + fts3_unicode.c \ + fts3_unicode2.c \ + fts3_write.c + libtracker_fts_la_SOURCES = tracker-fts.c tracker-fts.h \ - tracker-fts-config.c tracker-fts-config.h tracker-fts-hash.c \ - tracker-fts-hash.h tracker-parser-utils.c \ - tracker-parser-utils.h tracker-parser.h $(am__append_1) \ - $(am__append_2) + tracker-fts-config.c tracker-fts-config.h \ + tracker-fts-tokenizer.c tracker-fts-tokenizer.h \ + tracker-parser-utils.c tracker-parser-utils.h tracker-parser.h \ + $(am__append_1) $(am__append_2) $(am__append_3) libtracker_fts_la_LIBADD = \ $(top_builddir)/src/libtracker-common/libtracker-common.la \ $(BUILD_LIBS) \ $(LIBTRACKER_FTS_LIBS) +EXTRA_DIST = $(fts4_sources) all: all-am .SUFFIXES: @@ -530,8 +560,21 @@ distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fts3.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fts3_aux.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fts3_expr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fts3_hash.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fts3_icu.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fts3_porter.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fts3_snippet.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fts3_term.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fts3_tokenizer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fts3_tokenizer1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fts3_unicode.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fts3_unicode2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fts3_write.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracker-fts-config.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracker-fts-hash.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracker-fts-tokenizer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracker-fts.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracker-parser-libicu.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracker-parser-libunistring.Plo@am__quote@ diff -Nru tracker-0.15.1/src/libtracker-fts/fts3.c tracker-0.15.2/src/libtracker-fts/fts3.c --- tracker-0.15.1/src/libtracker-fts/fts3.c 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/fts3.c 2013-02-14 19:30:47.000000000 +0000 @@ -0,0 +1,5350 @@ +/* +** 2006 Oct 10 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +****************************************************************************** +** +** This is an SQLite module implementing full-text search. +*/ + +/* +** The code in this file is only compiled if: +** +** * The FTS3 module is being built as an extension +** (in which case SQLITE_CORE is not defined), or +** +** * The FTS3 module is being built into the core of +** SQLite (in which case SQLITE_ENABLE_FTS3 is defined). +*/ + +/* The full-text index is stored in a series of b+tree (-like) +** structures called segments which map terms to doclists. The +** structures are like b+trees in layout, but are constructed from the +** bottom up in optimal fashion and are not updatable. Since trees +** are built from the bottom up, things will be described from the +** bottom up. +** +** +**** Varints **** +** The basic unit of encoding is a variable-length integer called a +** varint. We encode variable-length integers in little-endian order +** using seven bits * per byte as follows: +** +** KEY: +** A = 0xxxxxxx 7 bits of data and one flag bit +** B = 1xxxxxxx 7 bits of data and one flag bit +** +** 7 bits - A +** 14 bits - BA +** 21 bits - BBA +** and so on. +** +** This is similar in concept to how sqlite encodes "varints" but +** the encoding is not the same. SQLite varints are big-endian +** are are limited to 9 bytes in length whereas FTS3 varints are +** little-endian and can be up to 10 bytes in length (in theory). +** +** Example encodings: +** +** 1: 0x01 +** 127: 0x7f +** 128: 0x81 0x00 +** +** +**** Document lists **** +** A doclist (document list) holds a docid-sorted list of hits for a +** given term. Doclists hold docids and associated token positions. +** A docid is the unique integer identifier for a single document. +** A position is the index of a word within the document. The first +** word of the document has a position of 0. +** +** FTS3 used to optionally store character offsets using a compile-time +** option. But that functionality is no longer supported. +** +** A doclist is stored like this: +** +** array { +** varint docid; (delta from previous doclist) +** array { (position list for column 0) +** varint position; (2 more than the delta from previous position) +** } +** array { +** varint POS_COLUMN; (marks start of position list for new column) +** varint column; (index of new column) +** array { +** varint position; (2 more than the delta from previous position) +** } +** } +** varint POS_END; (marks end of positions for this document. +** } +** +** Here, array { X } means zero or more occurrences of X, adjacent in +** memory. A "position" is an index of a token in the token stream +** generated by the tokenizer. Note that POS_END and POS_COLUMN occur +** in the same logical place as the position element, and act as sentinals +** ending a position list array. POS_END is 0. POS_COLUMN is 1. +** The positions numbers are not stored literally but rather as two more +** than the difference from the prior position, or the just the position plus +** 2 for the first position. Example: +** +** label: A B C D E F G H I J K +** value: 123 5 9 1 1 14 35 0 234 72 0 +** +** The 123 value is the first docid. For column zero in this document +** there are two matches at positions 3 and 10 (5-2 and 9-2+3). The 1 +** at D signals the start of a new column; the 1 at E indicates that the +** new column is column number 1. There are two positions at 12 and 45 +** (14-2 and 35-2+12). The 0 at H indicate the end-of-document. The +** 234 at I is the delta to next docid (357). It has one position 70 +** (72-2) and then terminates with the 0 at K. +** +** A "position-list" is the list of positions for multiple columns for +** a single docid. A "column-list" is the set of positions for a single +** column. Hence, a position-list consists of one or more column-lists, +** a document record consists of a docid followed by a position-list and +** a doclist consists of one or more document records. +** +** A bare doclist omits the position information, becoming an +** array of varint-encoded docids. +** +**** Segment leaf nodes **** +** Segment leaf nodes store terms and doclists, ordered by term. Leaf +** nodes are written using LeafWriter, and read using LeafReader (to +** iterate through a single leaf node's data) and LeavesReader (to +** iterate through a segment's entire leaf layer). Leaf nodes have +** the format: +** +** varint iHeight; (height from leaf level, always 0) +** varint nTerm; (length of first term) +** char pTerm[nTerm]; (content of first term) +** varint nDoclist; (length of term's associated doclist) +** char pDoclist[nDoclist]; (content of doclist) +** array { +** (further terms are delta-encoded) +** varint nPrefix; (length of prefix shared with previous term) +** varint nSuffix; (length of unshared suffix) +** char pTermSuffix[nSuffix];(unshared suffix of next term) +** varint nDoclist; (length of term's associated doclist) +** char pDoclist[nDoclist]; (content of doclist) +** } +** +** Here, array { X } means zero or more occurrences of X, adjacent in +** memory. +** +** Leaf nodes are broken into blocks which are stored contiguously in +** the %_segments table in sorted order. This means that when the end +** of a node is reached, the next term is in the node with the next +** greater node id. +** +** New data is spilled to a new leaf node when the current node +** exceeds LEAF_MAX bytes (default 2048). New data which itself is +** larger than STANDALONE_MIN (default 1024) is placed in a standalone +** node (a leaf node with a single term and doclist). The goal of +** these settings is to pack together groups of small doclists while +** making it efficient to directly access large doclists. The +** assumption is that large doclists represent terms which are more +** likely to be query targets. +** +** TODO(shess) It may be useful for blocking decisions to be more +** dynamic. For instance, it may make more sense to have a 2.5k leaf +** node rather than splitting into 2k and .5k nodes. My intuition is +** that this might extend through 2x or 4x the pagesize. +** +** +**** Segment interior nodes **** +** Segment interior nodes store blockids for subtree nodes and terms +** to describe what data is stored by the each subtree. Interior +** nodes are written using InteriorWriter, and read using +** InteriorReader. InteriorWriters are created as needed when +** SegmentWriter creates new leaf nodes, or when an interior node +** itself grows too big and must be split. The format of interior +** nodes: +** +** varint iHeight; (height from leaf level, always >0) +** varint iBlockid; (block id of node's leftmost subtree) +** optional { +** varint nTerm; (length of first term) +** char pTerm[nTerm]; (content of first term) +** array { +** (further terms are delta-encoded) +** varint nPrefix; (length of shared prefix with previous term) +** varint nSuffix; (length of unshared suffix) +** char pTermSuffix[nSuffix]; (unshared suffix of next term) +** } +** } +** +** Here, optional { X } means an optional element, while array { X } +** means zero or more occurrences of X, adjacent in memory. +** +** An interior node encodes n terms separating n+1 subtrees. The +** subtree blocks are contiguous, so only the first subtree's blockid +** is encoded. The subtree at iBlockid will contain all terms less +** than the first term encoded (or all terms if no term is encoded). +** Otherwise, for terms greater than or equal to pTerm[i] but less +** than pTerm[i+1], the subtree for that term will be rooted at +** iBlockid+i. Interior nodes only store enough term data to +** distinguish adjacent children (if the rightmost term of the left +** child is "something", and the leftmost term of the right child is +** "wicked", only "w" is stored). +** +** New data is spilled to a new interior node at the same height when +** the current node exceeds INTERIOR_MAX bytes (default 2048). +** INTERIOR_MIN_TERMS (default 7) keeps large terms from monopolizing +** interior nodes and making the tree too skinny. The interior nodes +** at a given height are naturally tracked by interior nodes at +** height+1, and so on. +** +** +**** Segment directory **** +** The segment directory in table %_segdir stores meta-information for +** merging and deleting segments, and also the root node of the +** segment's tree. +** +** The root node is the top node of the segment's tree after encoding +** the entire segment, restricted to ROOT_MAX bytes (default 1024). +** This could be either a leaf node or an interior node. If the top +** node requires more than ROOT_MAX bytes, it is flushed to %_segments +** and a new root interior node is generated (which should always fit +** within ROOT_MAX because it only needs space for 2 varints, the +** height and the blockid of the previous root). +** +** The meta-information in the segment directory is: +** level - segment level (see below) +** idx - index within level +** - (level,idx uniquely identify a segment) +** start_block - first leaf node +** leaves_end_block - last leaf node +** end_block - last block (including interior nodes) +** root - contents of root node +** +** If the root node is a leaf node, then start_block, +** leaves_end_block, and end_block are all 0. +** +** +**** Segment merging **** +** To amortize update costs, segments are grouped into levels and +** merged in batches. Each increase in level represents exponentially +** more documents. +** +** New documents (actually, document updates) are tokenized and +** written individually (using LeafWriter) to a level 0 segment, with +** incrementing idx. When idx reaches MERGE_COUNT (default 16), all +** level 0 segments are merged into a single level 1 segment. Level 1 +** is populated like level 0, and eventually MERGE_COUNT level 1 +** segments are merged to a single level 2 segment (representing +** MERGE_COUNT^2 updates), and so on. +** +** A segment merge traverses all segments at a given level in +** parallel, performing a straightforward sorted merge. Since segment +** leaf nodes are written in to the %_segments table in order, this +** merge traverses the underlying sqlite disk structures efficiently. +** After the merge, all segment blocks from the merged level are +** deleted. +** +** MERGE_COUNT controls how often we merge segments. 16 seems to be +** somewhat of a sweet spot for insertion performance. 32 and 64 show +** very similar performance numbers to 16 on insertion, though they're +** a tiny bit slower (perhaps due to more overhead in merge-time +** sorting). 8 is about 20% slower than 16, 4 about 50% slower than +** 16, 2 about 66% slower than 16. +** +** At query time, high MERGE_COUNT increases the number of segments +** which need to be scanned and merged. For instance, with 100k docs +** inserted: +** +** MERGE_COUNT segments +** 16 25 +** 8 12 +** 4 10 +** 2 6 +** +** This appears to have only a moderate impact on queries for very +** frequent terms (which are somewhat dominated by segment merge +** costs), and infrequent and non-existent terms still seem to be fast +** even with many segments. +** +** TODO(shess) That said, it would be nice to have a better query-side +** argument for MERGE_COUNT of 16. Also, it is possible/likely that +** optimizations to things like doclist merging will swing the sweet +** spot around. +** +** +** +**** Handling of deletions and updates **** +** Since we're using a segmented structure, with no docid-oriented +** index into the term index, we clearly cannot simply update the term +** index when a document is deleted or updated. For deletions, we +** write an empty doclist (varint(docid) varint(POS_END)), for updates +** we simply write the new doclist. Segment merges overwrite older +** data for a particular docid with newer data, so deletes or updates +** will eventually overtake the earlier data and knock it out. The +** query logic likewise merges doclists so that newer data knocks out +** older data. +*/ + +#include "fts3Int.h" +#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) + +#if defined(SQLITE_ENABLE_FTS3) && !defined(SQLITE_CORE) +# define SQLITE_CORE 1 +#endif + +#include +#include +#include +#include +#include +#include + +#include "fts3.h" +#ifndef SQLITE_CORE +# include "sqlite3ext.h" + SQLITE_EXTENSION_INIT1 +#endif + +static int fts3EvalNext(Fts3Cursor *pCsr); +static int fts3EvalStart(Fts3Cursor *pCsr); +static int fts3TermSegReaderCursor( + Fts3Cursor *, const char *, int, int, Fts3MultiSegReader **); + +/* +** Write a 64-bit variable-length integer to memory starting at p[0]. +** The length of data written will be between 1 and FTS3_VARINT_MAX bytes. +** The number of bytes written is returned. +*/ +int sqlite3Fts3PutVarint(char *p, sqlite_int64 v){ + unsigned char *q = (unsigned char *) p; + sqlite_uint64 vu = v; + do{ + *q++ = (unsigned char) ((vu & 0x7f) | 0x80); + vu >>= 7; + }while( vu!=0 ); + q[-1] &= 0x7f; /* turn off high bit in final byte */ + assert( q - (unsigned char *)p <= FTS3_VARINT_MAX ); + return (int) (q - (unsigned char *)p); +} + +/* +** Read a 64-bit variable-length integer from memory starting at p[0]. +** Return the number of bytes read, or 0 on error. +** The value is stored in *v. +*/ +int sqlite3Fts3GetVarint(const char *p, sqlite_int64 *v){ + const unsigned char *q = (const unsigned char *) p; + sqlite_uint64 x = 0, y = 1; + while( (*q&0x80)==0x80 && q-(unsigned char *)p>= 7; + }while( v!=0 ); + return i; +} + +/* +** Convert an SQL-style quoted string into a normal string by removing +** the quote characters. The conversion is done in-place. If the +** input does not begin with a quote character, then this routine +** is a no-op. +** +** Examples: +** +** "abc" becomes abc +** 'xyz' becomes xyz +** [pqr] becomes pqr +** `mno` becomes mno +** +*/ +void sqlite3Fts3Dequote(char *z){ + char quote; /* Quote character (if any ) */ + + quote = z[0]; + if( quote=='[' || quote=='\'' || quote=='"' || quote=='`' ){ + int iIn = 1; /* Index of next byte to read from input */ + int iOut = 0; /* Index of next byte to write to output */ + + /* If the first byte was a '[', then the close-quote character is a ']' */ + if( quote=='[' ) quote = ']'; + + while( ALWAYS(z[iIn]) ){ + if( z[iIn]==quote ){ + if( z[iIn+1]!=quote ) break; + z[iOut++] = quote; + iIn += 2; + }else{ + z[iOut++] = z[iIn++]; + } + } + z[iOut] = '\0'; + } +} + +/* +** Read a single varint from the doclist at *pp and advance *pp to point +** to the first byte past the end of the varint. Add the value of the varint +** to *pVal. +*/ +static void fts3GetDeltaVarint(char **pp, sqlite3_int64 *pVal){ + sqlite3_int64 iVal; + *pp += sqlite3Fts3GetVarint(*pp, &iVal); + *pVal += iVal; +} + +/* +** When this function is called, *pp points to the first byte following a +** varint that is part of a doclist (or position-list, or any other list +** of varints). This function moves *pp to point to the start of that varint, +** and sets *pVal by the varint value. +** +** Argument pStart points to the first byte of the doclist that the +** varint is part of. +*/ +static void fts3GetReverseVarint( + char **pp, + char *pStart, + sqlite3_int64 *pVal +){ + sqlite3_int64 iVal; + char *p; + + /* Pointer p now points at the first byte past the varint we are + ** interested in. So, unless the doclist is corrupt, the 0x80 bit is + ** clear on character p[-1]. */ + for(p = (*pp)-2; p>=pStart && *p&0x80; p--); + p++; + *pp = p; + + sqlite3Fts3GetVarint(p, &iVal); + *pVal = iVal; +} + +/* +** The xDisconnect() virtual table method. +*/ +static int fts3DisconnectMethod(sqlite3_vtab *pVtab){ + Fts3Table *p = (Fts3Table *)pVtab; + int i; + + assert( p->nPendingData==0 ); + assert( p->pSegments==0 ); + + /* Free any prepared statements held */ + for(i=0; iaStmt); i++){ + sqlite3_finalize(p->aStmt[i]); + } + sqlite3_free(p->zSegmentsTbl); + sqlite3_free(p->zReadExprlist); + sqlite3_free(p->zWriteExprlist); + sqlite3_free(p->zContentTbl); + sqlite3_free(p->zLanguageid); + + /* Invoke the tokenizer destructor to free the tokenizer. */ + p->pTokenizer->pModule->xDestroy(p->pTokenizer); + + sqlite3_free(p); + return SQLITE_OK; +} + +/* +** Construct one or more SQL statements from the format string given +** and then evaluate those statements. The success code is written +** into *pRc. +** +** If *pRc is initially non-zero then this routine is a no-op. +*/ +static void fts3DbExec( + int *pRc, /* Success code */ + sqlite3 *db, /* Database in which to run SQL */ + const char *zFormat, /* Format string for SQL */ + ... /* Arguments to the format string */ +){ + va_list ap; + char *zSql; + if( *pRc ) return; + va_start(ap, zFormat); + zSql = sqlite3_vmprintf(zFormat, ap); + va_end(ap); + if( zSql==0 ){ + *pRc = SQLITE_NOMEM; + }else{ + *pRc = sqlite3_exec(db, zSql, 0, 0, 0); + sqlite3_free(zSql); + } +} + +/* +** The xDestroy() virtual table method. +*/ +static int fts3DestroyMethod(sqlite3_vtab *pVtab){ + Fts3Table *p = (Fts3Table *)pVtab; + int rc = SQLITE_OK; /* Return code */ + const char *zDb = p->zDb; /* Name of database (e.g. "main", "temp") */ + sqlite3 *db = p->db; /* Database handle */ + + /* Drop the shadow tables */ + if( p->zContentTbl==0 ){ + fts3DbExec(&rc, db, "DROP TABLE IF EXISTS %Q.'%q_content'", zDb, p->zName); + } + fts3DbExec(&rc, db, "DROP TABLE IF EXISTS %Q.'%q_segments'", zDb,p->zName); + fts3DbExec(&rc, db, "DROP TABLE IF EXISTS %Q.'%q_segdir'", zDb, p->zName); + fts3DbExec(&rc, db, "DROP TABLE IF EXISTS %Q.'%q_docsize'", zDb, p->zName); + fts3DbExec(&rc, db, "DROP TABLE IF EXISTS %Q.'%q_stat'", zDb, p->zName); + + /* If everything has worked, invoke fts3DisconnectMethod() to free the + ** memory associated with the Fts3Table structure and return SQLITE_OK. + ** Otherwise, return an SQLite error code. + */ + return (rc==SQLITE_OK ? fts3DisconnectMethod(pVtab) : rc); +} + + +/* +** Invoke sqlite3_declare_vtab() to declare the schema for the FTS3 table +** passed as the first argument. This is done as part of the xConnect() +** and xCreate() methods. +** +** If *pRc is non-zero when this function is called, it is a no-op. +** Otherwise, if an error occurs, an SQLite error code is stored in *pRc +** before returning. +*/ +static void fts3DeclareVtab(int *pRc, Fts3Table *p){ + if( *pRc==SQLITE_OK ){ + int i; /* Iterator variable */ + int rc; /* Return code */ + char *zSql; /* SQL statement passed to declare_vtab() */ + char *zCols; /* List of user defined columns */ + const char *zLanguageid; + + zLanguageid = (p->zLanguageid ? p->zLanguageid : "__langid"); + sqlite3_vtab_config(p->db, SQLITE_VTAB_CONSTRAINT_SUPPORT, 1); + + /* Create a list of user columns for the virtual table */ + zCols = sqlite3_mprintf("%Q, ", p->azColumn[0]); + for(i=1; zCols && inColumn; i++){ + zCols = sqlite3_mprintf("%z%Q, ", zCols, p->azColumn[i]); + } + + /* Create the whole "CREATE TABLE" statement to pass to SQLite */ + zSql = sqlite3_mprintf( + "CREATE TABLE x(%s %Q HIDDEN, docid HIDDEN, %Q HIDDEN)", + zCols, p->zName, zLanguageid + ); + if( !zCols || !zSql ){ + rc = SQLITE_NOMEM; + }else{ + rc = sqlite3_declare_vtab(p->db, zSql); + } + + sqlite3_free(zSql); + sqlite3_free(zCols); + *pRc = rc; + } +} + +/* +** Create the %_stat table if it does not already exist. +*/ +void sqlite3Fts3CreateStatTable(int *pRc, Fts3Table *p){ + fts3DbExec(pRc, p->db, + "CREATE TABLE IF NOT EXISTS %Q.'%q_stat'" + "(id INTEGER PRIMARY KEY, value BLOB);", + p->zDb, p->zName + ); + if( (*pRc)==SQLITE_OK ) p->bHasStat = 1; +} + +/* +** Create the backing store tables (%_content, %_segments and %_segdir) +** required by the FTS3 table passed as the only argument. This is done +** as part of the vtab xCreate() method. +** +** If the p->bHasDocsize boolean is true (indicating that this is an +** FTS4 table, not an FTS3 table) then also create the %_docsize and +** %_stat tables required by FTS4. +*/ +static int fts3CreateTables(Fts3Table *p){ + int rc = SQLITE_OK; /* Return code */ + int i; /* Iterator variable */ + sqlite3 *db = p->db; /* The database connection */ + + if( p->zContentTbl==0 ){ + const char *zLanguageid = p->zLanguageid; + char *zContentCols; /* Columns of %_content table */ + + /* Create a list of user columns for the content table */ + zContentCols = sqlite3_mprintf("docid INTEGER PRIMARY KEY"); + for(i=0; zContentCols && inColumn; i++){ + char *z = p->azColumn[i]; + zContentCols = sqlite3_mprintf("%z, 'c%d%q'", zContentCols, i, z); + } + if( zLanguageid && zContentCols ){ + zContentCols = sqlite3_mprintf("%z, langid", zContentCols, zLanguageid); + } + if( zContentCols==0 ) rc = SQLITE_NOMEM; + + /* Create the content table */ + fts3DbExec(&rc, db, + "CREATE TABLE %Q.'%q_content'(%s)", + p->zDb, p->zName, zContentCols + ); + sqlite3_free(zContentCols); + } + + /* Create other tables */ + fts3DbExec(&rc, db, + "CREATE TABLE %Q.'%q_segments'(blockid INTEGER PRIMARY KEY, block BLOB);", + p->zDb, p->zName + ); + fts3DbExec(&rc, db, + "CREATE TABLE %Q.'%q_segdir'(" + "level INTEGER," + "idx INTEGER," + "start_block INTEGER," + "leaves_end_block INTEGER," + "end_block INTEGER," + "root BLOB," + "PRIMARY KEY(level, idx)" + ");", + p->zDb, p->zName + ); + if( p->bHasDocsize ){ + fts3DbExec(&rc, db, + "CREATE TABLE %Q.'%q_docsize'(docid INTEGER PRIMARY KEY, size BLOB);", + p->zDb, p->zName + ); + } + assert( p->bHasStat==p->bFts4 ); + if( p->bHasStat ){ + sqlite3Fts3CreateStatTable(&rc, p); + } + return rc; +} + +/* +** Store the current database page-size in bytes in p->nPgsz. +** +** If *pRc is non-zero when this function is called, it is a no-op. +** Otherwise, if an error occurs, an SQLite error code is stored in *pRc +** before returning. +*/ +static void fts3DatabasePageSize(int *pRc, Fts3Table *p){ + if( *pRc==SQLITE_OK ){ + int rc; /* Return code */ + char *zSql; /* SQL text "PRAGMA %Q.page_size" */ + sqlite3_stmt *pStmt; /* Compiled "PRAGMA %Q.page_size" statement */ + + zSql = sqlite3_mprintf("PRAGMA %Q.page_size", p->zDb); + if( !zSql ){ + rc = SQLITE_NOMEM; + }else{ + rc = sqlite3_prepare(p->db, zSql, -1, &pStmt, 0); + if( rc==SQLITE_OK ){ + sqlite3_step(pStmt); + p->nPgsz = sqlite3_column_int(pStmt, 0); + rc = sqlite3_finalize(pStmt); + }else if( rc==SQLITE_AUTH ){ + p->nPgsz = 1024; + rc = SQLITE_OK; + } + } + assert( p->nPgsz>0 || rc!=SQLITE_OK ); + sqlite3_free(zSql); + *pRc = rc; + } +} + +/* +** "Special" FTS4 arguments are column specifications of the following form: +** +** = +** +** There may not be whitespace surrounding the "=" character. The +** term may be quoted, but the may not. +*/ +static int fts3IsSpecialColumn( + const char *z, + int *pnKey, + char **pzValue +){ + char *zValue; + const char *zCsr = z; + + while( *zCsr!='=' ){ + if( *zCsr=='\0' ) return 0; + zCsr++; + } + + *pnKey = (int)(zCsr-z); + zValue = sqlite3_mprintf("%s", &zCsr[1]); + if( zValue ){ + sqlite3Fts3Dequote(zValue); + } + *pzValue = zValue; + return 1; +} + +/* +** Append the output of a printf() style formatting to an existing string. +*/ +static void fts3Appendf( + int *pRc, /* IN/OUT: Error code */ + char **pz, /* IN/OUT: Pointer to string buffer */ + const char *zFormat, /* Printf format string to append */ + ... /* Arguments for printf format string */ +){ + if( *pRc==SQLITE_OK ){ + va_list ap; + char *z; + va_start(ap, zFormat); + z = sqlite3_vmprintf(zFormat, ap); + va_end(ap); + if( z && *pz ){ + char *z2 = sqlite3_mprintf("%s%s", *pz, z); + sqlite3_free(z); + z = z2; + } + if( z==0 ) *pRc = SQLITE_NOMEM; + sqlite3_free(*pz); + *pz = z; + } +} + +/* +** Return a copy of input string zInput enclosed in double-quotes (") and +** with all double quote characters escaped. For example: +** +** fts3QuoteId("un \"zip\"") -> "un \"\"zip\"\"" +** +** The pointer returned points to memory obtained from sqlite3_malloc(). It +** is the callers responsibility to call sqlite3_free() to release this +** memory. +*/ +static char *fts3QuoteId(char const *zInput){ + int nRet; + char *zRet; + nRet = 2 + (int)strlen(zInput)*2 + 1; + zRet = sqlite3_malloc(nRet); + if( zRet ){ + int i; + char *z = zRet; + *(z++) = '"'; + for(i=0; zInput[i]; i++){ + if( zInput[i]=='"' ) *(z++) = '"'; + *(z++) = zInput[i]; + } + *(z++) = '"'; + *(z++) = '\0'; + } + return zRet; +} + +/* +** Return a list of comma separated SQL expressions and a FROM clause that +** could be used in a SELECT statement such as the following: +** +** SELECT FROM %_content AS x ... +** +** to return the docid, followed by each column of text data in order +** from left to write. If parameter zFunc is not NULL, then instead of +** being returned directly each column of text data is passed to an SQL +** function named zFunc first. For example, if zFunc is "unzip" and the +** table has the three user-defined columns "a", "b", and "c", the following +** string is returned: +** +** "docid, unzip(x.'a'), unzip(x.'b'), unzip(x.'c') FROM %_content AS x" +** +** The pointer returned points to a buffer allocated by sqlite3_malloc(). It +** is the responsibility of the caller to eventually free it. +** +** If *pRc is not SQLITE_OK when this function is called, it is a no-op (and +** a NULL pointer is returned). Otherwise, if an OOM error is encountered +** by this function, NULL is returned and *pRc is set to SQLITE_NOMEM. If +** no error occurs, *pRc is left unmodified. +*/ +static char *fts3ReadExprList(Fts3Table *p, const char *zFunc, int *pRc){ + char *zRet = 0; + char *zFree = 0; + char *zFunction; + int i; + + if( p->zContentTbl==0 ){ + if( !zFunc ){ + zFunction = ""; + }else{ + zFree = zFunction = fts3QuoteId(zFunc); + } + fts3Appendf(pRc, &zRet, "docid"); + for(i=0; inColumn; i++){ + fts3Appendf(pRc, &zRet, ",%s(x.'c%d%q')", zFunction, i, p->azColumn[i]); + } + if( p->zLanguageid ){ + fts3Appendf(pRc, &zRet, ", x.%Q", "langid"); + } + sqlite3_free(zFree); + }else{ + fts3Appendf(pRc, &zRet, "rowid"); + for(i=0; inColumn; i++){ + fts3Appendf(pRc, &zRet, ", x.'%q'", p->azColumn[i]); + } + if( p->zLanguageid ){ + fts3Appendf(pRc, &zRet, ", x.%Q", p->zLanguageid); + } + } + fts3Appendf(pRc, &zRet, " FROM '%q'.'%q%s' AS x", + p->zDb, + (p->zContentTbl ? p->zContentTbl : p->zName), + (p->zContentTbl ? "" : "_content") + ); + return zRet; +} + +/* +** Return a list of N comma separated question marks, where N is the number +** of columns in the %_content table (one for the docid plus one for each +** user-defined text column). +** +** If argument zFunc is not NULL, then all but the first question mark +** is preceded by zFunc and an open bracket, and followed by a closed +** bracket. For example, if zFunc is "zip" and the FTS3 table has three +** user-defined text columns, the following string is returned: +** +** "?, zip(?), zip(?), zip(?)" +** +** The pointer returned points to a buffer allocated by sqlite3_malloc(). It +** is the responsibility of the caller to eventually free it. +** +** If *pRc is not SQLITE_OK when this function is called, it is a no-op (and +** a NULL pointer is returned). Otherwise, if an OOM error is encountered +** by this function, NULL is returned and *pRc is set to SQLITE_NOMEM. If +** no error occurs, *pRc is left unmodified. +*/ +static char *fts3WriteExprList(Fts3Table *p, const char *zFunc, int *pRc){ + char *zRet = 0; + char *zFree = 0; + char *zFunction; + int i; + + if( !zFunc ){ + zFunction = ""; + }else{ + zFree = zFunction = fts3QuoteId(zFunc); + } + fts3Appendf(pRc, &zRet, "?"); + for(i=0; inColumn; i++){ + fts3Appendf(pRc, &zRet, ",%s(?)", zFunction); + } + if( p->zLanguageid ){ + fts3Appendf(pRc, &zRet, ", ?"); + } + sqlite3_free(zFree); + return zRet; +} + +/* +** This function interprets the string at (*pp) as a non-negative integer +** value. It reads the integer and sets *pnOut to the value read, then +** sets *pp to point to the byte immediately following the last byte of +** the integer value. +** +** Only decimal digits ('0'..'9') may be part of an integer value. +** +** If *pp does not being with a decimal digit SQLITE_ERROR is returned and +** the output value undefined. Otherwise SQLITE_OK is returned. +** +** This function is used when parsing the "prefix=" FTS4 parameter. +*/ +static int fts3GobbleInt(const char **pp, int *pnOut){ + const char *p; /* Iterator pointer */ + int nInt = 0; /* Output value */ + + for(p=*pp; p[0]>='0' && p[0]<='9'; p++){ + nInt = nInt * 10 + (p[0] - '0'); + } + if( p==*pp ) return SQLITE_ERROR; + *pnOut = nInt; + *pp = p; + return SQLITE_OK; +} + +/* +** This function is called to allocate an array of Fts3Index structures +** representing the indexes maintained by the current FTS table. FTS tables +** always maintain the main "terms" index, but may also maintain one or +** more "prefix" indexes, depending on the value of the "prefix=" parameter +** (if any) specified as part of the CREATE VIRTUAL TABLE statement. +** +** Argument zParam is passed the value of the "prefix=" option if one was +** specified, or NULL otherwise. +** +** If no error occurs, SQLITE_OK is returned and *apIndex set to point to +** the allocated array. *pnIndex is set to the number of elements in the +** array. If an error does occur, an SQLite error code is returned. +** +** Regardless of whether or not an error is returned, it is the responsibility +** of the caller to call sqlite3_free() on the output array to free it. +*/ +static int fts3PrefixParameter( + const char *zParam, /* ABC in prefix=ABC parameter to parse */ + int *pnIndex, /* OUT: size of *apIndex[] array */ + struct Fts3Index **apIndex /* OUT: Array of indexes for this table */ +){ + struct Fts3Index *aIndex; /* Allocated array */ + int nIndex = 1; /* Number of entries in array */ + + if( zParam && zParam[0] ){ + const char *p; + nIndex++; + for(p=zParam; *p; p++){ + if( *p==',' ) nIndex++; + } + } + + aIndex = sqlite3_malloc(sizeof(struct Fts3Index) * nIndex); + *apIndex = aIndex; + *pnIndex = nIndex; + if( !aIndex ){ + return SQLITE_NOMEM; + } + + memset(aIndex, 0, sizeof(struct Fts3Index) * nIndex); + if( zParam ){ + const char *p = zParam; + int i; + for(i=1; i module name ("fts3" or "fts4") +** argv[1] -> database name +** argv[2] -> table name +** argv[...] -> "column name" and other module argument fields. +*/ +static int fts3InitVtab( + int isCreate, /* True for xCreate, false for xConnect */ + sqlite3 *db, /* The SQLite database connection */ + void *pAux, /* Hash table containing tokenizers */ + int argc, /* Number of elements in argv array */ + const char * const *argv, /* xCreate/xConnect argument array */ + sqlite3_vtab **ppVTab, /* Write the resulting vtab structure here */ + char **pzErr /* Write any error message here */ +){ + Fts3Hash *pHash = (Fts3Hash *)pAux; + Fts3Table *p = 0; /* Pointer to allocated vtab */ + int rc = SQLITE_OK; /* Return code */ + int i; /* Iterator variable */ + int nByte; /* Size of allocation used for *p */ + int iCol; /* Column index */ + int nString = 0; /* Bytes required to hold all column names */ + int nCol = 0; /* Number of columns in the FTS table */ + char *zCsr; /* Space for holding column names */ + int nDb; /* Bytes required to hold database name */ + int nName; /* Bytes required to hold table name */ + int isFts4 = (argv[0][3]=='4'); /* True for FTS4, false for FTS3 */ + const char **aCol; /* Array of column names */ + sqlite3_tokenizer *pTokenizer = 0; /* Tokenizer for this table */ + + int nIndex; /* Size of aIndex[] array */ + struct Fts3Index *aIndex = 0; /* Array of indexes for this table */ + + /* The results of parsing supported FTS4 key=value options: */ + int bNoDocsize = 0; /* True to omit %_docsize table */ + int bDescIdx = 0; /* True to store descending indexes */ + char *zPrefix = 0; /* Prefix parameter value (or NULL) */ + char *zCompress = 0; /* compress=? parameter (or NULL) */ + char *zUncompress = 0; /* uncompress=? parameter (or NULL) */ + char *zContent = 0; /* content=? parameter (or NULL) */ + char *zLanguageid = 0; /* languageid=? parameter (or NULL) */ + + assert( strlen(argv[0])==4 ); + assert( (sqlite3_strnicmp(argv[0], "fts4", 4)==0 && isFts4) + || (sqlite3_strnicmp(argv[0], "fts3", 4)==0 && !isFts4) + ); + + nDb = (int)strlen(argv[1]) + 1; + nName = (int)strlen(argv[2]) + 1; + + aCol = (const char **)sqlite3_malloc(sizeof(const char *) * (argc-2) ); + if( !aCol ) return SQLITE_NOMEM; + memset((void *)aCol, 0, sizeof(const char *) * (argc-2)); + + /* Loop through all of the arguments passed by the user to the FTS3/4 + ** module (i.e. all the column names and special arguments). This loop + ** does the following: + ** + ** + Figures out the number of columns the FTSX table will have, and + ** the number of bytes of space that must be allocated to store copies + ** of the column names. + ** + ** + If there is a tokenizer specification included in the arguments, + ** initializes the tokenizer pTokenizer. + */ + for(i=3; rc==SQLITE_OK && i8 + && 0==sqlite3_strnicmp(z, "tokenize", 8) + && 0==sqlite3Fts3IsIdChar(z[8]) + ){ + rc = sqlite3Fts3InitTokenizer(pHash, &z[9], &pTokenizer, pzErr); + } + + /* Check if it is an FTS4 special argument. */ + else if( isFts4 && fts3IsSpecialColumn(z, &nKey, &zVal) ){ + struct Fts4Option { + const char *zOpt; + int nOpt; + } aFts4Opt[] = { + { "matchinfo", 9 }, /* 0 -> MATCHINFO */ + { "prefix", 6 }, /* 1 -> PREFIX */ + { "compress", 8 }, /* 2 -> COMPRESS */ + { "uncompress", 10 }, /* 3 -> UNCOMPRESS */ + { "order", 5 }, /* 4 -> ORDER */ + { "content", 7 }, /* 5 -> CONTENT */ + { "languageid", 10 } /* 6 -> LANGUAGEID */ + }; + + int iOpt; + if( !zVal ){ + rc = SQLITE_NOMEM; + }else{ + for(iOpt=0; iOptnOpt && !sqlite3_strnicmp(z, pOp->zOpt, pOp->nOpt) ){ + break; + } + } + if( iOpt==SizeofArray(aFts4Opt) ){ + *pzErr = sqlite3_mprintf("unrecognized parameter: %s", z); + rc = SQLITE_ERROR; + }else{ + switch( iOpt ){ + case 0: /* MATCHINFO */ + if( strlen(zVal)!=4 || sqlite3_strnicmp(zVal, "fts3", 4) ){ + *pzErr = sqlite3_mprintf("unrecognized matchinfo: %s", zVal); + rc = SQLITE_ERROR; + } + bNoDocsize = 1; + break; + + case 1: /* PREFIX */ + sqlite3_free(zPrefix); + zPrefix = zVal; + zVal = 0; + break; + + case 2: /* COMPRESS */ + sqlite3_free(zCompress); + zCompress = zVal; + zVal = 0; + break; + + case 3: /* UNCOMPRESS */ + sqlite3_free(zUncompress); + zUncompress = zVal; + zVal = 0; + break; + + case 4: /* ORDER */ + if( (strlen(zVal)!=3 || sqlite3_strnicmp(zVal, "asc", 3)) + && (strlen(zVal)!=4 || sqlite3_strnicmp(zVal, "desc", 4)) + ){ + *pzErr = sqlite3_mprintf("unrecognized order: %s", zVal); + rc = SQLITE_ERROR; + } + bDescIdx = (zVal[0]=='d' || zVal[0]=='D'); + break; + + case 5: /* CONTENT */ + sqlite3_free(zContent); + zContent = zVal; + zVal = 0; + break; + + case 6: /* LANGUAGEID */ + assert( iOpt==6 ); + sqlite3_free(zLanguageid); + zLanguageid = zVal; + zVal = 0; + break; + } + } + sqlite3_free(zVal); + } + } + + /* Otherwise, the argument is a column name. */ + else { + nString += (int)(strlen(z) + 1); + aCol[nCol++] = z; + } + } + + /* If a content=xxx option was specified, the following: + ** + ** 1. Ignore any compress= and uncompress= options. + ** + ** 2. If no column names were specified as part of the CREATE VIRTUAL + ** TABLE statement, use all columns from the content table. + */ + if( rc==SQLITE_OK && zContent ){ + sqlite3_free(zCompress); + sqlite3_free(zUncompress); + zCompress = 0; + zUncompress = 0; + if( nCol==0 ){ + sqlite3_free((void*)aCol); + aCol = 0; + rc = fts3ContentColumns(db, argv[1], zContent, &aCol, &nCol, &nString); + + /* If a languageid= option was specified, remove the language id + ** column from the aCol[] array. */ + if( rc==SQLITE_OK && zLanguageid ){ + int j; + for(j=0; jdb = db; + p->nColumn = nCol; + p->nPendingData = 0; + p->azColumn = (char **)&p[1]; + p->pTokenizer = pTokenizer; + p->nMaxPendingData = FTS3_MAX_PENDING_DATA; + p->bHasDocsize = (isFts4 && bNoDocsize==0); + p->bHasStat = isFts4; + p->bFts4 = isFts4; + p->bDescIdx = bDescIdx; + p->bAutoincrmerge = 0xff; /* 0xff means setting unknown */ + p->zContentTbl = zContent; + p->zLanguageid = zLanguageid; + zContent = 0; + zLanguageid = 0; + TESTONLY( p->inTransaction = -1 ); + TESTONLY( p->mxSavepoint = -1 ); + + p->aIndex = (struct Fts3Index *)&p->azColumn[nCol]; + memcpy(p->aIndex, aIndex, sizeof(struct Fts3Index) * nIndex); + p->nIndex = nIndex; + for(i=0; iaIndex[i].hPending, FTS3_HASH_STRING, 1); + } + + /* Fill in the zName and zDb fields of the vtab structure. */ + zCsr = (char *)&p->aIndex[nIndex]; + p->zName = zCsr; + memcpy(zCsr, argv[2], nName); + zCsr += nName; + p->zDb = zCsr; + memcpy(zCsr, argv[1], nDb); + zCsr += nDb; + + /* Fill in the azColumn array */ + for(iCol=0; iColazColumn[iCol] = zCsr; + zCsr += n+1; + assert( zCsr <= &((char *)p)[nByte] ); + } + + if( (zCompress==0)!=(zUncompress==0) ){ + char const *zMiss = (zCompress==0 ? "compress" : "uncompress"); + rc = SQLITE_ERROR; + *pzErr = sqlite3_mprintf("missing %s parameter in fts4 constructor", zMiss); + } + p->zReadExprlist = fts3ReadExprList(p, zUncompress, &rc); + p->zWriteExprlist = fts3WriteExprList(p, zCompress, &rc); + if( rc!=SQLITE_OK ) goto fts3_init_out; + + /* If this is an xCreate call, create the underlying tables in the + ** database. TODO: For xConnect(), it could verify that said tables exist. + */ + if( isCreate ){ + rc = fts3CreateTables(p); + } + + /* Check to see if a legacy fts3 table has been "upgraded" by the + ** addition of a %_stat table so that it can use incremental merge. + */ + if( !isFts4 && !isCreate ){ + int rc2 = SQLITE_OK; + fts3DbExec(&rc2, db, "SELECT 1 FROM %Q.'%q_stat' WHERE id=2", + p->zDb, p->zName); + if( rc2==SQLITE_OK ) p->bHasStat = 1; + } + + /* Figure out the page-size for the database. This is required in order to + ** estimate the cost of loading large doclists from the database. */ + fts3DatabasePageSize(&rc, p); + p->nNodeSize = p->nPgsz-35; + + /* Declare the table schema to SQLite. */ + fts3DeclareVtab(&rc, p); + +fts3_init_out: + sqlite3_free(zPrefix); + sqlite3_free(aIndex); + sqlite3_free(zCompress); + sqlite3_free(zUncompress); + sqlite3_free(zContent); + sqlite3_free(zLanguageid); + sqlite3_free((void *)aCol); + if( rc!=SQLITE_OK ){ + if( p ){ + fts3DisconnectMethod((sqlite3_vtab *)p); + }else if( pTokenizer ){ + pTokenizer->pModule->xDestroy(pTokenizer); + } + }else{ + assert( p->pSegments==0 ); + *ppVTab = &p->base; + } + return rc; +} + +/* +** The xConnect() and xCreate() methods for the virtual table. All the +** work is done in function fts3InitVtab(). +*/ +static int fts3ConnectMethod( + sqlite3 *db, /* Database connection */ + void *pAux, /* Pointer to tokenizer hash table */ + int argc, /* Number of elements in argv array */ + const char * const *argv, /* xCreate/xConnect argument array */ + sqlite3_vtab **ppVtab, /* OUT: New sqlite3_vtab object */ + char **pzErr /* OUT: sqlite3_malloc'd error message */ +){ + return fts3InitVtab(0, db, pAux, argc, argv, ppVtab, pzErr); +} +static int fts3CreateMethod( + sqlite3 *db, /* Database connection */ + void *pAux, /* Pointer to tokenizer hash table */ + int argc, /* Number of elements in argv array */ + const char * const *argv, /* xCreate/xConnect argument array */ + sqlite3_vtab **ppVtab, /* OUT: New sqlite3_vtab object */ + char **pzErr /* OUT: sqlite3_malloc'd error message */ +){ + return fts3InitVtab(1, db, pAux, argc, argv, ppVtab, pzErr); +} + +/* +** Implementation of the xBestIndex method for FTS3 tables. There +** are three possible strategies, in order of preference: +** +** 1. Direct lookup by rowid or docid. +** 2. Full-text search using a MATCH operator on a non-docid column. +** 3. Linear scan of %_content table. +*/ +static int fts3BestIndexMethod(sqlite3_vtab *pVTab, sqlite3_index_info *pInfo){ + Fts3Table *p = (Fts3Table *)pVTab; + int i; /* Iterator variable */ + int iCons = -1; /* Index of constraint to use */ + int iLangidCons = -1; /* Index of langid=x constraint, if present */ + + /* By default use a full table scan. This is an expensive option, + ** so search through the constraints to see if a more efficient + ** strategy is possible. + */ + pInfo->idxNum = FTS3_FULLSCAN_SEARCH; + pInfo->estimatedCost = 500000; + for(i=0; inConstraint; i++){ + struct sqlite3_index_constraint *pCons = &pInfo->aConstraint[i]; + if( pCons->usable==0 ) continue; + + /* A direct lookup on the rowid or docid column. Assign a cost of 1.0. */ + if( iCons<0 + && pCons->op==SQLITE_INDEX_CONSTRAINT_EQ + && (pCons->iColumn<0 || pCons->iColumn==p->nColumn+1 ) + ){ + pInfo->idxNum = FTS3_DOCID_SEARCH; + pInfo->estimatedCost = 1.0; + iCons = i; + } + + /* A MATCH constraint. Use a full-text search. + ** + ** If there is more than one MATCH constraint available, use the first + ** one encountered. If there is both a MATCH constraint and a direct + ** rowid/docid lookup, prefer the MATCH strategy. This is done even + ** though the rowid/docid lookup is faster than a MATCH query, selecting + ** it would lead to an "unable to use function MATCH in the requested + ** context" error. + */ + if( pCons->op==SQLITE_INDEX_CONSTRAINT_MATCH + && pCons->iColumn>=0 && pCons->iColumn<=p->nColumn + ){ + pInfo->idxNum = FTS3_FULLTEXT_SEARCH + pCons->iColumn; + pInfo->estimatedCost = 2.0; + iCons = i; + } + + /* Equality constraint on the langid column */ + if( pCons->op==SQLITE_INDEX_CONSTRAINT_EQ + && pCons->iColumn==p->nColumn + 2 + ){ + iLangidCons = i; + } + } + + if( iCons>=0 ){ + pInfo->aConstraintUsage[iCons].argvIndex = 1; + pInfo->aConstraintUsage[iCons].omit = 1; + } + if( iLangidCons>=0 ){ + pInfo->aConstraintUsage[iLangidCons].argvIndex = 2; + } + + /* Regardless of the strategy selected, FTS can deliver rows in rowid (or + ** docid) order. Both ascending and descending are possible. + */ + if( pInfo->nOrderBy==1 ){ + struct sqlite3_index_orderby *pOrder = &pInfo->aOrderBy[0]; + if( pOrder->iColumn<0 || pOrder->iColumn==p->nColumn+1 ){ + if( pOrder->desc ){ + pInfo->idxStr = "DESC"; + }else{ + pInfo->idxStr = "ASC"; + } + pInfo->orderByConsumed = 1; + } + } + + assert( p->pSegments==0 ); + return SQLITE_OK; +} + +/* +** Implementation of xOpen method. +*/ +static int fts3OpenMethod(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCsr){ + sqlite3_vtab_cursor *pCsr; /* Allocated cursor */ + + UNUSED_PARAMETER(pVTab); + + /* Allocate a buffer large enough for an Fts3Cursor structure. If the + ** allocation succeeds, zero it and return SQLITE_OK. Otherwise, + ** if the allocation fails, return SQLITE_NOMEM. + */ + *ppCsr = pCsr = (sqlite3_vtab_cursor *)sqlite3_malloc(sizeof(Fts3Cursor)); + if( !pCsr ){ + return SQLITE_NOMEM; + } + memset(pCsr, 0, sizeof(Fts3Cursor)); + return SQLITE_OK; +} + +/* +** Close the cursor. For additional information see the documentation +** on the xClose method of the virtual table interface. +*/ +static int fts3CloseMethod(sqlite3_vtab_cursor *pCursor){ + Fts3Cursor *pCsr = (Fts3Cursor *)pCursor; + assert( ((Fts3Table *)pCsr->base.pVtab)->pSegments==0 ); + sqlite3_finalize(pCsr->pStmt); + sqlite3Fts3ExprFree(pCsr->pExpr); + sqlite3Fts3FreeDeferredTokens(pCsr); + sqlite3_free(pCsr->aDoclist); + sqlite3_free(pCsr->aMatchinfo); + assert( ((Fts3Table *)pCsr->base.pVtab)->pSegments==0 ); + sqlite3_free(pCsr); + return SQLITE_OK; +} + +/* +** If pCsr->pStmt has not been prepared (i.e. if pCsr->pStmt==0), then +** compose and prepare an SQL statement of the form: +** +** "SELECT FROM %_content WHERE rowid = ?" +** +** (or the equivalent for a content=xxx table) and set pCsr->pStmt to +** it. If an error occurs, return an SQLite error code. +** +** Otherwise, set *ppStmt to point to pCsr->pStmt and return SQLITE_OK. +*/ +static int fts3CursorSeekStmt(Fts3Cursor *pCsr, sqlite3_stmt **ppStmt){ + int rc = SQLITE_OK; + if( pCsr->pStmt==0 ){ + Fts3Table *p = (Fts3Table *)pCsr->base.pVtab; + char *zSql; + zSql = sqlite3_mprintf("SELECT %s WHERE rowid = ?", p->zReadExprlist); + if( !zSql ) return SQLITE_NOMEM; + rc = sqlite3_prepare_v2(p->db, zSql, -1, &pCsr->pStmt, 0); + sqlite3_free(zSql); + } + *ppStmt = pCsr->pStmt; + return rc; +} + +/* +** Position the pCsr->pStmt statement so that it is on the row +** of the %_content table that contains the last match. Return +** SQLITE_OK on success. +*/ +static int fts3CursorSeek(sqlite3_context *pContext, Fts3Cursor *pCsr){ + int rc = SQLITE_OK; + if( pCsr->isRequireSeek ){ + sqlite3_stmt *pStmt = 0; + + rc = fts3CursorSeekStmt(pCsr, &pStmt); + if( rc==SQLITE_OK ){ + sqlite3_bind_int64(pCsr->pStmt, 1, pCsr->iPrevId); + pCsr->isRequireSeek = 0; + if( SQLITE_ROW==sqlite3_step(pCsr->pStmt) ){ + return SQLITE_OK; + }else{ + rc = sqlite3_reset(pCsr->pStmt); + if( rc==SQLITE_OK && ((Fts3Table *)pCsr->base.pVtab)->zContentTbl==0 ){ + /* If no row was found and no error has occured, then the %_content + ** table is missing a row that is present in the full-text index. + ** The data structures are corrupt. */ + rc = FTS_CORRUPT_VTAB; + pCsr->isEof = 1; + } + } + } + } + + if( rc!=SQLITE_OK && pContext ){ + sqlite3_result_error_code(pContext, rc); + } + return rc; +} + +/* +** This function is used to process a single interior node when searching +** a b-tree for a term or term prefix. The node data is passed to this +** function via the zNode/nNode parameters. The term to search for is +** passed in zTerm/nTerm. +** +** If piFirst is not NULL, then this function sets *piFirst to the blockid +** of the child node that heads the sub-tree that may contain the term. +** +** If piLast is not NULL, then *piLast is set to the right-most child node +** that heads a sub-tree that may contain a term for which zTerm/nTerm is +** a prefix. +** +** If an OOM error occurs, SQLITE_NOMEM is returned. Otherwise, SQLITE_OK. +*/ +static int fts3ScanInteriorNode( + const char *zTerm, /* Term to select leaves for */ + int nTerm, /* Size of term zTerm in bytes */ + const char *zNode, /* Buffer containing segment interior node */ + int nNode, /* Size of buffer at zNode */ + sqlite3_int64 *piFirst, /* OUT: Selected child node */ + sqlite3_int64 *piLast /* OUT: Selected child node */ +){ + int rc = SQLITE_OK; /* Return code */ + const char *zCsr = zNode; /* Cursor to iterate through node */ + const char *zEnd = &zCsr[nNode];/* End of interior node buffer */ + char *zBuffer = 0; /* Buffer to load terms into */ + int nAlloc = 0; /* Size of allocated buffer */ + int isFirstTerm = 1; /* True when processing first term on page */ + sqlite3_int64 iChild; /* Block id of child node to descend to */ + + /* Skip over the 'height' varint that occurs at the start of every + ** interior node. Then load the blockid of the left-child of the b-tree + ** node into variable iChild. + ** + ** Even if the data structure on disk is corrupted, this (reading two + ** varints from the buffer) does not risk an overread. If zNode is a + ** root node, then the buffer comes from a SELECT statement. SQLite does + ** not make this guarantee explicitly, but in practice there are always + ** either more than 20 bytes of allocated space following the nNode bytes of + ** contents, or two zero bytes. Or, if the node is read from the %_segments + ** table, then there are always 20 bytes of zeroed padding following the + ** nNode bytes of content (see sqlite3Fts3ReadBlock() for details). + */ + zCsr += sqlite3Fts3GetVarint(zCsr, &iChild); + zCsr += sqlite3Fts3GetVarint(zCsr, &iChild); + if( zCsr>zEnd ){ + return FTS_CORRUPT_VTAB; + } + + while( zCsrzEnd ){ + rc = FTS_CORRUPT_VTAB; + goto finish_scan; + } + if( nPrefix+nSuffix>nAlloc ){ + char *zNew; + nAlloc = (nPrefix+nSuffix) * 2; + zNew = (char *)sqlite3_realloc(zBuffer, nAlloc); + if( !zNew ){ + rc = SQLITE_NOMEM; + goto finish_scan; + } + zBuffer = zNew; + } + assert( zBuffer ); + memcpy(&zBuffer[nPrefix], zCsr, nSuffix); + nBuffer = nPrefix + nSuffix; + zCsr += nSuffix; + + /* Compare the term we are searching for with the term just loaded from + ** the interior node. If the specified term is greater than or equal + ** to the term from the interior node, then all terms on the sub-tree + ** headed by node iChild are smaller than zTerm. No need to search + ** iChild. + ** + ** If the interior node term is larger than the specified term, then + ** the tree headed by iChild may contain the specified term. + */ + cmp = memcmp(zTerm, zBuffer, (nBuffer>nTerm ? nTerm : nBuffer)); + if( piFirst && (cmp<0 || (cmp==0 && nBuffer>nTerm)) ){ + *piFirst = iChild; + piFirst = 0; + } + + if( piLast && cmp<0 ){ + *piLast = iChild; + piLast = 0; + } + + iChild++; + }; + + if( piFirst ) *piFirst = iChild; + if( piLast ) *piLast = iChild; + + finish_scan: + sqlite3_free(zBuffer); + return rc; +} + + +/* +** The buffer pointed to by argument zNode (size nNode bytes) contains an +** interior node of a b-tree segment. The zTerm buffer (size nTerm bytes) +** contains a term. This function searches the sub-tree headed by the zNode +** node for the range of leaf nodes that may contain the specified term +** or terms for which the specified term is a prefix. +** +** If piLeaf is not NULL, then *piLeaf is set to the blockid of the +** left-most leaf node in the tree that may contain the specified term. +** If piLeaf2 is not NULL, then *piLeaf2 is set to the blockid of the +** right-most leaf node that may contain a term for which the specified +** term is a prefix. +** +** It is possible that the range of returned leaf nodes does not contain +** the specified term or any terms for which it is a prefix. However, if the +** segment does contain any such terms, they are stored within the identified +** range. Because this function only inspects interior segment nodes (and +** never loads leaf nodes into memory), it is not possible to be sure. +** +** If an error occurs, an error code other than SQLITE_OK is returned. +*/ +static int fts3SelectLeaf( + Fts3Table *p, /* Virtual table handle */ + const char *zTerm, /* Term to select leaves for */ + int nTerm, /* Size of term zTerm in bytes */ + const char *zNode, /* Buffer containing segment interior node */ + int nNode, /* Size of buffer at zNode */ + sqlite3_int64 *piLeaf, /* Selected leaf node */ + sqlite3_int64 *piLeaf2 /* Selected leaf node */ +){ + int rc; /* Return code */ + int iHeight; /* Height of this node in tree */ + + assert( piLeaf || piLeaf2 ); + + sqlite3Fts3GetVarint32(zNode, &iHeight); + rc = fts3ScanInteriorNode(zTerm, nTerm, zNode, nNode, piLeaf, piLeaf2); + assert( !piLeaf2 || !piLeaf || rc!=SQLITE_OK || (*piLeaf<=*piLeaf2) ); + + if( rc==SQLITE_OK && iHeight>1 ){ + char *zBlob = 0; /* Blob read from %_segments table */ + int nBlob; /* Size of zBlob in bytes */ + + if( piLeaf && piLeaf2 && (*piLeaf!=*piLeaf2) ){ + rc = sqlite3Fts3ReadBlock(p, *piLeaf, &zBlob, &nBlob, 0); + if( rc==SQLITE_OK ){ + rc = fts3SelectLeaf(p, zTerm, nTerm, zBlob, nBlob, piLeaf, 0); + } + sqlite3_free(zBlob); + piLeaf = 0; + zBlob = 0; + } + + if( rc==SQLITE_OK ){ + rc = sqlite3Fts3ReadBlock(p, piLeaf?*piLeaf:*piLeaf2, &zBlob, &nBlob, 0); + } + if( rc==SQLITE_OK ){ + rc = fts3SelectLeaf(p, zTerm, nTerm, zBlob, nBlob, piLeaf, piLeaf2); + } + sqlite3_free(zBlob); + } + + return rc; +} + +/* +** This function is used to create delta-encoded serialized lists of FTS3 +** varints. Each call to this function appends a single varint to a list. +*/ +static void fts3PutDeltaVarint( + char **pp, /* IN/OUT: Output pointer */ + sqlite3_int64 *piPrev, /* IN/OUT: Previous value written to list */ + sqlite3_int64 iVal /* Write this value to the list */ +){ + assert( iVal-*piPrev > 0 || (*piPrev==0 && iVal==0) ); + *pp += sqlite3Fts3PutVarint(*pp, iVal-*piPrev); + *piPrev = iVal; +} + +/* +** When this function is called, *ppPoslist is assumed to point to the +** start of a position-list. After it returns, *ppPoslist points to the +** first byte after the position-list. +** +** A position list is list of positions (delta encoded) and columns for +** a single document record of a doclist. So, in other words, this +** routine advances *ppPoslist so that it points to the next docid in +** the doclist, or to the first byte past the end of the doclist. +** +** If pp is not NULL, then the contents of the position list are copied +** to *pp. *pp is set to point to the first byte past the last byte copied +** before this function returns. +*/ +static void fts3PoslistCopy(char **pp, char **ppPoslist){ + char *pEnd = *ppPoslist; + char c = 0; + + /* The end of a position list is marked by a zero encoded as an FTS3 + ** varint. A single POS_END (0) byte. Except, if the 0 byte is preceded by + ** a byte with the 0x80 bit set, then it is not a varint 0, but the tail + ** of some other, multi-byte, value. + ** + ** The following while-loop moves pEnd to point to the first byte that is not + ** immediately preceded by a byte with the 0x80 bit set. Then increments + ** pEnd once more so that it points to the byte immediately following the + ** last byte in the position-list. + */ + while( *pEnd | c ){ + c = *pEnd++ & 0x80; + testcase( c!=0 && (*pEnd)==0 ); + } + pEnd++; /* Advance past the POS_END terminator byte */ + + if( pp ){ + int n = (int)(pEnd - *ppPoslist); + char *p = *pp; + memcpy(p, *ppPoslist, n); + p += n; + *pp = p; + } + *ppPoslist = pEnd; +} + +/* +** When this function is called, *ppPoslist is assumed to point to the +** start of a column-list. After it returns, *ppPoslist points to the +** to the terminator (POS_COLUMN or POS_END) byte of the column-list. +** +** A column-list is list of delta-encoded positions for a single column +** within a single document within a doclist. +** +** The column-list is terminated either by a POS_COLUMN varint (1) or +** a POS_END varint (0). This routine leaves *ppPoslist pointing to +** the POS_COLUMN or POS_END that terminates the column-list. +** +** If pp is not NULL, then the contents of the column-list are copied +** to *pp. *pp is set to point to the first byte past the last byte copied +** before this function returns. The POS_COLUMN or POS_END terminator +** is not copied into *pp. +*/ +static void fts3ColumnlistCopy(char **pp, char **ppPoslist){ + char *pEnd = *ppPoslist; + char c = 0; + + /* A column-list is terminated by either a 0x01 or 0x00 byte that is + ** not part of a multi-byte varint. + */ + while( 0xFE & (*pEnd | c) ){ + c = *pEnd++ & 0x80; + testcase( c!=0 && ((*pEnd)&0xfe)==0 ); + } + if( pp ){ + int n = (int)(pEnd - *ppPoslist); + char *p = *pp; + memcpy(p, *ppPoslist, n); + p += n; + *pp = p; + } + *ppPoslist = pEnd; +} + +/* +** Value used to signify the end of an position-list. This is safe because +** it is not possible to have a document with 2^31 terms. +*/ +#define POSITION_LIST_END 0x7fffffff + +/* +** This function is used to help parse position-lists. When this function is +** called, *pp may point to the start of the next varint in the position-list +** being parsed, or it may point to 1 byte past the end of the position-list +** (in which case **pp will be a terminator bytes POS_END (0) or +** (1)). +** +** If *pp points past the end of the current position-list, set *pi to +** POSITION_LIST_END and return. Otherwise, read the next varint from *pp, +** increment the current value of *pi by the value read, and set *pp to +** point to the next value before returning. +** +** Before calling this routine *pi must be initialized to the value of +** the previous position, or zero if we are reading the first position +** in the position-list. Because positions are delta-encoded, the value +** of the previous position is needed in order to compute the value of +** the next position. +*/ +static void fts3ReadNextPos( + char **pp, /* IN/OUT: Pointer into position-list buffer */ + sqlite3_int64 *pi /* IN/OUT: Value read from position-list */ +){ + if( (**pp)&0xFE ){ + fts3GetDeltaVarint(pp, pi); + *pi -= 2; + }else{ + *pi = POSITION_LIST_END; + } +} + +/* +** If parameter iCol is not 0, write an POS_COLUMN (1) byte followed by +** the value of iCol encoded as a varint to *pp. This will start a new +** column list. +** +** Set *pp to point to the byte just after the last byte written before +** returning (do not modify it if iCol==0). Return the total number of bytes +** written (0 if iCol==0). +*/ +static int fts3PutColNumber(char **pp, int iCol){ + int n = 0; /* Number of bytes written */ + if( iCol ){ + char *p = *pp; /* Output pointer */ + n = 1 + sqlite3Fts3PutVarint(&p[1], iCol); + *p = 0x01; + *pp = &p[n]; + } + return n; +} + +/* +** Compute the union of two position lists. The output written +** into *pp contains all positions of both *pp1 and *pp2 in sorted +** order and with any duplicates removed. All pointers are +** updated appropriately. The caller is responsible for insuring +** that there is enough space in *pp to hold the complete output. +*/ +static void fts3PoslistMerge( + char **pp, /* Output buffer */ + char **pp1, /* Left input list */ + char **pp2 /* Right input list */ +){ + char *p = *pp; + char *p1 = *pp1; + char *p2 = *pp2; + + while( *p1 || *p2 ){ + int iCol1; /* The current column index in pp1 */ + int iCol2; /* The current column index in pp2 */ + + if( *p1==POS_COLUMN ) sqlite3Fts3GetVarint32(&p1[1], &iCol1); + else if( *p1==POS_END ) iCol1 = POSITION_LIST_END; + else iCol1 = 0; + + if( *p2==POS_COLUMN ) sqlite3Fts3GetVarint32(&p2[1], &iCol2); + else if( *p2==POS_END ) iCol2 = POSITION_LIST_END; + else iCol2 = 0; + + if( iCol1==iCol2 ){ + sqlite3_int64 i1 = 0; /* Last position from pp1 */ + sqlite3_int64 i2 = 0; /* Last position from pp2 */ + sqlite3_int64 iPrev = 0; + int n = fts3PutColNumber(&p, iCol1); + p1 += n; + p2 += n; + + /* At this point, both p1 and p2 point to the start of column-lists + ** for the same column (the column with index iCol1 and iCol2). + ** A column-list is a list of non-negative delta-encoded varints, each + ** incremented by 2 before being stored. Each list is terminated by a + ** POS_END (0) or POS_COLUMN (1). The following block merges the two lists + ** and writes the results to buffer p. p is left pointing to the byte + ** after the list written. No terminator (POS_END or POS_COLUMN) is + ** written to the output. + */ + fts3GetDeltaVarint(&p1, &i1); + fts3GetDeltaVarint(&p2, &i2); + do { + fts3PutDeltaVarint(&p, &iPrev, (i1pos(*pp1) && pos(*pp2)-pos(*pp1)<=nToken). i.e. +** when the *pp1 token appears before the *pp2 token, but not more than nToken +** slots before it. +** +** e.g. nToken==1 searches for adjacent positions. +*/ +static int fts3PoslistPhraseMerge( + char **pp, /* IN/OUT: Preallocated output buffer */ + int nToken, /* Maximum difference in token positions */ + int isSaveLeft, /* Save the left position */ + int isExact, /* If *pp1 is exactly nTokens before *pp2 */ + char **pp1, /* IN/OUT: Left input list */ + char **pp2 /* IN/OUT: Right input list */ +){ + char *p = *pp; + char *p1 = *pp1; + char *p2 = *pp2; + int iCol1 = 0; + int iCol2 = 0; + + /* Never set both isSaveLeft and isExact for the same invocation. */ + assert( isSaveLeft==0 || isExact==0 ); + + assert( p!=0 && *p1!=0 && *p2!=0 ); + if( *p1==POS_COLUMN ){ + p1++; + p1 += sqlite3Fts3GetVarint32(p1, &iCol1); + } + if( *p2==POS_COLUMN ){ + p2++; + p2 += sqlite3Fts3GetVarint32(p2, &iCol2); + } + + while( 1 ){ + if( iCol1==iCol2 ){ + char *pSave = p; + sqlite3_int64 iPrev = 0; + sqlite3_int64 iPos1 = 0; + sqlite3_int64 iPos2 = 0; + + if( iCol1 ){ + *p++ = POS_COLUMN; + p += sqlite3Fts3PutVarint(p, iCol1); + } + + assert( *p1!=POS_END && *p1!=POS_COLUMN ); + assert( *p2!=POS_END && *p2!=POS_COLUMN ); + fts3GetDeltaVarint(&p1, &iPos1); iPos1 -= 2; + fts3GetDeltaVarint(&p2, &iPos2); iPos2 -= 2; + + while( 1 ){ + if( iPos2==iPos1+nToken + || (isExact==0 && iPos2>iPos1 && iPos2<=iPos1+nToken) + ){ + sqlite3_int64 iSave; + iSave = isSaveLeft ? iPos1 : iPos2; + fts3PutDeltaVarint(&p, &iPrev, iSave+2); iPrev -= 2; + pSave = 0; + assert( p ); + } + if( (!isSaveLeft && iPos2<=(iPos1+nToken)) || iPos2<=iPos1 ){ + if( (*p2&0xFE)==0 ) break; + fts3GetDeltaVarint(&p2, &iPos2); iPos2 -= 2; + }else{ + if( (*p1&0xFE)==0 ) break; + fts3GetDeltaVarint(&p1, &iPos1); iPos1 -= 2; + } + } + + if( pSave ){ + assert( pp && p ); + p = pSave; + } + + fts3ColumnlistCopy(0, &p1); + fts3ColumnlistCopy(0, &p2); + assert( (*p1&0xFE)==0 && (*p2&0xFE)==0 ); + if( 0==*p1 || 0==*p2 ) break; + + p1++; + p1 += sqlite3Fts3GetVarint32(p1, &iCol1); + p2++; + p2 += sqlite3Fts3GetVarint32(p2, &iCol2); + } + + /* Advance pointer p1 or p2 (whichever corresponds to the smaller of + ** iCol1 and iCol2) so that it points to either the 0x00 that marks the + ** end of the position list, or the 0x01 that precedes the next + ** column-number in the position list. + */ + else if( iCol1=pEnd ){ + *pp = 0; + }else{ + sqlite3_int64 iVal; + *pp += sqlite3Fts3GetVarint(*pp, &iVal); + if( bDescIdx ){ + *pVal -= iVal; + }else{ + *pVal += iVal; + } + } +} + +/* +** This function is used to write a single varint to a buffer. The varint +** is written to *pp. Before returning, *pp is set to point 1 byte past the +** end of the value written. +** +** If *pbFirst is zero when this function is called, the value written to +** the buffer is that of parameter iVal. +** +** If *pbFirst is non-zero when this function is called, then the value +** written is either (iVal-*piPrev) (if bDescIdx is zero) or (*piPrev-iVal) +** (if bDescIdx is non-zero). +** +** Before returning, this function always sets *pbFirst to 1 and *piPrev +** to the value of parameter iVal. +*/ +static void fts3PutDeltaVarint3( + char **pp, /* IN/OUT: Output pointer */ + int bDescIdx, /* True for descending docids */ + sqlite3_int64 *piPrev, /* IN/OUT: Previous value written to list */ + int *pbFirst, /* IN/OUT: True after first int written */ + sqlite3_int64 iVal /* Write this value to the list */ +){ + sqlite3_int64 iWrite; + if( bDescIdx==0 || *pbFirst==0 ){ + iWrite = iVal - *piPrev; + }else{ + iWrite = *piPrev - iVal; + } + assert( *pbFirst || *piPrev==0 ); + assert( *pbFirst==0 || iWrite>0 ); + *pp += sqlite3Fts3PutVarint(*pp, iWrite); + *piPrev = iVal; + *pbFirst = 1; +} + + +/* +** This macro is used by various functions that merge doclists. The two +** arguments are 64-bit docid values. If the value of the stack variable +** bDescDoclist is 0 when this macro is invoked, then it returns (i1-i2). +** Otherwise, (i2-i1). +** +** Using this makes it easier to write code that can merge doclists that are +** sorted in either ascending or descending order. +*/ +#define DOCID_CMP(i1, i2) ((bDescDoclist?-1:1) * (i1-i2)) + +/* +** This function does an "OR" merge of two doclists (output contains all +** positions contained in either argument doclist). If the docids in the +** input doclists are sorted in ascending order, parameter bDescDoclist +** should be false. If they are sorted in ascending order, it should be +** passed a non-zero value. +** +** If no error occurs, *paOut is set to point at an sqlite3_malloc'd buffer +** containing the output doclist and SQLITE_OK is returned. In this case +** *pnOut is set to the number of bytes in the output doclist. +** +** If an error occurs, an SQLite error code is returned. The output values +** are undefined in this case. +*/ +static int fts3DoclistOrMerge( + int bDescDoclist, /* True if arguments are desc */ + char *a1, int n1, /* First doclist */ + char *a2, int n2, /* Second doclist */ + char **paOut, int *pnOut /* OUT: Malloc'd doclist */ +){ + sqlite3_int64 i1 = 0; + sqlite3_int64 i2 = 0; + sqlite3_int64 iPrev = 0; + char *pEnd1 = &a1[n1]; + char *pEnd2 = &a2[n2]; + char *p1 = a1; + char *p2 = a2; + char *p; + char *aOut; + int bFirstOut = 0; + + *paOut = 0; + *pnOut = 0; + + /* Allocate space for the output. Both the input and output doclists + ** are delta encoded. If they are in ascending order (bDescDoclist==0), + ** then the first docid in each list is simply encoded as a varint. For + ** each subsequent docid, the varint stored is the difference between the + ** current and previous docid (a positive number - since the list is in + ** ascending order). + ** + ** The first docid written to the output is therefore encoded using the + ** same number of bytes as it is in whichever of the input lists it is + ** read from. And each subsequent docid read from the same input list + ** consumes either the same or less bytes as it did in the input (since + ** the difference between it and the previous value in the output must + ** be a positive value less than or equal to the delta value read from + ** the input list). The same argument applies to all but the first docid + ** read from the 'other' list. And to the contents of all position lists + ** that will be copied and merged from the input to the output. + ** + ** However, if the first docid copied to the output is a negative number, + ** then the encoding of the first docid from the 'other' input list may + ** be larger in the output than it was in the input (since the delta value + ** may be a larger positive integer than the actual docid). + ** + ** The space required to store the output is therefore the sum of the + ** sizes of the two inputs, plus enough space for exactly one of the input + ** docids to grow. + ** + ** A symetric argument may be made if the doclists are in descending + ** order. + */ + aOut = sqlite3_malloc(n1+n2+FTS3_VARINT_MAX-1); + if( !aOut ) return SQLITE_NOMEM; + + p = aOut; + fts3GetDeltaVarint3(&p1, pEnd1, 0, &i1); + fts3GetDeltaVarint3(&p2, pEnd2, 0, &i2); + while( p1 || p2 ){ + sqlite3_int64 iDiff = DOCID_CMP(i1, i2); + + if( p2 && p1 && iDiff==0 ){ + fts3PutDeltaVarint3(&p, bDescDoclist, &iPrev, &bFirstOut, i1); + fts3PoslistMerge(&p, &p1, &p2); + fts3GetDeltaVarint3(&p1, pEnd1, bDescDoclist, &i1); + fts3GetDeltaVarint3(&p2, pEnd2, bDescDoclist, &i2); + }else if( !p2 || (p1 && iDiff<0) ){ + fts3PutDeltaVarint3(&p, bDescDoclist, &iPrev, &bFirstOut, i1); + fts3PoslistCopy(&p, &p1); + fts3GetDeltaVarint3(&p1, pEnd1, bDescDoclist, &i1); + }else{ + fts3PutDeltaVarint3(&p, bDescDoclist, &iPrev, &bFirstOut, i2); + fts3PoslistCopy(&p, &p2); + fts3GetDeltaVarint3(&p2, pEnd2, bDescDoclist, &i2); + } + } + + *paOut = aOut; + *pnOut = (int)(p-aOut); + assert( *pnOut<=n1+n2+FTS3_VARINT_MAX-1 ); + return SQLITE_OK; +} + +/* +** This function does a "phrase" merge of two doclists. In a phrase merge, +** the output contains a copy of each position from the right-hand input +** doclist for which there is a position in the left-hand input doclist +** exactly nDist tokens before it. +** +** If the docids in the input doclists are sorted in ascending order, +** parameter bDescDoclist should be false. If they are sorted in ascending +** order, it should be passed a non-zero value. +** +** The right-hand input doclist is overwritten by this function. +*/ +static void fts3DoclistPhraseMerge( + int bDescDoclist, /* True if arguments are desc */ + int nDist, /* Distance from left to right (1=adjacent) */ + char *aLeft, int nLeft, /* Left doclist */ + char *aRight, int *pnRight /* IN/OUT: Right/output doclist */ +){ + sqlite3_int64 i1 = 0; + sqlite3_int64 i2 = 0; + sqlite3_int64 iPrev = 0; + char *pEnd1 = &aLeft[nLeft]; + char *pEnd2 = &aRight[*pnRight]; + char *p1 = aLeft; + char *p2 = aRight; + char *p; + int bFirstOut = 0; + char *aOut = aRight; + + assert( nDist>0 ); + + p = aOut; + fts3GetDeltaVarint3(&p1, pEnd1, 0, &i1); + fts3GetDeltaVarint3(&p2, pEnd2, 0, &i2); + + while( p1 && p2 ){ + sqlite3_int64 iDiff = DOCID_CMP(i1, i2); + if( iDiff==0 ){ + char *pSave = p; + sqlite3_int64 iPrevSave = iPrev; + int bFirstOutSave = bFirstOut; + + fts3PutDeltaVarint3(&p, bDescDoclist, &iPrev, &bFirstOut, i1); + if( 0==fts3PoslistPhraseMerge(&p, nDist, 0, 1, &p1, &p2) ){ + p = pSave; + iPrev = iPrevSave; + bFirstOut = bFirstOutSave; + } + fts3GetDeltaVarint3(&p1, pEnd1, bDescDoclist, &i1); + fts3GetDeltaVarint3(&p2, pEnd2, bDescDoclist, &i2); + }else if( iDiff<0 ){ + fts3PoslistCopy(0, &p1); + fts3GetDeltaVarint3(&p1, pEnd1, bDescDoclist, &i1); + }else{ + fts3PoslistCopy(0, &p2); + fts3GetDeltaVarint3(&p2, pEnd2, bDescDoclist, &i2); + } + } + + *pnRight = (int)(p - aOut); +} + +/* +** Argument pList points to a position list nList bytes in size. This +** function checks to see if the position list contains any entries for +** a token in position 0 (of any column). If so, it writes argument iDelta +** to the output buffer pOut, followed by a position list consisting only +** of the entries from pList at position 0, and terminated by an 0x00 byte. +** The value returned is the number of bytes written to pOut (if any). +*/ +int sqlite3Fts3FirstFilter( + sqlite3_int64 iDelta, /* Varint that may be written to pOut */ + char *pList, /* Position list (no 0x00 term) */ + int nList, /* Size of pList in bytes */ + char *pOut /* Write output here */ +){ + int nOut = 0; + int bWritten = 0; /* True once iDelta has been written */ + char *p = pList; + char *pEnd = &pList[nList]; + + if( *p!=0x01 ){ + if( *p==0x02 ){ + nOut += sqlite3Fts3PutVarint(&pOut[nOut], iDelta); + pOut[nOut++] = 0x02; + bWritten = 1; + } + fts3ColumnlistCopy(0, &p); + } + + while( paaOutput); i++){ + if( pTS->aaOutput[i] ){ + if( !aOut ){ + aOut = pTS->aaOutput[i]; + nOut = pTS->anOutput[i]; + pTS->aaOutput[i] = 0; + }else{ + int nNew; + char *aNew; + + int rc = fts3DoclistOrMerge(p->bDescIdx, + pTS->aaOutput[i], pTS->anOutput[i], aOut, nOut, &aNew, &nNew + ); + if( rc!=SQLITE_OK ){ + sqlite3_free(aOut); + return rc; + } + + sqlite3_free(pTS->aaOutput[i]); + sqlite3_free(aOut); + pTS->aaOutput[i] = 0; + aOut = aNew; + nOut = nNew; + } + } + } + + pTS->aaOutput[0] = aOut; + pTS->anOutput[0] = nOut; + return SQLITE_OK; +} + +/* +** Merge the doclist aDoclist/nDoclist into the TermSelect object passed +** as the first argument. The merge is an "OR" merge (see function +** fts3DoclistOrMerge() for details). +** +** This function is called with the doclist for each term that matches +** a queried prefix. It merges all these doclists into one, the doclist +** for the specified prefix. Since there can be a very large number of +** doclists to merge, the merging is done pair-wise using the TermSelect +** object. +** +** This function returns SQLITE_OK if the merge is successful, or an +** SQLite error code (SQLITE_NOMEM) if an error occurs. +*/ +static int fts3TermSelectMerge( + Fts3Table *p, /* FTS table handle */ + TermSelect *pTS, /* TermSelect object to merge into */ + char *aDoclist, /* Pointer to doclist */ + int nDoclist /* Size of aDoclist in bytes */ +){ + if( pTS->aaOutput[0]==0 ){ + /* If this is the first term selected, copy the doclist to the output + ** buffer using memcpy(). */ + pTS->aaOutput[0] = sqlite3_malloc(nDoclist); + pTS->anOutput[0] = nDoclist; + if( pTS->aaOutput[0] ){ + memcpy(pTS->aaOutput[0], aDoclist, nDoclist); + }else{ + return SQLITE_NOMEM; + } + }else{ + char *aMerge = aDoclist; + int nMerge = nDoclist; + int iOut; + + for(iOut=0; iOutaaOutput); iOut++){ + if( pTS->aaOutput[iOut]==0 ){ + assert( iOut>0 ); + pTS->aaOutput[iOut] = aMerge; + pTS->anOutput[iOut] = nMerge; + break; + }else{ + char *aNew; + int nNew; + + int rc = fts3DoclistOrMerge(p->bDescIdx, aMerge, nMerge, + pTS->aaOutput[iOut], pTS->anOutput[iOut], &aNew, &nNew + ); + if( rc!=SQLITE_OK ){ + if( aMerge!=aDoclist ) sqlite3_free(aMerge); + return rc; + } + + if( aMerge!=aDoclist ) sqlite3_free(aMerge); + sqlite3_free(pTS->aaOutput[iOut]); + pTS->aaOutput[iOut] = 0; + + aMerge = aNew; + nMerge = nNew; + if( (iOut+1)==SizeofArray(pTS->aaOutput) ){ + pTS->aaOutput[iOut] = aMerge; + pTS->anOutput[iOut] = nMerge; + } + } + } + } + return SQLITE_OK; +} + +/* +** Append SegReader object pNew to the end of the pCsr->apSegment[] array. +*/ +static int fts3SegReaderCursorAppend( + Fts3MultiSegReader *pCsr, + Fts3SegReader *pNew +){ + if( (pCsr->nSegment%16)==0 ){ + Fts3SegReader **apNew; + int nByte = (pCsr->nSegment + 16)*sizeof(Fts3SegReader*); + apNew = (Fts3SegReader **)sqlite3_realloc(pCsr->apSegment, nByte); + if( !apNew ){ + sqlite3Fts3SegReaderFree(pNew); + return SQLITE_NOMEM; + } + pCsr->apSegment = apNew; + } + pCsr->apSegment[pCsr->nSegment++] = pNew; + return SQLITE_OK; +} + +/* +** Add seg-reader objects to the Fts3MultiSegReader object passed as the +** 8th argument. +** +** This function returns SQLITE_OK if successful, or an SQLite error code +** otherwise. +*/ +static int fts3SegReaderCursor( + Fts3Table *p, /* FTS3 table handle */ + int iLangid, /* Language id */ + int iIndex, /* Index to search (from 0 to p->nIndex-1) */ + int iLevel, /* Level of segments to scan */ + const char *zTerm, /* Term to query for */ + int nTerm, /* Size of zTerm in bytes */ + int isPrefix, /* True for a prefix search */ + int isScan, /* True to scan from zTerm to EOF */ + Fts3MultiSegReader *pCsr /* Cursor object to populate */ +){ + int rc = SQLITE_OK; /* Error code */ + sqlite3_stmt *pStmt = 0; /* Statement to iterate through segments */ + int rc2; /* Result of sqlite3_reset() */ + + /* If iLevel is less than 0 and this is not a scan, include a seg-reader + ** for the pending-terms. If this is a scan, then this call must be being + ** made by an fts4aux module, not an FTS table. In this case calling + ** Fts3SegReaderPending might segfault, as the data structures used by + ** fts4aux are not completely populated. So it's easiest to filter these + ** calls out here. */ + if( iLevel<0 && p->aIndex ){ + Fts3SegReader *pSeg = 0; + rc = sqlite3Fts3SegReaderPending(p, iIndex, zTerm, nTerm, isPrefix, &pSeg); + if( rc==SQLITE_OK && pSeg ){ + rc = fts3SegReaderCursorAppend(pCsr, pSeg); + } + } + + if( iLevel!=FTS3_SEGCURSOR_PENDING ){ + if( rc==SQLITE_OK ){ + rc = sqlite3Fts3AllSegdirs(p, iLangid, iIndex, iLevel, &pStmt); + } + + while( rc==SQLITE_OK && SQLITE_ROW==(rc = sqlite3_step(pStmt)) ){ + Fts3SegReader *pSeg = 0; + + /* Read the values returned by the SELECT into local variables. */ + sqlite3_int64 iStartBlock = sqlite3_column_int64(pStmt, 1); + sqlite3_int64 iLeavesEndBlock = sqlite3_column_int64(pStmt, 2); + sqlite3_int64 iEndBlock = sqlite3_column_int64(pStmt, 3); + int nRoot = sqlite3_column_bytes(pStmt, 4); + char const *zRoot = sqlite3_column_blob(pStmt, 4); + + /* If zTerm is not NULL, and this segment is not stored entirely on its + ** root node, the range of leaves scanned can be reduced. Do this. */ + if( iStartBlock && zTerm ){ + sqlite3_int64 *pi = (isPrefix ? &iLeavesEndBlock : 0); + rc = fts3SelectLeaf(p, zTerm, nTerm, zRoot, nRoot, &iStartBlock, pi); + if( rc!=SQLITE_OK ) goto finished; + if( isPrefix==0 && isScan==0 ) iLeavesEndBlock = iStartBlock; + } + + rc = sqlite3Fts3SegReaderNew(pCsr->nSegment+1, + (isPrefix==0 && isScan==0), + iStartBlock, iLeavesEndBlock, + iEndBlock, zRoot, nRoot, &pSeg + ); + if( rc!=SQLITE_OK ) goto finished; + rc = fts3SegReaderCursorAppend(pCsr, pSeg); + } + } + + finished: + rc2 = sqlite3_reset(pStmt); + if( rc==SQLITE_DONE ) rc = rc2; + + return rc; +} + +/* +** Set up a cursor object for iterating through a full-text index or a +** single level therein. +*/ +int sqlite3Fts3SegReaderCursor( + Fts3Table *p, /* FTS3 table handle */ + int iLangid, /* Language-id to search */ + int iIndex, /* Index to search (from 0 to p->nIndex-1) */ + int iLevel, /* Level of segments to scan */ + const char *zTerm, /* Term to query for */ + int nTerm, /* Size of zTerm in bytes */ + int isPrefix, /* True for a prefix search */ + int isScan, /* True to scan from zTerm to EOF */ + Fts3MultiSegReader *pCsr /* Cursor object to populate */ +){ + assert( iIndex>=0 && iIndexnIndex ); + assert( iLevel==FTS3_SEGCURSOR_ALL + || iLevel==FTS3_SEGCURSOR_PENDING + || iLevel>=0 + ); + assert( iLevelbase.pVtab; + + if( isPrefix ){ + for(i=1; bFound==0 && inIndex; i++){ + if( p->aIndex[i].nPrefix==nTerm ){ + bFound = 1; + rc = sqlite3Fts3SegReaderCursor(p, pCsr->iLangid, + i, FTS3_SEGCURSOR_ALL, zTerm, nTerm, 0, 0, pSegcsr + ); + pSegcsr->bLookup = 1; + } + } + + for(i=1; bFound==0 && inIndex; i++){ + if( p->aIndex[i].nPrefix==nTerm+1 ){ + bFound = 1; + rc = sqlite3Fts3SegReaderCursor(p, pCsr->iLangid, + i, FTS3_SEGCURSOR_ALL, zTerm, nTerm, 1, 0, pSegcsr + ); + if( rc==SQLITE_OK ){ + rc = fts3SegReaderCursorAddZero( + p, pCsr->iLangid, zTerm, nTerm, pSegcsr + ); + } + } + } + } + + if( bFound==0 ){ + rc = sqlite3Fts3SegReaderCursor(p, pCsr->iLangid, + 0, FTS3_SEGCURSOR_ALL, zTerm, nTerm, isPrefix, 0, pSegcsr + ); + pSegcsr->bLookup = !isPrefix; + } + } + + *ppSegcsr = pSegcsr; + return rc; +} + +/* +** Free an Fts3MultiSegReader allocated by fts3TermSegReaderCursor(). +*/ +static void fts3SegReaderCursorFree(Fts3MultiSegReader *pSegcsr){ + sqlite3Fts3SegReaderFinish(pSegcsr); + sqlite3_free(pSegcsr); +} + +/* +** This function retreives the doclist for the specified term (or term +** prefix) from the database. +*/ +static int fts3TermSelect( + Fts3Table *p, /* Virtual table handle */ + Fts3PhraseToken *pTok, /* Token to query for */ + int iColumn, /* Column to query (or -ve for all columns) */ + int *pnOut, /* OUT: Size of buffer at *ppOut */ + char **ppOut /* OUT: Malloced result buffer */ +){ + int rc; /* Return code */ + Fts3MultiSegReader *pSegcsr; /* Seg-reader cursor for this term */ + TermSelect tsc; /* Object for pair-wise doclist merging */ + Fts3SegFilter filter; /* Segment term filter configuration */ + + pSegcsr = pTok->pSegcsr; + memset(&tsc, 0, sizeof(TermSelect)); + + filter.flags = FTS3_SEGMENT_IGNORE_EMPTY | FTS3_SEGMENT_REQUIRE_POS + | (pTok->isPrefix ? FTS3_SEGMENT_PREFIX : 0) + | (pTok->bFirst ? FTS3_SEGMENT_FIRST : 0) + | (iColumnnColumn ? FTS3_SEGMENT_COLUMN_FILTER : 0); + filter.iCol = iColumn; + filter.zTerm = pTok->z; + filter.nTerm = pTok->n; + + rc = sqlite3Fts3SegReaderStart(p, pSegcsr, &filter); + while( SQLITE_OK==rc + && SQLITE_ROW==(rc = sqlite3Fts3SegReaderStep(p, pSegcsr)) + ){ + rc = fts3TermSelectMerge(p, &tsc, pSegcsr->aDoclist, pSegcsr->nDoclist); + } + + if( rc==SQLITE_OK ){ + rc = fts3TermSelectFinishMerge(p, &tsc); + } + if( rc==SQLITE_OK ){ + *ppOut = tsc.aaOutput[0]; + *pnOut = tsc.anOutput[0]; + }else{ + int i; + for(i=0; ipSegcsr = 0; + return rc; +} + +/* +** This function counts the total number of docids in the doclist stored +** in buffer aList[], size nList bytes. +** +** If the isPoslist argument is true, then it is assumed that the doclist +** contains a position-list following each docid. Otherwise, it is assumed +** that the doclist is simply a list of docids stored as delta encoded +** varints. +*/ +static int fts3DoclistCountDocids(char *aList, int nList){ + int nDoc = 0; /* Return value */ + if( aList ){ + char *aEnd = &aList[nList]; /* Pointer to one byte after EOF */ + char *p = aList; /* Cursor */ + while( peSearch==FTS3_DOCID_SEARCH || pCsr->eSearch==FTS3_FULLSCAN_SEARCH ){ + if( SQLITE_ROW!=sqlite3_step(pCsr->pStmt) ){ + pCsr->isEof = 1; + rc = sqlite3_reset(pCsr->pStmt); + }else{ + pCsr->iPrevId = sqlite3_column_int64(pCsr->pStmt, 0); + rc = SQLITE_OK; + } + }else{ + rc = fts3EvalNext((Fts3Cursor *)pCursor); + } + assert( ((Fts3Table *)pCsr->base.pVtab)->pSegments==0 ); + return rc; +} + +/* +** This is the xFilter interface for the virtual table. See +** the virtual table xFilter method documentation for additional +** information. +** +** If idxNum==FTS3_FULLSCAN_SEARCH then do a full table scan against +** the %_content table. +** +** If idxNum==FTS3_DOCID_SEARCH then do a docid lookup for a single entry +** in the %_content table. +** +** If idxNum>=FTS3_FULLTEXT_SEARCH then use the full text index. The +** column on the left-hand side of the MATCH operator is column +** number idxNum-FTS3_FULLTEXT_SEARCH, 0 indexed. argv[0] is the right-hand +** side of the MATCH operator. +*/ +static int fts3FilterMethod( + sqlite3_vtab_cursor *pCursor, /* The cursor used for this query */ + int idxNum, /* Strategy index */ + const char *idxStr, /* Unused */ + int nVal, /* Number of elements in apVal */ + sqlite3_value **apVal /* Arguments for the indexing scheme */ +){ + int rc; + char *zSql; /* SQL statement used to access %_content */ + Fts3Table *p = (Fts3Table *)pCursor->pVtab; + Fts3Cursor *pCsr = (Fts3Cursor *)pCursor; + + UNUSED_PARAMETER(idxStr); + UNUSED_PARAMETER(nVal); + + assert( idxNum>=0 && idxNum<=(FTS3_FULLTEXT_SEARCH+p->nColumn) ); + assert( nVal==0 || nVal==1 || nVal==2 ); + assert( (nVal==0)==(idxNum==FTS3_FULLSCAN_SEARCH) ); + assert( p->pSegments==0 ); + + /* In case the cursor has been used before, clear it now. */ + sqlite3_finalize(pCsr->pStmt); + sqlite3_free(pCsr->aDoclist); + sqlite3Fts3ExprFree(pCsr->pExpr); + memset(&pCursor[1], 0, sizeof(Fts3Cursor)-sizeof(sqlite3_vtab_cursor)); + + if( idxStr ){ + pCsr->bDesc = (idxStr[0]=='D'); + }else{ + pCsr->bDesc = p->bDescIdx; + } + pCsr->eSearch = (i16)idxNum; + + if( idxNum!=FTS3_DOCID_SEARCH && idxNum!=FTS3_FULLSCAN_SEARCH ){ + int iCol = idxNum-FTS3_FULLTEXT_SEARCH; + const char *zQuery = (const char *)sqlite3_value_text(apVal[0]); + + if( zQuery==0 && sqlite3_value_type(apVal[0])!=SQLITE_NULL ){ + return SQLITE_NOMEM; + } + + pCsr->iLangid = 0; + if( nVal==2 ) pCsr->iLangid = sqlite3_value_int(apVal[1]); + + rc = sqlite3Fts3ExprParse(p->pTokenizer, pCsr->iLangid, + p->azColumn, p->bFts4, p->nColumn, iCol, zQuery, -1, &pCsr->pExpr + ); + if( rc!=SQLITE_OK ){ + if( rc==SQLITE_ERROR ){ + static const char *zErr = "malformed MATCH expression: [%s]"; + p->base.zErrMsg = sqlite3_mprintf(zErr, zQuery); + } + return rc; + } + + rc = sqlite3Fts3ReadLock(p); + if( rc!=SQLITE_OK ) return rc; + + rc = fts3EvalStart(pCsr); + + sqlite3Fts3SegmentsClose(p); + if( rc!=SQLITE_OK ) return rc; + pCsr->pNextId = pCsr->aDoclist; + pCsr->iPrevId = 0; + } + + /* Compile a SELECT statement for this cursor. For a full-table-scan, the + ** statement loops through all rows of the %_content table. For a + ** full-text query or docid lookup, the statement retrieves a single + ** row by docid. + */ + if( idxNum==FTS3_FULLSCAN_SEARCH ){ + zSql = sqlite3_mprintf( + "SELECT %s ORDER BY rowid %s", + p->zReadExprlist, (pCsr->bDesc ? "DESC" : "ASC") + ); + if( zSql ){ + rc = sqlite3_prepare_v2(p->db, zSql, -1, &pCsr->pStmt, 0); + sqlite3_free(zSql); + }else{ + rc = SQLITE_NOMEM; + } + }else if( idxNum==FTS3_DOCID_SEARCH ){ + rc = fts3CursorSeekStmt(pCsr, &pCsr->pStmt); + if( rc==SQLITE_OK ){ + rc = sqlite3_bind_value(pCsr->pStmt, 1, apVal[0]); + } + } + if( rc!=SQLITE_OK ) return rc; + + return fts3NextMethod(pCursor); +} + +/* +** This is the xEof method of the virtual table. SQLite calls this +** routine to find out if it has reached the end of a result set. +*/ +static int fts3EofMethod(sqlite3_vtab_cursor *pCursor){ + return ((Fts3Cursor *)pCursor)->isEof; +} + +/* +** This is the xRowid method. The SQLite core calls this routine to +** retrieve the rowid for the current row of the result set. fts3 +** exposes %_content.docid as the rowid for the virtual table. The +** rowid should be written to *pRowid. +*/ +static int fts3RowidMethod(sqlite3_vtab_cursor *pCursor, sqlite_int64 *pRowid){ + Fts3Cursor *pCsr = (Fts3Cursor *) pCursor; + *pRowid = pCsr->iPrevId; + return SQLITE_OK; +} + +/* +** This is the xColumn method, called by SQLite to request a value from +** the row that the supplied cursor currently points to. +** +** If: +** +** (iCol < p->nColumn) -> The value of the iCol'th user column. +** (iCol == p->nColumn) -> Magic column with the same name as the table. +** (iCol == p->nColumn+1) -> Docid column +** (iCol == p->nColumn+2) -> Langid column +*/ +static int fts3ColumnMethod( + sqlite3_vtab_cursor *pCursor, /* Cursor to retrieve value from */ + sqlite3_context *pCtx, /* Context for sqlite3_result_xxx() calls */ + int iCol /* Index of column to read value from */ +){ + int rc = SQLITE_OK; /* Return Code */ + Fts3Cursor *pCsr = (Fts3Cursor *) pCursor; + Fts3Table *p = (Fts3Table *)pCursor->pVtab; + + /* The column value supplied by SQLite must be in range. */ + assert( iCol>=0 && iCol<=p->nColumn+2 ); + + if( iCol==p->nColumn+1 ){ + /* This call is a request for the "docid" column. Since "docid" is an + ** alias for "rowid", use the xRowid() method to obtain the value. + */ + sqlite3_result_int64(pCtx, pCsr->iPrevId); + }else if( iCol==p->nColumn ){ + /* The extra column whose name is the same as the table. + ** Return a blob which is a pointer to the cursor. */ + sqlite3_result_blob(pCtx, &pCsr, sizeof(pCsr), SQLITE_TRANSIENT); + }else if( iCol==p->nColumn+2 && pCsr->pExpr ){ + sqlite3_result_int64(pCtx, pCsr->iLangid); + }else{ + /* The requested column is either a user column (one that contains + ** indexed data), or the language-id column. */ + rc = fts3CursorSeek(0, pCsr); + + if( rc==SQLITE_OK ){ + if( iCol==p->nColumn+2 ){ + int iLangid = 0; + if( p->zLanguageid ){ + iLangid = sqlite3_column_int(pCsr->pStmt, p->nColumn+1); + } + sqlite3_result_int(pCtx, iLangid); + }else if( sqlite3_data_count(pCsr->pStmt)>(iCol+1) ){ + sqlite3_result_value(pCtx, sqlite3_column_value(pCsr->pStmt, iCol+1)); + } + } + } + + assert( ((Fts3Table *)pCsr->base.pVtab)->pSegments==0 ); + return rc; +} + +/* +** This function is the implementation of the xUpdate callback used by +** FTS3 virtual tables. It is invoked by SQLite each time a row is to be +** inserted, updated or deleted. +*/ +static int fts3UpdateMethod( + sqlite3_vtab *pVtab, /* Virtual table handle */ + int nArg, /* Size of argument array */ + sqlite3_value **apVal, /* Array of arguments */ + sqlite_int64 *pRowid /* OUT: The affected (or effected) rowid */ +){ + return sqlite3Fts3UpdateMethod(pVtab, nArg, apVal, pRowid); +} + +/* +** Implementation of xSync() method. Flush the contents of the pending-terms +** hash-table to the database. +*/ +static int fts3SyncMethod(sqlite3_vtab *pVtab){ + + /* Following an incremental-merge operation, assuming that the input + ** segments are not completely consumed (the usual case), they are updated + ** in place to remove the entries that have already been merged. This + ** involves updating the leaf block that contains the smallest unmerged + ** entry and each block (if any) between the leaf and the root node. So + ** if the height of the input segment b-trees is N, and input segments + ** are merged eight at a time, updating the input segments at the end + ** of an incremental-merge requires writing (8*(1+N)) blocks. N is usually + ** small - often between 0 and 2. So the overhead of the incremental + ** merge is somewhere between 8 and 24 blocks. To avoid this overhead + ** dwarfing the actual productive work accomplished, the incremental merge + ** is only attempted if it will write at least 64 leaf blocks. Hence + ** nMinMerge. + ** + ** Of course, updating the input segments also involves deleting a bunch + ** of blocks from the segments table. But this is not considered overhead + ** as it would also be required by a crisis-merge that used the same input + ** segments. + */ + const u32 nMinMerge = 64; /* Minimum amount of incr-merge work to do */ + + Fts3Table *p = (Fts3Table*)pVtab; + int rc = sqlite3Fts3PendingTermsFlush(p); + + if( rc==SQLITE_OK && p->bAutoincrmerge==1 && p->nLeafAdd>(nMinMerge/16) ){ + int mxLevel = 0; /* Maximum relative level value in db */ + int A; /* Incr-merge parameter A */ + + rc = sqlite3Fts3MaxLevel(p, &mxLevel); + assert( rc==SQLITE_OK || mxLevel==0 ); + A = p->nLeafAdd * mxLevel; + A += (A/2); + if( A>(int)nMinMerge ) rc = sqlite3Fts3Incrmerge(p, A, 8); + } + sqlite3Fts3SegmentsClose(p); + return rc; +} + +/* +** Implementation of xBegin() method. This is a no-op. +*/ +static int fts3BeginMethod(sqlite3_vtab *pVtab){ + Fts3Table *p = (Fts3Table*)pVtab; + UNUSED_PARAMETER(pVtab); + assert( p->pSegments==0 ); + assert( p->nPendingData==0 ); + assert( p->inTransaction!=1 ); + TESTONLY( p->inTransaction = 1 ); + TESTONLY( p->mxSavepoint = -1; ); + p->nLeafAdd = 0; + return SQLITE_OK; +} + +/* +** Implementation of xCommit() method. This is a no-op. The contents of +** the pending-terms hash-table have already been flushed into the database +** by fts3SyncMethod(). +*/ +static int fts3CommitMethod(sqlite3_vtab *pVtab){ + TESTONLY( Fts3Table *p = (Fts3Table*)pVtab ); + UNUSED_PARAMETER(pVtab); + assert( p->nPendingData==0 ); + assert( p->inTransaction!=0 ); + assert( p->pSegments==0 ); + TESTONLY( p->inTransaction = 0 ); + TESTONLY( p->mxSavepoint = -1; ); + return SQLITE_OK; +} + +/* +** Implementation of xRollback(). Discard the contents of the pending-terms +** hash-table. Any changes made to the database are reverted by SQLite. +*/ +static int fts3RollbackMethod(sqlite3_vtab *pVtab){ + Fts3Table *p = (Fts3Table*)pVtab; + sqlite3Fts3PendingTermsClear(p); + assert( p->inTransaction!=0 ); + TESTONLY( p->inTransaction = 0 ); + TESTONLY( p->mxSavepoint = -1; ); + return SQLITE_OK; +} + +/* +** When called, *ppPoslist must point to the byte immediately following the +** end of a position-list. i.e. ( (*ppPoslist)[-1]==POS_END ). This function +** moves *ppPoslist so that it instead points to the first byte of the +** same position list. +*/ +static void fts3ReversePoslist(char *pStart, char **ppPoslist){ + char *p = &(*ppPoslist)[-2]; + char c = 0; + + while( p>pStart && (c=*p--)==0 ); + while( p>pStart && (*p & 0x80) | c ){ + c = *p--; + } + if( p>pStart ){ p = &p[2]; } + while( *p++&0x80 ); + *ppPoslist = p; +} + +/* +** Helper function used by the implementation of the overloaded snippet(), +** offsets() and optimize() SQL functions. +** +** If the value passed as the third argument is a blob of size +** sizeof(Fts3Cursor*), then the blob contents are copied to the +** output variable *ppCsr and SQLITE_OK is returned. Otherwise, an error +** message is written to context pContext and SQLITE_ERROR returned. The +** string passed via zFunc is used as part of the error message. +*/ +static int fts3FunctionArg( + sqlite3_context *pContext, /* SQL function call context */ + const char *zFunc, /* Function name */ + sqlite3_value *pVal, /* argv[0] passed to function */ + Fts3Cursor **ppCsr /* OUT: Store cursor handle here */ +){ + Fts3Cursor *pRet; + if( sqlite3_value_type(pVal)!=SQLITE_BLOB + || sqlite3_value_bytes(pVal)!=sizeof(Fts3Cursor *) + ){ + char *zErr = sqlite3_mprintf("illegal first argument to %s", zFunc); + sqlite3_result_error(pContext, zErr, -1); + sqlite3_free(zErr); + return SQLITE_ERROR; + } + memcpy(&pRet, sqlite3_value_blob(pVal), sizeof(Fts3Cursor *)); + *ppCsr = pRet; + return SQLITE_OK; +} + +/* +** Implementation of the snippet() function for FTS3 +*/ +static void fts3SnippetFunc( + sqlite3_context *pContext, /* SQLite function call context */ + int nVal, /* Size of apVal[] array */ + sqlite3_value **apVal /* Array of arguments */ +){ + Fts3Cursor *pCsr; /* Cursor handle passed through apVal[0] */ + const char *zStart = ""; + const char *zEnd = ""; + const char *zEllipsis = "..."; + int iCol = -1; + int nToken = 15; /* Default number of tokens in snippet */ + + /* There must be at least one argument passed to this function (otherwise + ** the non-overloaded version would have been called instead of this one). + */ + assert( nVal>=1 ); + + if( nVal>6 ){ + sqlite3_result_error(pContext, + "wrong number of arguments to function snippet()", -1); + return; + } + if( fts3FunctionArg(pContext, "snippet", apVal[0], &pCsr) ) return; + + switch( nVal ){ + case 6: nToken = sqlite3_value_int(apVal[5]); + case 5: iCol = sqlite3_value_int(apVal[4]); + case 4: zEllipsis = (const char*)sqlite3_value_text(apVal[3]); + case 3: zEnd = (const char*)sqlite3_value_text(apVal[2]); + case 2: zStart = (const char*)sqlite3_value_text(apVal[1]); + } + if( !zEllipsis || !zEnd || !zStart ){ + sqlite3_result_error_nomem(pContext); + }else if( SQLITE_OK==fts3CursorSeek(pContext, pCsr) ){ + sqlite3Fts3Snippet(pContext, pCsr, zStart, zEnd, zEllipsis, iCol, nToken); + } +} + +/* +** Implementation of the offsets() function for FTS3 +*/ +static void fts3OffsetsFunc( + sqlite3_context *pContext, /* SQLite function call context */ + int nVal, /* Size of argument array */ + sqlite3_value **apVal /* Array of arguments */ +){ + Fts3Cursor *pCsr; /* Cursor handle passed through apVal[0] */ + + UNUSED_PARAMETER(nVal); + + assert( nVal==1 ); + if( fts3FunctionArg(pContext, "offsets", apVal[0], &pCsr) ) return; + assert( pCsr ); + if( SQLITE_OK==fts3CursorSeek(pContext, pCsr) ){ + sqlite3Fts3Offsets(pContext, pCsr); + } +} + +/* +** Implementation of the special optimize() function for FTS3. This +** function merges all segments in the database to a single segment. +** Example usage is: +** +** SELECT optimize(t) FROM t LIMIT 1; +** +** where 't' is the name of an FTS3 table. +*/ +static void fts3OptimizeFunc( + sqlite3_context *pContext, /* SQLite function call context */ + int nVal, /* Size of argument array */ + sqlite3_value **apVal /* Array of arguments */ +){ + int rc; /* Return code */ + Fts3Table *p; /* Virtual table handle */ + Fts3Cursor *pCursor; /* Cursor handle passed through apVal[0] */ + + UNUSED_PARAMETER(nVal); + + assert( nVal==1 ); + if( fts3FunctionArg(pContext, "optimize", apVal[0], &pCursor) ) return; + p = (Fts3Table *)pCursor->base.pVtab; + assert( p ); + + rc = sqlite3Fts3Optimize(p); + + switch( rc ){ + case SQLITE_OK: + sqlite3_result_text(pContext, "Index optimized", -1, SQLITE_STATIC); + break; + case SQLITE_DONE: + sqlite3_result_text(pContext, "Index already optimal", -1, SQLITE_STATIC); + break; + default: + sqlite3_result_error_code(pContext, rc); + break; + } +} + +/* +** Implementation of the matchinfo() function for FTS3 +*/ +static void fts3MatchinfoFunc( + sqlite3_context *pContext, /* SQLite function call context */ + int nVal, /* Size of argument array */ + sqlite3_value **apVal /* Array of arguments */ +){ + Fts3Cursor *pCsr; /* Cursor handle passed through apVal[0] */ + assert( nVal==1 || nVal==2 ); + if( SQLITE_OK==fts3FunctionArg(pContext, "matchinfo", apVal[0], &pCsr) ){ + const char *zArg = 0; + if( nVal>1 ){ + zArg = (const char *)sqlite3_value_text(apVal[1]); + } + sqlite3Fts3Matchinfo(pContext, pCsr, zArg); + } +} + +/* +** This routine implements the xFindFunction method for the FTS3 +** virtual table. +*/ +static int fts3FindFunctionMethod( + sqlite3_vtab *pVtab, /* Virtual table handle */ + int nArg, /* Number of SQL function arguments */ + const char *zName, /* Name of SQL function */ + void (**pxFunc)(sqlite3_context*,int,sqlite3_value**), /* OUT: Result */ + void **ppArg /* Unused */ +){ + struct Overloaded { + const char *zName; + void (*xFunc)(sqlite3_context*,int,sqlite3_value**); + } aOverload[] = { + { "snippet", fts3SnippetFunc }, + { "offsets", fts3OffsetsFunc }, + { "optimize", fts3OptimizeFunc }, + { "matchinfo", fts3MatchinfoFunc }, + }; + int i; /* Iterator variable */ + + UNUSED_PARAMETER(pVtab); + UNUSED_PARAMETER(nArg); + UNUSED_PARAMETER(ppArg); + + for(i=0; idb; /* Database connection */ + int rc; /* Return Code */ + + /* As it happens, the pending terms table is always empty here. This is + ** because an "ALTER TABLE RENAME TABLE" statement inside a transaction + ** always opens a savepoint transaction. And the xSavepoint() method + ** flushes the pending terms table. But leave the (no-op) call to + ** PendingTermsFlush() in in case that changes. + */ + assert( p->nPendingData==0 ); + rc = sqlite3Fts3PendingTermsFlush(p); + + if( p->zContentTbl==0 ){ + fts3DbExec(&rc, db, + "ALTER TABLE %Q.'%q_content' RENAME TO '%q_content';", + p->zDb, p->zName, zName + ); + } + + if( p->bHasDocsize ){ + fts3DbExec(&rc, db, + "ALTER TABLE %Q.'%q_docsize' RENAME TO '%q_docsize';", + p->zDb, p->zName, zName + ); + } + if( p->bHasStat ){ + fts3DbExec(&rc, db, + "ALTER TABLE %Q.'%q_stat' RENAME TO '%q_stat';", + p->zDb, p->zName, zName + ); + } + fts3DbExec(&rc, db, + "ALTER TABLE %Q.'%q_segments' RENAME TO '%q_segments';", + p->zDb, p->zName, zName + ); + fts3DbExec(&rc, db, + "ALTER TABLE %Q.'%q_segdir' RENAME TO '%q_segdir';", + p->zDb, p->zName, zName + ); + return rc; +} + +/* +** The xSavepoint() method. +** +** Flush the contents of the pending-terms table to disk. +*/ +static int fts3SavepointMethod(sqlite3_vtab *pVtab, int iSavepoint){ + int rc = SQLITE_OK; + UNUSED_PARAMETER(iSavepoint); + assert( ((Fts3Table *)pVtab)->inTransaction ); + assert( ((Fts3Table *)pVtab)->mxSavepoint < iSavepoint ); + TESTONLY( ((Fts3Table *)pVtab)->mxSavepoint = iSavepoint ); + if( ((Fts3Table *)pVtab)->bIgnoreSavepoint==0 ){ + rc = fts3SyncMethod(pVtab); + } + return rc; +} + +/* +** The xRelease() method. +** +** This is a no-op. +*/ +static int fts3ReleaseMethod(sqlite3_vtab *pVtab, int iSavepoint){ + TESTONLY( Fts3Table *p = (Fts3Table*)pVtab ); + UNUSED_PARAMETER(iSavepoint); + UNUSED_PARAMETER(pVtab); + assert( p->inTransaction ); + assert( p->mxSavepoint >= iSavepoint ); + TESTONLY( p->mxSavepoint = iSavepoint-1 ); + return SQLITE_OK; +} + +/* +** The xRollbackTo() method. +** +** Discard the contents of the pending terms table. +*/ +static int fts3RollbackToMethod(sqlite3_vtab *pVtab, int iSavepoint){ + Fts3Table *p = (Fts3Table*)pVtab; + UNUSED_PARAMETER(iSavepoint); + assert( p->inTransaction ); + assert( p->mxSavepoint >= iSavepoint ); + TESTONLY( p->mxSavepoint = iSavepoint ); + sqlite3Fts3PendingTermsClear(p); + return SQLITE_OK; +} + +static const sqlite3_module fts3Module = { + /* iVersion */ 2, + /* xCreate */ fts3CreateMethod, + /* xConnect */ fts3ConnectMethod, + /* xBestIndex */ fts3BestIndexMethod, + /* xDisconnect */ fts3DisconnectMethod, + /* xDestroy */ fts3DestroyMethod, + /* xOpen */ fts3OpenMethod, + /* xClose */ fts3CloseMethod, + /* xFilter */ fts3FilterMethod, + /* xNext */ fts3NextMethod, + /* xEof */ fts3EofMethod, + /* xColumn */ fts3ColumnMethod, + /* xRowid */ fts3RowidMethod, + /* xUpdate */ fts3UpdateMethod, + /* xBegin */ fts3BeginMethod, + /* xSync */ fts3SyncMethod, + /* xCommit */ fts3CommitMethod, + /* xRollback */ fts3RollbackMethod, + /* xFindFunction */ fts3FindFunctionMethod, + /* xRename */ fts3RenameMethod, + /* xSavepoint */ fts3SavepointMethod, + /* xRelease */ fts3ReleaseMethod, + /* xRollbackTo */ fts3RollbackToMethod, +}; + +/* +** This function is registered as the module destructor (called when an +** FTS3 enabled database connection is closed). It frees the memory +** allocated for the tokenizer hash table. +*/ +static void hashDestroy(void *p){ + Fts3Hash *pHash = (Fts3Hash *)p; + sqlite3Fts3HashClear(pHash); + sqlite3_free(pHash); +} + +/* +** The fts3 built-in tokenizers - "simple", "porter" and "icu"- are +** implemented in files fts3_tokenizer1.c, fts3_porter.c and fts3_icu.c +** respectively. The following three forward declarations are for functions +** declared in these files used to retrieve the respective implementations. +** +** Calling sqlite3Fts3SimpleTokenizerModule() sets the value pointed +** to by the argument to point to the "simple" tokenizer implementation. +** And so on. +*/ +void sqlite3Fts3SimpleTokenizerModule(sqlite3_tokenizer_module const**ppModule); +void sqlite3Fts3PorterTokenizerModule(sqlite3_tokenizer_module const**ppModule); +#ifdef SQLITE_ENABLE_FTS4_UNICODE61 +void sqlite3Fts3UnicodeTokenizer(sqlite3_tokenizer_module const**ppModule); +#endif +#ifdef SQLITE_ENABLE_ICU +void sqlite3Fts3IcuTokenizerModule(sqlite3_tokenizer_module const**ppModule); +#endif + +/* +** Initialise the fts3 extension. If this extension is built as part +** of the sqlite library, then this function is called directly by +** SQLite. If fts3 is built as a dynamically loadable extension, this +** function is called by the sqlite3_extension_init() entry point. +*/ +int sqlite3Fts3Init(sqlite3 *db){ + int rc = SQLITE_OK; + Fts3Hash *pHash = 0; + const sqlite3_tokenizer_module *pSimple = 0; + const sqlite3_tokenizer_module *pPorter = 0; +#ifdef SQLITE_ENABLE_FTS4_UNICODE61 + const sqlite3_tokenizer_module *pUnicode = 0; +#endif + +#ifdef SQLITE_ENABLE_ICU + const sqlite3_tokenizer_module *pIcu = 0; + sqlite3Fts3IcuTokenizerModule(&pIcu); +#endif + +#ifdef SQLITE_ENABLE_FTS4_UNICODE61 + sqlite3Fts3UnicodeTokenizer(&pUnicode); +#endif + +#ifdef SQLITE_TEST + rc = sqlite3Fts3InitTerm(db); + if( rc!=SQLITE_OK ) return rc; +#endif + + rc = sqlite3Fts3InitAux(db); + if( rc!=SQLITE_OK ) return rc; + + sqlite3Fts3SimpleTokenizerModule(&pSimple); + sqlite3Fts3PorterTokenizerModule(&pPorter); + + /* Allocate and initialise the hash-table used to store tokenizers. */ + pHash = sqlite3_malloc(sizeof(Fts3Hash)); + if( !pHash ){ + rc = SQLITE_NOMEM; + }else{ + sqlite3Fts3HashInit(pHash, FTS3_HASH_STRING, 1); + } + + /* Load the built-in tokenizers into the hash table */ + if( rc==SQLITE_OK ){ + if( sqlite3Fts3HashInsert(pHash, "simple", 7, (void *)pSimple) + || sqlite3Fts3HashInsert(pHash, "porter", 7, (void *)pPorter) + +#ifdef SQLITE_ENABLE_FTS4_UNICODE61 + || sqlite3Fts3HashInsert(pHash, "unicode61", 10, (void *)pUnicode) +#endif +#ifdef SQLITE_ENABLE_ICU + || (pIcu && sqlite3Fts3HashInsert(pHash, "icu", 4, (void *)pIcu)) +#endif + ){ + rc = SQLITE_NOMEM; + } + } + +#ifdef SQLITE_TEST + if( rc==SQLITE_OK ){ + rc = sqlite3Fts3ExprInitTestInterface(db); + } +#endif + + /* Create the virtual table wrapper around the hash-table and overload + ** the two scalar functions. If this is successful, register the + ** module with sqlite. + */ + if( SQLITE_OK==rc + && SQLITE_OK==(rc = sqlite3Fts3InitHashTable(db, pHash, "fts3_tokenizer")) + && SQLITE_OK==(rc = sqlite3_overload_function(db, "snippet", -1)) + && SQLITE_OK==(rc = sqlite3_overload_function(db, "offsets", 1)) + && SQLITE_OK==(rc = sqlite3_overload_function(db, "matchinfo", 1)) + && SQLITE_OK==(rc = sqlite3_overload_function(db, "matchinfo", 2)) + && SQLITE_OK==(rc = sqlite3_overload_function(db, "optimize", 1)) + ){ + rc = sqlite3_create_module_v2( + db, "fts3", &fts3Module, (void *)pHash, hashDestroy + ); + if( rc==SQLITE_OK ){ + rc = sqlite3_create_module_v2( + db, "fts4", &fts3Module, (void *)pHash, 0 + ); + } + return rc; + } + + /* An error has occurred. Delete the hash table and return the error code. */ + assert( rc!=SQLITE_OK ); + if( pHash ){ + sqlite3Fts3HashClear(pHash); + sqlite3_free(pHash); + } + return rc; +} + +/* +** Allocate an Fts3MultiSegReader for each token in the expression headed +** by pExpr. +** +** An Fts3SegReader object is a cursor that can seek or scan a range of +** entries within a single segment b-tree. An Fts3MultiSegReader uses multiple +** Fts3SegReader objects internally to provide an interface to seek or scan +** within the union of all segments of a b-tree. Hence the name. +** +** If the allocated Fts3MultiSegReader just seeks to a single entry in a +** segment b-tree (if the term is not a prefix or it is a prefix for which +** there exists prefix b-tree of the right length) then it may be traversed +** and merged incrementally. Otherwise, it has to be merged into an in-memory +** doclist and then traversed. +*/ +static void fts3EvalAllocateReaders( + Fts3Cursor *pCsr, /* FTS cursor handle */ + Fts3Expr *pExpr, /* Allocate readers for this expression */ + int *pnToken, /* OUT: Total number of tokens in phrase. */ + int *pnOr, /* OUT: Total number of OR nodes in expr. */ + int *pRc /* IN/OUT: Error code */ +){ + if( pExpr && SQLITE_OK==*pRc ){ + if( pExpr->eType==FTSQUERY_PHRASE ){ + int i; + int nToken = pExpr->pPhrase->nToken; + *pnToken += nToken; + for(i=0; ipPhrase->aToken[i]; + int rc = fts3TermSegReaderCursor(pCsr, + pToken->z, pToken->n, pToken->isPrefix, &pToken->pSegcsr + ); + if( rc!=SQLITE_OK ){ + *pRc = rc; + return; + } + } + assert( pExpr->pPhrase->iDoclistToken==0 ); + pExpr->pPhrase->iDoclistToken = -1; + }else{ + *pnOr += (pExpr->eType==FTSQUERY_OR); + fts3EvalAllocateReaders(pCsr, pExpr->pLeft, pnToken, pnOr, pRc); + fts3EvalAllocateReaders(pCsr, pExpr->pRight, pnToken, pnOr, pRc); + } + } +} + +/* +** Arguments pList/nList contain the doclist for token iToken of phrase p. +** It is merged into the main doclist stored in p->doclist.aAll/nAll. +** +** This function assumes that pList points to a buffer allocated using +** sqlite3_malloc(). This function takes responsibility for eventually +** freeing the buffer. +*/ +static void fts3EvalPhraseMergeToken( + Fts3Table *pTab, /* FTS Table pointer */ + Fts3Phrase *p, /* Phrase to merge pList/nList into */ + int iToken, /* Token pList/nList corresponds to */ + char *pList, /* Pointer to doclist */ + int nList /* Number of bytes in pList */ +){ + assert( iToken!=p->iDoclistToken ); + + if( pList==0 ){ + sqlite3_free(p->doclist.aAll); + p->doclist.aAll = 0; + p->doclist.nAll = 0; + } + + else if( p->iDoclistToken<0 ){ + p->doclist.aAll = pList; + p->doclist.nAll = nList; + } + + else if( p->doclist.aAll==0 ){ + sqlite3_free(pList); + } + + else { + char *pLeft; + char *pRight; + int nLeft; + int nRight; + int nDiff; + + if( p->iDoclistTokendoclist.aAll; + nLeft = p->doclist.nAll; + pRight = pList; + nRight = nList; + nDiff = iToken - p->iDoclistToken; + }else{ + pRight = p->doclist.aAll; + nRight = p->doclist.nAll; + pLeft = pList; + nLeft = nList; + nDiff = p->iDoclistToken - iToken; + } + + fts3DoclistPhraseMerge(pTab->bDescIdx, nDiff, pLeft, nLeft, pRight,&nRight); + sqlite3_free(pLeft); + p->doclist.aAll = pRight; + p->doclist.nAll = nRight; + } + + if( iToken>p->iDoclistToken ) p->iDoclistToken = iToken; +} + +/* +** Load the doclist for phrase p into p->doclist.aAll/nAll. The loaded doclist +** does not take deferred tokens into account. +** +** SQLITE_OK is returned if no error occurs, otherwise an SQLite error code. +*/ +static int fts3EvalPhraseLoad( + Fts3Cursor *pCsr, /* FTS Cursor handle */ + Fts3Phrase *p /* Phrase object */ +){ + Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab; + int iToken; + int rc = SQLITE_OK; + + for(iToken=0; rc==SQLITE_OK && iTokennToken; iToken++){ + Fts3PhraseToken *pToken = &p->aToken[iToken]; + assert( pToken->pDeferred==0 || pToken->pSegcsr==0 ); + + if( pToken->pSegcsr ){ + int nThis = 0; + char *pThis = 0; + rc = fts3TermSelect(pTab, pToken, p->iColumn, &nThis, &pThis); + if( rc==SQLITE_OK ){ + fts3EvalPhraseMergeToken(pTab, p, iToken, pThis, nThis); + } + } + assert( pToken->pSegcsr==0 ); + } + + return rc; +} + +/* +** This function is called on each phrase after the position lists for +** any deferred tokens have been loaded into memory. It updates the phrases +** current position list to include only those positions that are really +** instances of the phrase (after considering deferred tokens). If this +** means that the phrase does not appear in the current row, doclist.pList +** and doclist.nList are both zeroed. +** +** SQLITE_OK is returned if no error occurs, otherwise an SQLite error code. +*/ +static int fts3EvalDeferredPhrase(Fts3Cursor *pCsr, Fts3Phrase *pPhrase){ + int iToken; /* Used to iterate through phrase tokens */ + char *aPoslist = 0; /* Position list for deferred tokens */ + int nPoslist = 0; /* Number of bytes in aPoslist */ + int iPrev = -1; /* Token number of previous deferred token */ + + assert( pPhrase->doclist.bFreeList==0 ); + + for(iToken=0; iTokennToken; iToken++){ + Fts3PhraseToken *pToken = &pPhrase->aToken[iToken]; + Fts3DeferredToken *pDeferred = pToken->pDeferred; + + if( pDeferred ){ + char *pList; + int nList; + int rc = sqlite3Fts3DeferredTokenList(pDeferred, &pList, &nList); + if( rc!=SQLITE_OK ) return rc; + + if( pList==0 ){ + sqlite3_free(aPoslist); + pPhrase->doclist.pList = 0; + pPhrase->doclist.nList = 0; + return SQLITE_OK; + + }else if( aPoslist==0 ){ + aPoslist = pList; + nPoslist = nList; + + }else{ + char *aOut = pList; + char *p1 = aPoslist; + char *p2 = aOut; + + assert( iPrev>=0 ); + fts3PoslistPhraseMerge(&aOut, iToken-iPrev, 0, 1, &p1, &p2); + sqlite3_free(aPoslist); + aPoslist = pList; + nPoslist = (int)(aOut - aPoslist); + if( nPoslist==0 ){ + sqlite3_free(aPoslist); + pPhrase->doclist.pList = 0; + pPhrase->doclist.nList = 0; + return SQLITE_OK; + } + } + iPrev = iToken; + } + } + + if( iPrev>=0 ){ + int nMaxUndeferred = pPhrase->iDoclistToken; + if( nMaxUndeferred<0 ){ + pPhrase->doclist.pList = aPoslist; + pPhrase->doclist.nList = nPoslist; + pPhrase->doclist.iDocid = pCsr->iPrevId; + pPhrase->doclist.bFreeList = 1; + }else{ + int nDistance; + char *p1; + char *p2; + char *aOut; + + if( nMaxUndeferred>iPrev ){ + p1 = aPoslist; + p2 = pPhrase->doclist.pList; + nDistance = nMaxUndeferred - iPrev; + }else{ + p1 = pPhrase->doclist.pList; + p2 = aPoslist; + nDistance = iPrev - nMaxUndeferred; + } + + aOut = (char *)sqlite3_malloc(nPoslist+8); + if( !aOut ){ + sqlite3_free(aPoslist); + return SQLITE_NOMEM; + } + + pPhrase->doclist.pList = aOut; + if( fts3PoslistPhraseMerge(&aOut, nDistance, 0, 1, &p1, &p2) ){ + pPhrase->doclist.bFreeList = 1; + pPhrase->doclist.nList = (int)(aOut - pPhrase->doclist.pList); + }else{ + sqlite3_free(aOut); + pPhrase->doclist.pList = 0; + pPhrase->doclist.nList = 0; + } + sqlite3_free(aPoslist); + } + } + + return SQLITE_OK; +} + +/* +** This function is called for each Fts3Phrase in a full-text query +** expression to initialize the mechanism for returning rows. Once this +** function has been called successfully on an Fts3Phrase, it may be +** used with fts3EvalPhraseNext() to iterate through the matching docids. +** +** If parameter bOptOk is true, then the phrase may (or may not) use the +** incremental loading strategy. Otherwise, the entire doclist is loaded into +** memory within this call. +** +** SQLITE_OK is returned if no error occurs, otherwise an SQLite error code. +*/ +static int fts3EvalPhraseStart(Fts3Cursor *pCsr, int bOptOk, Fts3Phrase *p){ + int rc; /* Error code */ + Fts3PhraseToken *pFirst = &p->aToken[0]; + Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab; + + if( pCsr->bDesc==pTab->bDescIdx + && bOptOk==1 + && p->nToken==1 + && pFirst->pSegcsr + && pFirst->pSegcsr->bLookup + && pFirst->bFirst==0 + ){ + /* Use the incremental approach. */ + int iCol = (p->iColumn >= pTab->nColumn ? -1 : p->iColumn); + rc = sqlite3Fts3MsrIncrStart( + pTab, pFirst->pSegcsr, iCol, pFirst->z, pFirst->n); + p->bIncr = 1; + + }else{ + /* Load the full doclist for the phrase into memory. */ + rc = fts3EvalPhraseLoad(pCsr, p); + p->bIncr = 0; + } + + assert( rc!=SQLITE_OK || p->nToken<1 || p->aToken[0].pSegcsr==0 || p->bIncr ); + return rc; +} + +/* +** This function is used to iterate backwards (from the end to start) +** through doclists. It is used by this module to iterate through phrase +** doclists in reverse and by the fts3_write.c module to iterate through +** pending-terms lists when writing to databases with "order=desc". +** +** The doclist may be sorted in ascending (parameter bDescIdx==0) or +** descending (parameter bDescIdx==1) order of docid. Regardless, this +** function iterates from the end of the doclist to the beginning. +*/ +void sqlite3Fts3DoclistPrev( + int bDescIdx, /* True if the doclist is desc */ + char *aDoclist, /* Pointer to entire doclist */ + int nDoclist, /* Length of aDoclist in bytes */ + char **ppIter, /* IN/OUT: Iterator pointer */ + sqlite3_int64 *piDocid, /* IN/OUT: Docid pointer */ + int *pnList, /* OUT: List length pointer */ + u8 *pbEof /* OUT: End-of-file flag */ +){ + char *p = *ppIter; + + assert( nDoclist>0 ); + assert( *pbEof==0 ); + assert( p || *piDocid==0 ); + assert( !p || (p>aDoclist && p<&aDoclist[nDoclist]) ); + + if( p==0 ){ + sqlite3_int64 iDocid = 0; + char *pNext = 0; + char *pDocid = aDoclist; + char *pEnd = &aDoclist[nDoclist]; + int iMul = 1; + + while( pDocid0 ); + assert( *pbEof==0 ); + assert( p || *piDocid==0 ); + assert( !p || (p>=aDoclist && p<=&aDoclist[nDoclist]) ); + + if( p==0 ){ + p = aDoclist; + p += sqlite3Fts3GetVarint(p, piDocid); + }else{ + fts3PoslistCopy(0, &p); + if( p>=&aDoclist[nDoclist] ){ + *pbEof = 1; + }else{ + sqlite3_int64 iVar; + p += sqlite3Fts3GetVarint(p, &iVar); + *piDocid += ((bDescIdx ? -1 : 1) * iVar); + } + } + + *ppIter = p; +} + +/* +** Attempt to move the phrase iterator to point to the next matching docid. +** If an error occurs, return an SQLite error code. Otherwise, return +** SQLITE_OK. +** +** If there is no "next" entry and no error occurs, then *pbEof is set to +** 1 before returning. Otherwise, if no error occurs and the iterator is +** successfully advanced, *pbEof is set to 0. +*/ +static int fts3EvalPhraseNext( + Fts3Cursor *pCsr, /* FTS Cursor handle */ + Fts3Phrase *p, /* Phrase object to advance to next docid */ + u8 *pbEof /* OUT: Set to 1 if EOF */ +){ + int rc = SQLITE_OK; + Fts3Doclist *pDL = &p->doclist; + Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab; + + if( p->bIncr ){ + assert( p->nToken==1 ); + assert( pDL->pNextDocid==0 ); + rc = sqlite3Fts3MsrIncrNext(pTab, p->aToken[0].pSegcsr, + &pDL->iDocid, &pDL->pList, &pDL->nList + ); + if( rc==SQLITE_OK && !pDL->pList ){ + *pbEof = 1; + } + }else if( pCsr->bDesc!=pTab->bDescIdx && pDL->nAll ){ + sqlite3Fts3DoclistPrev(pTab->bDescIdx, pDL->aAll, pDL->nAll, + &pDL->pNextDocid, &pDL->iDocid, &pDL->nList, pbEof + ); + pDL->pList = pDL->pNextDocid; + }else{ + char *pIter; /* Used to iterate through aAll */ + char *pEnd = &pDL->aAll[pDL->nAll]; /* 1 byte past end of aAll */ + if( pDL->pNextDocid ){ + pIter = pDL->pNextDocid; + }else{ + pIter = pDL->aAll; + } + + if( pIter>=pEnd ){ + /* We have already reached the end of this doclist. EOF. */ + *pbEof = 1; + }else{ + sqlite3_int64 iDelta; + pIter += sqlite3Fts3GetVarint(pIter, &iDelta); + if( pTab->bDescIdx==0 || pDL->pNextDocid==0 ){ + pDL->iDocid += iDelta; + }else{ + pDL->iDocid -= iDelta; + } + pDL->pList = pIter; + fts3PoslistCopy(0, &pIter); + pDL->nList = (int)(pIter - pDL->pList); + + /* pIter now points just past the 0x00 that terminates the position- + ** list for document pDL->iDocid. However, if this position-list was + ** edited in place by fts3EvalNearTrim(), then pIter may not actually + ** point to the start of the next docid value. The following line deals + ** with this case by advancing pIter past the zero-padding added by + ** fts3EvalNearTrim(). */ + while( pIterpNextDocid = pIter; + assert( pIter>=&pDL->aAll[pDL->nAll] || *pIter ); + *pbEof = 0; + } + } + + return rc; +} + +/* +** +** If *pRc is not SQLITE_OK when this function is called, it is a no-op. +** Otherwise, fts3EvalPhraseStart() is called on all phrases within the +** expression. Also the Fts3Expr.bDeferred variable is set to true for any +** expressions for which all descendent tokens are deferred. +** +** If parameter bOptOk is zero, then it is guaranteed that the +** Fts3Phrase.doclist.aAll/nAll variables contain the entire doclist for +** each phrase in the expression (subject to deferred token processing). +** Or, if bOptOk is non-zero, then one or more tokens within the expression +** may be loaded incrementally, meaning doclist.aAll/nAll is not available. +** +** If an error occurs within this function, *pRc is set to an SQLite error +** code before returning. +*/ +static void fts3EvalStartReaders( + Fts3Cursor *pCsr, /* FTS Cursor handle */ + Fts3Expr *pExpr, /* Expression to initialize phrases in */ + int bOptOk, /* True to enable incremental loading */ + int *pRc /* IN/OUT: Error code */ +){ + if( pExpr && SQLITE_OK==*pRc ){ + if( pExpr->eType==FTSQUERY_PHRASE ){ + int i; + int nToken = pExpr->pPhrase->nToken; + for(i=0; ipPhrase->aToken[i].pDeferred==0 ) break; + } + pExpr->bDeferred = (i==nToken); + *pRc = fts3EvalPhraseStart(pCsr, bOptOk, pExpr->pPhrase); + }else{ + fts3EvalStartReaders(pCsr, pExpr->pLeft, bOptOk, pRc); + fts3EvalStartReaders(pCsr, pExpr->pRight, bOptOk, pRc); + pExpr->bDeferred = (pExpr->pLeft->bDeferred && pExpr->pRight->bDeferred); + } + } +} + +/* +** An array of the following structures is assembled as part of the process +** of selecting tokens to defer before the query starts executing (as part +** of the xFilter() method). There is one element in the array for each +** token in the FTS expression. +** +** Tokens are divided into AND/NEAR clusters. All tokens in a cluster belong +** to phrases that are connected only by AND and NEAR operators (not OR or +** NOT). When determining tokens to defer, each AND/NEAR cluster is considered +** separately. The root of a tokens AND/NEAR cluster is stored in +** Fts3TokenAndCost.pRoot. +*/ +typedef struct Fts3TokenAndCost Fts3TokenAndCost; +struct Fts3TokenAndCost { + Fts3Phrase *pPhrase; /* The phrase the token belongs to */ + int iToken; /* Position of token in phrase */ + Fts3PhraseToken *pToken; /* The token itself */ + Fts3Expr *pRoot; /* Root of NEAR/AND cluster */ + int nOvfl; /* Number of overflow pages to load doclist */ + int iCol; /* The column the token must match */ +}; + +/* +** This function is used to populate an allocated Fts3TokenAndCost array. +** +** If *pRc is not SQLITE_OK when this function is called, it is a no-op. +** Otherwise, if an error occurs during execution, *pRc is set to an +** SQLite error code. +*/ +static void fts3EvalTokenCosts( + Fts3Cursor *pCsr, /* FTS Cursor handle */ + Fts3Expr *pRoot, /* Root of current AND/NEAR cluster */ + Fts3Expr *pExpr, /* Expression to consider */ + Fts3TokenAndCost **ppTC, /* Write new entries to *(*ppTC)++ */ + Fts3Expr ***ppOr, /* Write new OR root to *(*ppOr)++ */ + int *pRc /* IN/OUT: Error code */ +){ + if( *pRc==SQLITE_OK ){ + if( pExpr->eType==FTSQUERY_PHRASE ){ + Fts3Phrase *pPhrase = pExpr->pPhrase; + int i; + for(i=0; *pRc==SQLITE_OK && inToken; i++){ + Fts3TokenAndCost *pTC = (*ppTC)++; + pTC->pPhrase = pPhrase; + pTC->iToken = i; + pTC->pRoot = pRoot; + pTC->pToken = &pPhrase->aToken[i]; + pTC->iCol = pPhrase->iColumn; + *pRc = sqlite3Fts3MsrOvfl(pCsr, pTC->pToken->pSegcsr, &pTC->nOvfl); + } + }else if( pExpr->eType!=FTSQUERY_NOT ){ + assert( pExpr->eType==FTSQUERY_OR + || pExpr->eType==FTSQUERY_AND + || pExpr->eType==FTSQUERY_NEAR + ); + assert( pExpr->pLeft && pExpr->pRight ); + if( pExpr->eType==FTSQUERY_OR ){ + pRoot = pExpr->pLeft; + **ppOr = pRoot; + (*ppOr)++; + } + fts3EvalTokenCosts(pCsr, pRoot, pExpr->pLeft, ppTC, ppOr, pRc); + if( pExpr->eType==FTSQUERY_OR ){ + pRoot = pExpr->pRight; + **ppOr = pRoot; + (*ppOr)++; + } + fts3EvalTokenCosts(pCsr, pRoot, pExpr->pRight, ppTC, ppOr, pRc); + } + } +} + +/* +** Determine the average document (row) size in pages. If successful, +** write this value to *pnPage and return SQLITE_OK. Otherwise, return +** an SQLite error code. +** +** The average document size in pages is calculated by first calculating +** determining the average size in bytes, B. If B is less than the amount +** of data that will fit on a single leaf page of an intkey table in +** this database, then the average docsize is 1. Otherwise, it is 1 plus +** the number of overflow pages consumed by a record B bytes in size. +*/ +static int fts3EvalAverageDocsize(Fts3Cursor *pCsr, int *pnPage){ + if( pCsr->nRowAvg==0 ){ + /* The average document size, which is required to calculate the cost + ** of each doclist, has not yet been determined. Read the required + ** data from the %_stat table to calculate it. + ** + ** Entry 0 of the %_stat table is a blob containing (nCol+1) FTS3 + ** varints, where nCol is the number of columns in the FTS3 table. + ** The first varint is the number of documents currently stored in + ** the table. The following nCol varints contain the total amount of + ** data stored in all rows of each column of the table, from left + ** to right. + */ + int rc; + Fts3Table *p = (Fts3Table*)pCsr->base.pVtab; + sqlite3_stmt *pStmt; + sqlite3_int64 nDoc = 0; + sqlite3_int64 nByte = 0; + const char *pEnd; + const char *a; + + rc = sqlite3Fts3SelectDoctotal(p, &pStmt); + if( rc!=SQLITE_OK ) return rc; + a = sqlite3_column_blob(pStmt, 0); + assert( a ); + + pEnd = &a[sqlite3_column_bytes(pStmt, 0)]; + a += sqlite3Fts3GetVarint(a, &nDoc); + while( anDoc = nDoc; + pCsr->nRowAvg = (int)(((nByte / nDoc) + p->nPgsz) / p->nPgsz); + assert( pCsr->nRowAvg>0 ); + rc = sqlite3_reset(pStmt); + if( rc!=SQLITE_OK ) return rc; + } + + *pnPage = pCsr->nRowAvg; + return SQLITE_OK; +} + +/* +** This function is called to select the tokens (if any) that will be +** deferred. The array aTC[] has already been populated when this is +** called. +** +** This function is called once for each AND/NEAR cluster in the +** expression. Each invocation determines which tokens to defer within +** the cluster with root node pRoot. See comments above the definition +** of struct Fts3TokenAndCost for more details. +** +** If no error occurs, SQLITE_OK is returned and sqlite3Fts3DeferToken() +** called on each token to defer. Otherwise, an SQLite error code is +** returned. +*/ +static int fts3EvalSelectDeferred( + Fts3Cursor *pCsr, /* FTS Cursor handle */ + Fts3Expr *pRoot, /* Consider tokens with this root node */ + Fts3TokenAndCost *aTC, /* Array of expression tokens and costs */ + int nTC /* Number of entries in aTC[] */ +){ + Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab; + int nDocSize = 0; /* Number of pages per doc loaded */ + int rc = SQLITE_OK; /* Return code */ + int ii; /* Iterator variable for various purposes */ + int nOvfl = 0; /* Total overflow pages used by doclists */ + int nToken = 0; /* Total number of tokens in cluster */ + + int nMinEst = 0; /* The minimum count for any phrase so far. */ + int nLoad4 = 1; /* (Phrases that will be loaded)^4. */ + + /* Tokens are never deferred for FTS tables created using the content=xxx + ** option. The reason being that it is not guaranteed that the content + ** table actually contains the same data as the index. To prevent this from + ** causing any problems, the deferred token optimization is completely + ** disabled for content=xxx tables. */ + if( pTab->zContentTbl ){ + return SQLITE_OK; + } + + /* Count the tokens in this AND/NEAR cluster. If none of the doclists + ** associated with the tokens spill onto overflow pages, or if there is + ** only 1 token, exit early. No tokens to defer in this case. */ + for(ii=0; ii0 ); + + + /* Iterate through all tokens in this AND/NEAR cluster, in ascending order + ** of the number of overflow pages that will be loaded by the pager layer + ** to retrieve the entire doclist for the token from the full-text index. + ** Load the doclists for tokens that are either: + ** + ** a. The cheapest token in the entire query (i.e. the one visited by the + ** first iteration of this loop), or + ** + ** b. Part of a multi-token phrase. + ** + ** After each token doclist is loaded, merge it with the others from the + ** same phrase and count the number of documents that the merged doclist + ** contains. Set variable "nMinEst" to the smallest number of documents in + ** any phrase doclist for which 1 or more token doclists have been loaded. + ** Let nOther be the number of other phrases for which it is certain that + ** one or more tokens will not be deferred. + ** + ** Then, for each token, defer it if loading the doclist would result in + ** loading N or more overflow pages into memory, where N is computed as: + ** + ** (nMinEst + 4^nOther - 1) / (4^nOther) + */ + for(ii=0; iinOvfl) + ){ + pTC = &aTC[iTC]; + } + } + assert( pTC ); + + if( ii && pTC->nOvfl>=((nMinEst+(nLoad4/4)-1)/(nLoad4/4))*nDocSize ){ + /* The number of overflow pages to load for this (and therefore all + ** subsequent) tokens is greater than the estimated number of pages + ** that will be loaded if all subsequent tokens are deferred. + */ + Fts3PhraseToken *pToken = pTC->pToken; + rc = sqlite3Fts3DeferToken(pCsr, pToken, pTC->iCol); + fts3SegReaderCursorFree(pToken->pSegcsr); + pToken->pSegcsr = 0; + }else{ + /* Set nLoad4 to the value of (4^nOther) for the next iteration of the + ** for-loop. Except, limit the value to 2^24 to prevent it from + ** overflowing the 32-bit integer it is stored in. */ + if( ii<12 ) nLoad4 = nLoad4*4; + + if( ii==0 || pTC->pPhrase->nToken>1 ){ + /* Either this is the cheapest token in the entire query, or it is + ** part of a multi-token phrase. Either way, the entire doclist will + ** (eventually) be loaded into memory. It may as well be now. */ + Fts3PhraseToken *pToken = pTC->pToken; + int nList = 0; + char *pList = 0; + rc = fts3TermSelect(pTab, pToken, pTC->iCol, &nList, &pList); + assert( rc==SQLITE_OK || pList==0 ); + if( rc==SQLITE_OK ){ + int nCount; + fts3EvalPhraseMergeToken(pTab, pTC->pPhrase, pTC->iToken,pList,nList); + nCount = fts3DoclistCountDocids( + pTC->pPhrase->doclist.aAll, pTC->pPhrase->doclist.nAll + ); + if( ii==0 || nCountpToken = 0; + } + + return rc; +} + +/* +** This function is called from within the xFilter method. It initializes +** the full-text query currently stored in pCsr->pExpr. To iterate through +** the results of a query, the caller does: +** +** fts3EvalStart(pCsr); +** while( 1 ){ +** fts3EvalNext(pCsr); +** if( pCsr->bEof ) break; +** ... return row pCsr->iPrevId to the caller ... +** } +*/ +static int fts3EvalStart(Fts3Cursor *pCsr){ + Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab; + int rc = SQLITE_OK; + int nToken = 0; + int nOr = 0; + + /* Allocate a MultiSegReader for each token in the expression. */ + fts3EvalAllocateReaders(pCsr, pCsr->pExpr, &nToken, &nOr, &rc); + + /* Determine which, if any, tokens in the expression should be deferred. */ +#ifndef SQLITE_DISABLE_FTS4_DEFERRED + if( rc==SQLITE_OK && nToken>1 && pTab->bFts4 ){ + Fts3TokenAndCost *aTC; + Fts3Expr **apOr; + aTC = (Fts3TokenAndCost *)sqlite3_malloc( + sizeof(Fts3TokenAndCost) * nToken + + sizeof(Fts3Expr *) * nOr * 2 + ); + apOr = (Fts3Expr **)&aTC[nToken]; + + if( !aTC ){ + rc = SQLITE_NOMEM; + }else{ + int ii; + Fts3TokenAndCost *pTC = aTC; + Fts3Expr **ppOr = apOr; + + fts3EvalTokenCosts(pCsr, 0, pCsr->pExpr, &pTC, &ppOr, &rc); + nToken = (int)(pTC-aTC); + nOr = (int)(ppOr-apOr); + + if( rc==SQLITE_OK ){ + rc = fts3EvalSelectDeferred(pCsr, 0, aTC, nToken); + for(ii=0; rc==SQLITE_OK && iipExpr, 1, &rc); + return rc; +} + +/* +** Invalidate the current position list for phrase pPhrase. +*/ +static void fts3EvalInvalidatePoslist(Fts3Phrase *pPhrase){ + if( pPhrase->doclist.bFreeList ){ + sqlite3_free(pPhrase->doclist.pList); + } + pPhrase->doclist.pList = 0; + pPhrase->doclist.nList = 0; + pPhrase->doclist.bFreeList = 0; +} + +/* +** This function is called to edit the position list associated with +** the phrase object passed as the fifth argument according to a NEAR +** condition. For example: +** +** abc NEAR/5 "def ghi" +** +** Parameter nNear is passed the NEAR distance of the expression (5 in +** the example above). When this function is called, *paPoslist points to +** the position list, and *pnToken is the number of phrase tokens in, the +** phrase on the other side of the NEAR operator to pPhrase. For example, +** if pPhrase refers to the "def ghi" phrase, then *paPoslist points to +** the position list associated with phrase "abc". +** +** All positions in the pPhrase position list that are not sufficiently +** close to a position in the *paPoslist position list are removed. If this +** leaves 0 positions, zero is returned. Otherwise, non-zero. +** +** Before returning, *paPoslist is set to point to the position lsit +** associated with pPhrase. And *pnToken is set to the number of tokens in +** pPhrase. +*/ +static int fts3EvalNearTrim( + int nNear, /* NEAR distance. As in "NEAR/nNear". */ + char *aTmp, /* Temporary space to use */ + char **paPoslist, /* IN/OUT: Position list */ + int *pnToken, /* IN/OUT: Tokens in phrase of *paPoslist */ + Fts3Phrase *pPhrase /* The phrase object to trim the doclist of */ +){ + int nParam1 = nNear + pPhrase->nToken; + int nParam2 = nNear + *pnToken; + int nNew; + char *p2; + char *pOut; + int res; + + assert( pPhrase->doclist.pList ); + + p2 = pOut = pPhrase->doclist.pList; + res = fts3PoslistNearMerge( + &pOut, aTmp, nParam1, nParam2, paPoslist, &p2 + ); + if( res ){ + nNew = (int)(pOut - pPhrase->doclist.pList) - 1; + assert( pPhrase->doclist.pList[nNew]=='\0' ); + assert( nNew<=pPhrase->doclist.nList && nNew>0 ); + memset(&pPhrase->doclist.pList[nNew], 0, pPhrase->doclist.nList - nNew); + pPhrase->doclist.nList = nNew; + *paPoslist = pPhrase->doclist.pList; + *pnToken = pPhrase->nToken; + } + + return res; +} + +/* +** This function is a no-op if *pRc is other than SQLITE_OK when it is called. +** Otherwise, it advances the expression passed as the second argument to +** point to the next matching row in the database. Expressions iterate through +** matching rows in docid order. Ascending order if Fts3Cursor.bDesc is zero, +** or descending if it is non-zero. +** +** If an error occurs, *pRc is set to an SQLite error code. Otherwise, if +** successful, the following variables in pExpr are set: +** +** Fts3Expr.bEof (non-zero if EOF - there is no next row) +** Fts3Expr.iDocid (valid if bEof==0. The docid of the next row) +** +** If the expression is of type FTSQUERY_PHRASE, and the expression is not +** at EOF, then the following variables are populated with the position list +** for the phrase for the visited row: +** +** FTs3Expr.pPhrase->doclist.nList (length of pList in bytes) +** FTs3Expr.pPhrase->doclist.pList (pointer to position list) +** +** It says above that this function advances the expression to the next +** matching row. This is usually true, but there are the following exceptions: +** +** 1. Deferred tokens are not taken into account. If a phrase consists +** entirely of deferred tokens, it is assumed to match every row in +** the db. In this case the position-list is not populated at all. +** +** Or, if a phrase contains one or more deferred tokens and one or +** more non-deferred tokens, then the expression is advanced to the +** next possible match, considering only non-deferred tokens. In other +** words, if the phrase is "A B C", and "B" is deferred, the expression +** is advanced to the next row that contains an instance of "A * C", +** where "*" may match any single token. The position list in this case +** is populated as for "A * C" before returning. +** +** 2. NEAR is treated as AND. If the expression is "x NEAR y", it is +** advanced to point to the next row that matches "x AND y". +** +** See fts3EvalTestDeferredAndNear() for details on testing if a row is +** really a match, taking into account deferred tokens and NEAR operators. +*/ +static void fts3EvalNextRow( + Fts3Cursor *pCsr, /* FTS Cursor handle */ + Fts3Expr *pExpr, /* Expr. to advance to next matching row */ + int *pRc /* IN/OUT: Error code */ +){ + if( *pRc==SQLITE_OK ){ + int bDescDoclist = pCsr->bDesc; /* Used by DOCID_CMP() macro */ + assert( pExpr->bEof==0 ); + pExpr->bStart = 1; + + switch( pExpr->eType ){ + case FTSQUERY_NEAR: + case FTSQUERY_AND: { + Fts3Expr *pLeft = pExpr->pLeft; + Fts3Expr *pRight = pExpr->pRight; + assert( !pLeft->bDeferred || !pRight->bDeferred ); + + if( pLeft->bDeferred ){ + /* LHS is entirely deferred. So we assume it matches every row. + ** Advance the RHS iterator to find the next row visited. */ + fts3EvalNextRow(pCsr, pRight, pRc); + pExpr->iDocid = pRight->iDocid; + pExpr->bEof = pRight->bEof; + }else if( pRight->bDeferred ){ + /* RHS is entirely deferred. So we assume it matches every row. + ** Advance the LHS iterator to find the next row visited. */ + fts3EvalNextRow(pCsr, pLeft, pRc); + pExpr->iDocid = pLeft->iDocid; + pExpr->bEof = pLeft->bEof; + }else{ + /* Neither the RHS or LHS are deferred. */ + fts3EvalNextRow(pCsr, pLeft, pRc); + fts3EvalNextRow(pCsr, pRight, pRc); + while( !pLeft->bEof && !pRight->bEof && *pRc==SQLITE_OK ){ + sqlite3_int64 iDiff = DOCID_CMP(pLeft->iDocid, pRight->iDocid); + if( iDiff==0 ) break; + if( iDiff<0 ){ + fts3EvalNextRow(pCsr, pLeft, pRc); + }else{ + fts3EvalNextRow(pCsr, pRight, pRc); + } + } + pExpr->iDocid = pLeft->iDocid; + pExpr->bEof = (pLeft->bEof || pRight->bEof); + } + break; + } + + case FTSQUERY_OR: { + Fts3Expr *pLeft = pExpr->pLeft; + Fts3Expr *pRight = pExpr->pRight; + sqlite3_int64 iCmp = DOCID_CMP(pLeft->iDocid, pRight->iDocid); + + assert( pLeft->bStart || pLeft->iDocid==pRight->iDocid ); + assert( pRight->bStart || pLeft->iDocid==pRight->iDocid ); + + if( pRight->bEof || (pLeft->bEof==0 && iCmp<0) ){ + fts3EvalNextRow(pCsr, pLeft, pRc); + }else if( pLeft->bEof || (pRight->bEof==0 && iCmp>0) ){ + fts3EvalNextRow(pCsr, pRight, pRc); + }else{ + fts3EvalNextRow(pCsr, pLeft, pRc); + fts3EvalNextRow(pCsr, pRight, pRc); + } + + pExpr->bEof = (pLeft->bEof && pRight->bEof); + iCmp = DOCID_CMP(pLeft->iDocid, pRight->iDocid); + if( pRight->bEof || (pLeft->bEof==0 && iCmp<0) ){ + pExpr->iDocid = pLeft->iDocid; + }else{ + pExpr->iDocid = pRight->iDocid; + } + + break; + } + + case FTSQUERY_NOT: { + Fts3Expr *pLeft = pExpr->pLeft; + Fts3Expr *pRight = pExpr->pRight; + + if( pRight->bStart==0 ){ + fts3EvalNextRow(pCsr, pRight, pRc); + assert( *pRc!=SQLITE_OK || pRight->bStart ); + } + + fts3EvalNextRow(pCsr, pLeft, pRc); + if( pLeft->bEof==0 ){ + while( !*pRc + && !pRight->bEof + && DOCID_CMP(pLeft->iDocid, pRight->iDocid)>0 + ){ + fts3EvalNextRow(pCsr, pRight, pRc); + } + } + pExpr->iDocid = pLeft->iDocid; + pExpr->bEof = pLeft->bEof; + break; + } + + default: { + Fts3Phrase *pPhrase = pExpr->pPhrase; + fts3EvalInvalidatePoslist(pPhrase); + *pRc = fts3EvalPhraseNext(pCsr, pPhrase, &pExpr->bEof); + pExpr->iDocid = pPhrase->doclist.iDocid; + break; + } + } + } +} + +/* +** If *pRc is not SQLITE_OK, or if pExpr is not the root node of a NEAR +** cluster, then this function returns 1 immediately. +** +** Otherwise, it checks if the current row really does match the NEAR +** expression, using the data currently stored in the position lists +** (Fts3Expr->pPhrase.doclist.pList/nList) for each phrase in the expression. +** +** If the current row is a match, the position list associated with each +** phrase in the NEAR expression is edited in place to contain only those +** phrase instances sufficiently close to their peers to satisfy all NEAR +** constraints. In this case it returns 1. If the NEAR expression does not +** match the current row, 0 is returned. The position lists may or may not +** be edited if 0 is returned. +*/ +static int fts3EvalNearTest(Fts3Expr *pExpr, int *pRc){ + int res = 1; + + /* The following block runs if pExpr is the root of a NEAR query. + ** For example, the query: + ** + ** "w" NEAR "x" NEAR "y" NEAR "z" + ** + ** which is represented in tree form as: + ** + ** | + ** +--NEAR--+ <-- root of NEAR query + ** | | + ** +--NEAR--+ "z" + ** | | + ** +--NEAR--+ "y" + ** | | + ** "w" "x" + ** + ** The right-hand child of a NEAR node is always a phrase. The + ** left-hand child may be either a phrase or a NEAR node. There are + ** no exceptions to this - it's the way the parser in fts3_expr.c works. + */ + if( *pRc==SQLITE_OK + && pExpr->eType==FTSQUERY_NEAR + && pExpr->bEof==0 + && (pExpr->pParent==0 || pExpr->pParent->eType!=FTSQUERY_NEAR) + ){ + Fts3Expr *p; + int nTmp = 0; /* Bytes of temp space */ + char *aTmp; /* Temp space for PoslistNearMerge() */ + + /* Allocate temporary working space. */ + for(p=pExpr; p->pLeft; p=p->pLeft){ + nTmp += p->pRight->pPhrase->doclist.nList; + } + nTmp += p->pPhrase->doclist.nList; + if( nTmp==0 ){ + res = 0; + }else{ + aTmp = sqlite3_malloc(nTmp*2); + if( !aTmp ){ + *pRc = SQLITE_NOMEM; + res = 0; + }else{ + char *aPoslist = p->pPhrase->doclist.pList; + int nToken = p->pPhrase->nToken; + + for(p=p->pParent;res && p && p->eType==FTSQUERY_NEAR; p=p->pParent){ + Fts3Phrase *pPhrase = p->pRight->pPhrase; + int nNear = p->nNear; + res = fts3EvalNearTrim(nNear, aTmp, &aPoslist, &nToken, pPhrase); + } + + aPoslist = pExpr->pRight->pPhrase->doclist.pList; + nToken = pExpr->pRight->pPhrase->nToken; + for(p=pExpr->pLeft; p && res; p=p->pLeft){ + int nNear; + Fts3Phrase *pPhrase; + assert( p->pParent && p->pParent->pLeft==p ); + nNear = p->pParent->nNear; + pPhrase = ( + p->eType==FTSQUERY_NEAR ? p->pRight->pPhrase : p->pPhrase + ); + res = fts3EvalNearTrim(nNear, aTmp, &aPoslist, &nToken, pPhrase); + } + } + + sqlite3_free(aTmp); + } + } + + return res; +} + +/* +** This function is a helper function for fts3EvalTestDeferredAndNear(). +** Assuming no error occurs or has occurred, It returns non-zero if the +** expression passed as the second argument matches the row that pCsr +** currently points to, or zero if it does not. +** +** If *pRc is not SQLITE_OK when this function is called, it is a no-op. +** If an error occurs during execution of this function, *pRc is set to +** the appropriate SQLite error code. In this case the returned value is +** undefined. +*/ +static int fts3EvalTestExpr( + Fts3Cursor *pCsr, /* FTS cursor handle */ + Fts3Expr *pExpr, /* Expr to test. May or may not be root. */ + int *pRc /* IN/OUT: Error code */ +){ + int bHit = 1; /* Return value */ + if( *pRc==SQLITE_OK ){ + switch( pExpr->eType ){ + case FTSQUERY_NEAR: + case FTSQUERY_AND: + bHit = ( + fts3EvalTestExpr(pCsr, pExpr->pLeft, pRc) + && fts3EvalTestExpr(pCsr, pExpr->pRight, pRc) + && fts3EvalNearTest(pExpr, pRc) + ); + + /* If the NEAR expression does not match any rows, zero the doclist for + ** all phrases involved in the NEAR. This is because the snippet(), + ** offsets() and matchinfo() functions are not supposed to recognize + ** any instances of phrases that are part of unmatched NEAR queries. + ** For example if this expression: + ** + ** ... MATCH 'a OR (b NEAR c)' + ** + ** is matched against a row containing: + ** + ** 'a b d e' + ** + ** then any snippet() should ony highlight the "a" term, not the "b" + ** (as "b" is part of a non-matching NEAR clause). + */ + if( bHit==0 + && pExpr->eType==FTSQUERY_NEAR + && (pExpr->pParent==0 || pExpr->pParent->eType!=FTSQUERY_NEAR) + ){ + Fts3Expr *p; + for(p=pExpr; p->pPhrase==0; p=p->pLeft){ + if( p->pRight->iDocid==pCsr->iPrevId ){ + fts3EvalInvalidatePoslist(p->pRight->pPhrase); + } + } + if( p->iDocid==pCsr->iPrevId ){ + fts3EvalInvalidatePoslist(p->pPhrase); + } + } + + break; + + case FTSQUERY_OR: { + int bHit1 = fts3EvalTestExpr(pCsr, pExpr->pLeft, pRc); + int bHit2 = fts3EvalTestExpr(pCsr, pExpr->pRight, pRc); + bHit = bHit1 || bHit2; + break; + } + + case FTSQUERY_NOT: + bHit = ( + fts3EvalTestExpr(pCsr, pExpr->pLeft, pRc) + && !fts3EvalTestExpr(pCsr, pExpr->pRight, pRc) + ); + break; + + default: { +#ifndef SQLITE_DISABLE_FTS4_DEFERRED + if( pCsr->pDeferred + && (pExpr->iDocid==pCsr->iPrevId || pExpr->bDeferred) + ){ + Fts3Phrase *pPhrase = pExpr->pPhrase; + assert( pExpr->bDeferred || pPhrase->doclist.bFreeList==0 ); + if( pExpr->bDeferred ){ + fts3EvalInvalidatePoslist(pPhrase); + } + *pRc = fts3EvalDeferredPhrase(pCsr, pPhrase); + bHit = (pPhrase->doclist.pList!=0); + pExpr->iDocid = pCsr->iPrevId; + }else +#endif + { + bHit = (pExpr->bEof==0 && pExpr->iDocid==pCsr->iPrevId); + } + break; + } + } + } + return bHit; +} + +/* +** This function is called as the second part of each xNext operation when +** iterating through the results of a full-text query. At this point the +** cursor points to a row that matches the query expression, with the +** following caveats: +** +** * Up until this point, "NEAR" operators in the expression have been +** treated as "AND". +** +** * Deferred tokens have not yet been considered. +** +** If *pRc is not SQLITE_OK when this function is called, it immediately +** returns 0. Otherwise, it tests whether or not after considering NEAR +** operators and deferred tokens the current row is still a match for the +** expression. It returns 1 if both of the following are true: +** +** 1. *pRc is SQLITE_OK when this function returns, and +** +** 2. After scanning the current FTS table row for the deferred tokens, +** it is determined that the row does *not* match the query. +** +** Or, if no error occurs and it seems the current row does match the FTS +** query, return 0. +*/ +static int fts3EvalTestDeferredAndNear(Fts3Cursor *pCsr, int *pRc){ + int rc = *pRc; + int bMiss = 0; + if( rc==SQLITE_OK ){ + + /* If there are one or more deferred tokens, load the current row into + ** memory and scan it to determine the position list for each deferred + ** token. Then, see if this row is really a match, considering deferred + ** tokens and NEAR operators (neither of which were taken into account + ** earlier, by fts3EvalNextRow()). + */ + if( pCsr->pDeferred ){ + rc = fts3CursorSeek(0, pCsr); + if( rc==SQLITE_OK ){ + rc = sqlite3Fts3CacheDeferredDoclists(pCsr); + } + } + bMiss = (0==fts3EvalTestExpr(pCsr, pCsr->pExpr, &rc)); + + /* Free the position-lists accumulated for each deferred token above. */ + sqlite3Fts3FreeDeferredDoclists(pCsr); + *pRc = rc; + } + return (rc==SQLITE_OK && bMiss); +} + +/* +** Advance to the next document that matches the FTS expression in +** Fts3Cursor.pExpr. +*/ +static int fts3EvalNext(Fts3Cursor *pCsr){ + int rc = SQLITE_OK; /* Return Code */ + Fts3Expr *pExpr = pCsr->pExpr; + assert( pCsr->isEof==0 ); + if( pExpr==0 ){ + pCsr->isEof = 1; + }else{ + do { + if( pCsr->isRequireSeek==0 ){ + sqlite3_reset(pCsr->pStmt); + } + assert( sqlite3_data_count(pCsr->pStmt)==0 ); + fts3EvalNextRow(pCsr, pExpr, &rc); + pCsr->isEof = pExpr->bEof; + pCsr->isRequireSeek = 1; + pCsr->isMatchinfoNeeded = 1; + pCsr->iPrevId = pExpr->iDocid; + }while( pCsr->isEof==0 && fts3EvalTestDeferredAndNear(pCsr, &rc) ); + } + return rc; +} + +/* +** Restart interation for expression pExpr so that the next call to +** fts3EvalNext() visits the first row. Do not allow incremental +** loading or merging of phrase doclists for this iteration. +** +** If *pRc is other than SQLITE_OK when this function is called, it is +** a no-op. If an error occurs within this function, *pRc is set to an +** SQLite error code before returning. +*/ +static void fts3EvalRestart( + Fts3Cursor *pCsr, + Fts3Expr *pExpr, + int *pRc +){ + if( pExpr && *pRc==SQLITE_OK ){ + Fts3Phrase *pPhrase = pExpr->pPhrase; + + if( pPhrase ){ + fts3EvalInvalidatePoslist(pPhrase); + if( pPhrase->bIncr ){ + assert( pPhrase->nToken==1 ); + assert( pPhrase->aToken[0].pSegcsr ); + sqlite3Fts3MsrIncrRestart(pPhrase->aToken[0].pSegcsr); + *pRc = fts3EvalPhraseStart(pCsr, 0, pPhrase); + } + + pPhrase->doclist.pNextDocid = 0; + pPhrase->doclist.iDocid = 0; + } + + pExpr->iDocid = 0; + pExpr->bEof = 0; + pExpr->bStart = 0; + + fts3EvalRestart(pCsr, pExpr->pLeft, pRc); + fts3EvalRestart(pCsr, pExpr->pRight, pRc); + } +} + +/* +** After allocating the Fts3Expr.aMI[] array for each phrase in the +** expression rooted at pExpr, the cursor iterates through all rows matched +** by pExpr, calling this function for each row. This function increments +** the values in Fts3Expr.aMI[] according to the position-list currently +** found in Fts3Expr.pPhrase->doclist.pList for each of the phrase +** expression nodes. +*/ +static void fts3EvalUpdateCounts(Fts3Expr *pExpr){ + if( pExpr ){ + Fts3Phrase *pPhrase = pExpr->pPhrase; + if( pPhrase && pPhrase->doclist.pList ){ + int iCol = 0; + char *p = pPhrase->doclist.pList; + + assert( *p ); + while( 1 ){ + u8 c = 0; + int iCnt = 0; + while( 0xFE & (*p | c) ){ + if( (c&0x80)==0 ) iCnt++; + c = *p++ & 0x80; + } + + /* aMI[iCol*3 + 1] = Number of occurrences + ** aMI[iCol*3 + 2] = Number of rows containing at least one instance + */ + pExpr->aMI[iCol*3 + 1] += iCnt; + pExpr->aMI[iCol*3 + 2] += (iCnt>0); + if( *p==0x00 ) break; + p++; + p += sqlite3Fts3GetVarint32(p, &iCol); + } + } + + fts3EvalUpdateCounts(pExpr->pLeft); + fts3EvalUpdateCounts(pExpr->pRight); + } +} + +/* +** Expression pExpr must be of type FTSQUERY_PHRASE. +** +** If it is not already allocated and populated, this function allocates and +** populates the Fts3Expr.aMI[] array for expression pExpr. If pExpr is part +** of a NEAR expression, then it also allocates and populates the same array +** for all other phrases that are part of the NEAR expression. +** +** SQLITE_OK is returned if the aMI[] array is successfully allocated and +** populated. Otherwise, if an error occurs, an SQLite error code is returned. +*/ +static int fts3EvalGatherStats( + Fts3Cursor *pCsr, /* Cursor object */ + Fts3Expr *pExpr /* FTSQUERY_PHRASE expression */ +){ + int rc = SQLITE_OK; /* Return code */ + + assert( pExpr->eType==FTSQUERY_PHRASE ); + if( pExpr->aMI==0 ){ + Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab; + Fts3Expr *pRoot; /* Root of NEAR expression */ + Fts3Expr *p; /* Iterator used for several purposes */ + + sqlite3_int64 iPrevId = pCsr->iPrevId; + sqlite3_int64 iDocid; + u8 bEof; + + /* Find the root of the NEAR expression */ + pRoot = pExpr; + while( pRoot->pParent && pRoot->pParent->eType==FTSQUERY_NEAR ){ + pRoot = pRoot->pParent; + } + iDocid = pRoot->iDocid; + bEof = pRoot->bEof; + assert( pRoot->bStart ); + + /* Allocate space for the aMSI[] array of each FTSQUERY_PHRASE node */ + for(p=pRoot; p; p=p->pLeft){ + Fts3Expr *pE = (p->eType==FTSQUERY_PHRASE?p:p->pRight); + assert( pE->aMI==0 ); + pE->aMI = (u32 *)sqlite3_malloc(pTab->nColumn * 3 * sizeof(u32)); + if( !pE->aMI ) return SQLITE_NOMEM; + memset(pE->aMI, 0, pTab->nColumn * 3 * sizeof(u32)); + } + + fts3EvalRestart(pCsr, pRoot, &rc); + + while( pCsr->isEof==0 && rc==SQLITE_OK ){ + + do { + /* Ensure the %_content statement is reset. */ + if( pCsr->isRequireSeek==0 ) sqlite3_reset(pCsr->pStmt); + assert( sqlite3_data_count(pCsr->pStmt)==0 ); + + /* Advance to the next document */ + fts3EvalNextRow(pCsr, pRoot, &rc); + pCsr->isEof = pRoot->bEof; + pCsr->isRequireSeek = 1; + pCsr->isMatchinfoNeeded = 1; + pCsr->iPrevId = pRoot->iDocid; + }while( pCsr->isEof==0 + && pRoot->eType==FTSQUERY_NEAR + && fts3EvalTestDeferredAndNear(pCsr, &rc) + ); + + if( rc==SQLITE_OK && pCsr->isEof==0 ){ + fts3EvalUpdateCounts(pRoot); + } + } + + pCsr->isEof = 0; + pCsr->iPrevId = iPrevId; + + if( bEof ){ + pRoot->bEof = bEof; + }else{ + /* Caution: pRoot may iterate through docids in ascending or descending + ** order. For this reason, even though it seems more defensive, the + ** do loop can not be written: + ** + ** do {...} while( pRoot->iDocidbEof==0 ); + }while( pRoot->iDocid!=iDocid && rc==SQLITE_OK ); + fts3EvalTestDeferredAndNear(pCsr, &rc); + } + } + return rc; +} + +/* +** This function is used by the matchinfo() module to query a phrase +** expression node for the following information: +** +** 1. The total number of occurrences of the phrase in each column of +** the FTS table (considering all rows), and +** +** 2. For each column, the number of rows in the table for which the +** column contains at least one instance of the phrase. +** +** If no error occurs, SQLITE_OK is returned and the values for each column +** written into the array aiOut as follows: +** +** aiOut[iCol*3 + 1] = Number of occurrences +** aiOut[iCol*3 + 2] = Number of rows containing at least one instance +** +** Caveats: +** +** * If a phrase consists entirely of deferred tokens, then all output +** values are set to the number of documents in the table. In other +** words we assume that very common tokens occur exactly once in each +** column of each row of the table. +** +** * If a phrase contains some deferred tokens (and some non-deferred +** tokens), count the potential occurrence identified by considering +** the non-deferred tokens instead of actual phrase occurrences. +** +** * If the phrase is part of a NEAR expression, then only phrase instances +** that meet the NEAR constraint are included in the counts. +*/ +int sqlite3Fts3EvalPhraseStats( + Fts3Cursor *pCsr, /* FTS cursor handle */ + Fts3Expr *pExpr, /* Phrase expression */ + u32 *aiOut /* Array to write results into (see above) */ +){ + Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab; + int rc = SQLITE_OK; + int iCol; + + if( pExpr->bDeferred && pExpr->pParent->eType!=FTSQUERY_NEAR ){ + assert( pCsr->nDoc>0 ); + for(iCol=0; iColnColumn; iCol++){ + aiOut[iCol*3 + 1] = (u32)pCsr->nDoc; + aiOut[iCol*3 + 2] = (u32)pCsr->nDoc; + } + }else{ + rc = fts3EvalGatherStats(pCsr, pExpr); + if( rc==SQLITE_OK ){ + assert( pExpr->aMI ); + for(iCol=0; iColnColumn; iCol++){ + aiOut[iCol*3 + 1] = pExpr->aMI[iCol*3 + 1]; + aiOut[iCol*3 + 2] = pExpr->aMI[iCol*3 + 2]; + } + } + } + + return rc; +} + +/* +** The expression pExpr passed as the second argument to this function +** must be of type FTSQUERY_PHRASE. +** +** The returned value is either NULL or a pointer to a buffer containing +** a position-list indicating the occurrences of the phrase in column iCol +** of the current row. +** +** More specifically, the returned buffer contains 1 varint for each +** occurence of the phrase in the column, stored using the normal (delta+2) +** compression and is terminated by either an 0x01 or 0x00 byte. For example, +** if the requested column contains "a b X c d X X" and the position-list +** for 'X' is requested, the buffer returned may contain: +** +** 0x04 0x05 0x03 0x01 or 0x04 0x05 0x03 0x00 +** +** This function works regardless of whether or not the phrase is deferred, +** incremental, or neither. +*/ +int sqlite3Fts3EvalPhrasePoslist( + Fts3Cursor *pCsr, /* FTS3 cursor object */ + Fts3Expr *pExpr, /* Phrase to return doclist for */ + int iCol, /* Column to return position list for */ + char **ppOut /* OUT: Pointer to position list */ +){ + Fts3Phrase *pPhrase = pExpr->pPhrase; + Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab; + char *pIter; + int iThis; + sqlite3_int64 iDocid; + + /* If this phrase is applies specifically to some column other than + ** column iCol, return a NULL pointer. */ + *ppOut = 0; + assert( iCol>=0 && iColnColumn ); + if( (pPhrase->iColumnnColumn && pPhrase->iColumn!=iCol) ){ + return SQLITE_OK; + } + + iDocid = pExpr->iDocid; + pIter = pPhrase->doclist.pList; + if( iDocid!=pCsr->iPrevId || pExpr->bEof ){ + int bDescDoclist = pTab->bDescIdx; /* For DOCID_CMP macro */ + int bOr = 0; + u8 bEof = 0; + Fts3Expr *p; + + /* Check if this phrase descends from an OR expression node. If not, + ** return NULL. Otherwise, the entry that corresponds to docid + ** pCsr->iPrevId may lie earlier in the doclist buffer. */ + for(p=pExpr->pParent; p; p=p->pParent){ + if( p->eType==FTSQUERY_OR ) bOr = 1; + } + if( bOr==0 ) return SQLITE_OK; + + /* This is the descendent of an OR node. In this case we cannot use + ** an incremental phrase. Load the entire doclist for the phrase + ** into memory in this case. */ + if( pPhrase->bIncr ){ + int rc = SQLITE_OK; + int bEofSave = pExpr->bEof; + fts3EvalRestart(pCsr, pExpr, &rc); + while( rc==SQLITE_OK && !pExpr->bEof ){ + fts3EvalNextRow(pCsr, pExpr, &rc); + if( bEofSave==0 && pExpr->iDocid==iDocid ) break; + } + pIter = pPhrase->doclist.pList; + assert( rc!=SQLITE_OK || pPhrase->bIncr==0 ); + if( rc!=SQLITE_OK ) return rc; + } + + if( pExpr->bEof ){ + pIter = 0; + iDocid = 0; + } + bEof = (pPhrase->doclist.nAll==0); + assert( bDescDoclist==0 || bDescDoclist==1 ); + assert( pCsr->bDesc==0 || pCsr->bDesc==1 ); + + if( pCsr->bDesc==bDescDoclist ){ + int dummy; + while( (pIter==0 || DOCID_CMP(iDocid, pCsr->iPrevId)>0 ) && bEof==0 ){ + sqlite3Fts3DoclistPrev( + bDescDoclist, pPhrase->doclist.aAll, pPhrase->doclist.nAll, + &pIter, &iDocid, &dummy, &bEof + ); + } + }else{ + while( (pIter==0 || DOCID_CMP(iDocid, pCsr->iPrevId)<0 ) && bEof==0 ){ + sqlite3Fts3DoclistNext( + bDescDoclist, pPhrase->doclist.aAll, pPhrase->doclist.nAll, + &pIter, &iDocid, &bEof + ); + } + } + + if( bEof || iDocid!=pCsr->iPrevId ) pIter = 0; + } + if( pIter==0 ) return SQLITE_OK; + + if( *pIter==0x01 ){ + pIter++; + pIter += sqlite3Fts3GetVarint32(pIter, &iThis); + }else{ + iThis = 0; + } + while( iThisdoclist, and +** * any Fts3MultiSegReader objects held by phrase tokens. +*/ +void sqlite3Fts3EvalPhraseCleanup(Fts3Phrase *pPhrase){ + if( pPhrase ){ + int i; + sqlite3_free(pPhrase->doclist.aAll); + fts3EvalInvalidatePoslist(pPhrase); + memset(&pPhrase->doclist, 0, sizeof(Fts3Doclist)); + for(i=0; inToken; i++){ + fts3SegReaderCursorFree(pPhrase->aToken[i].pSegcsr); + pPhrase->aToken[i].pSegcsr = 0; + } + } +} + + +/* +** Return SQLITE_CORRUPT_VTAB. +*/ +#ifdef SQLITE_DEBUG +int sqlite3Fts3Corrupt(){ + return SQLITE_CORRUPT_VTAB; +} +#endif + +#if !SQLITE_CORE +/* +** Initialize API pointer table, if required. +*/ +int fts4_extension_init( + sqlite3 *db, + char **pzErrMsg, + void *pApi +){ + SQLITE_EXTENSION_INIT2(pApi) + return sqlite3Fts3Init(db); +} +#endif + +#endif diff -Nru tracker-0.15.1/src/libtracker-fts/fts3.h tracker-0.15.2/src/libtracker-fts/fts3.h --- tracker-0.15.1/src/libtracker-fts/fts3.h 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/fts3.h 2013-02-14 19:30:47.000000000 +0000 @@ -0,0 +1,32 @@ +/* +** 2006 Oct 10 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +****************************************************************************** +** +** This header file is used by programs that want to link against the +** FTS3 library. All it does is declare the sqlite3Fts3Init() interface. +*/ +#include "sqlite3.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +int sqlite3Fts3Init(sqlite3 *db); + +int fts4_extension_init( + sqlite3 *db, + char **pzErrMsg, + void *pApi +); + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* __cplusplus */ diff -Nru tracker-0.15.1/src/libtracker-fts/fts3Int.h tracker-0.15.2/src/libtracker-fts/fts3Int.h --- tracker-0.15.1/src/libtracker-fts/fts3Int.h 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/fts3Int.h 2013-02-14 19:30:47.000000000 +0000 @@ -0,0 +1,560 @@ +/* +** 2009 Nov 12 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +****************************************************************************** +** +*/ +#ifndef _FTSINT_H +#define _FTSINT_H + +#if !defined(NDEBUG) && !defined(SQLITE_DEBUG) +# define NDEBUG 1 +#endif + +/* +** FTS4 is really an extension for FTS3. It is enabled using the +** SQLITE_ENABLE_FTS3 macro. But to avoid confusion we also all +** the SQLITE_ENABLE_FTS4 macro to serve as an alisse for SQLITE_ENABLE_FTS3. +*/ +#if defined(SQLITE_ENABLE_FTS4) && !defined(SQLITE_ENABLE_FTS3) +# define SQLITE_ENABLE_FTS3 +#endif + +#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) + +/* If not building as part of the core, include sqlite3ext.h. */ +#ifndef SQLITE_CORE +# include "sqlite3ext.h" +extern const sqlite3_api_routines *sqlite3_api; +#endif + +#include "sqlite3.h" +#include "fts3_tokenizer.h" +#include "fts3_hash.h" + +/* +** This constant controls how often segments are merged. Once there are +** FTS3_MERGE_COUNT segments of level N, they are merged into a single +** segment of level N+1. +*/ +#define FTS3_MERGE_COUNT 16 + +/* +** This is the maximum amount of data (in bytes) to store in the +** Fts3Table.pendingTerms hash table. Normally, the hash table is +** populated as documents are inserted/updated/deleted in a transaction +** and used to create a new segment when the transaction is committed. +** However if this limit is reached midway through a transaction, a new +** segment is created and the hash table cleared immediately. +*/ +#define FTS3_MAX_PENDING_DATA (1*1024*1024) + +/* +** Macro to return the number of elements in an array. SQLite has a +** similar macro called ArraySize(). Use a different name to avoid +** a collision when building an amalgamation with built-in FTS3. +*/ +#define SizeofArray(X) ((int)(sizeof(X)/sizeof(X[0]))) + + +#ifndef MIN +# define MIN(x,y) ((x)<(y)?(x):(y)) +#endif +#ifndef MAX +# define MAX(x,y) ((x)>(y)?(x):(y)) +#endif + +/* +** Maximum length of a varint encoded integer. The varint format is different +** from that used by SQLite, so the maximum length is 10, not 9. +*/ +#define FTS3_VARINT_MAX 10 + +/* +** FTS4 virtual tables may maintain multiple indexes - one index of all terms +** in the document set and zero or more prefix indexes. All indexes are stored +** as one or more b+-trees in the %_segments and %_segdir tables. +** +** It is possible to determine which index a b+-tree belongs to based on the +** value stored in the "%_segdir.level" column. Given this value L, the index +** that the b+-tree belongs to is (L<<10). In other words, all b+-trees with +** level values between 0 and 1023 (inclusive) belong to index 0, all levels +** between 1024 and 2047 to index 1, and so on. +** +** It is considered impossible for an index to use more than 1024 levels. In +** theory though this may happen, but only after at least +** (FTS3_MERGE_COUNT^1024) separate flushes of the pending-terms tables. +*/ +#define FTS3_SEGDIR_MAXLEVEL 1024 +#define FTS3_SEGDIR_MAXLEVEL_STR "1024" + +/* +** The testcase() macro is only used by the amalgamation. If undefined, +** make it a no-op. +*/ +#ifndef testcase +# define testcase(X) +#endif + +/* +** Terminator values for position-lists and column-lists. +*/ +#define POS_COLUMN (1) /* Column-list terminator */ +#define POS_END (0) /* Position-list terminator */ + +/* +** This section provides definitions to allow the +** FTS3 extension to be compiled outside of the +** amalgamation. +*/ +#ifndef SQLITE_AMALGAMATION +/* +** Macros indicating that conditional expressions are always true or +** false. +*/ +#ifdef SQLITE_COVERAGE_TEST +# define ALWAYS(x) (1) +# define NEVER(X) (0) +#else +# define ALWAYS(x) (x) +# define NEVER(x) (x) +#endif + +/* +** Internal types used by SQLite. +*/ +typedef unsigned char u8; /* 1-byte (or larger) unsigned integer */ +typedef short int i16; /* 2-byte (or larger) signed integer */ +typedef unsigned int u32; /* 4-byte unsigned integer */ +typedef sqlite3_uint64 u64; /* 8-byte unsigned integer */ +typedef sqlite3_int64 i64; /* 8-byte signed integer */ + +/* +** Macro used to suppress compiler warnings for unused parameters. +*/ +#define UNUSED_PARAMETER(x) (void)(x) + +/* +** Activate assert() only if SQLITE_TEST is enabled. +*/ +#if !defined(NDEBUG) && !defined(SQLITE_DEBUG) +# define NDEBUG 1 +#endif + +/* +** The TESTONLY macro is used to enclose variable declarations or +** other bits of code that are needed to support the arguments +** within testcase() and assert() macros. +*/ +#if defined(SQLITE_DEBUG) || defined(SQLITE_COVERAGE_TEST) +# define TESTONLY(X) X +#else +# define TESTONLY(X) +#endif + +#endif /* SQLITE_AMALGAMATION */ + +#ifdef SQLITE_DEBUG +int sqlite3Fts3Corrupt(void); +# define FTS_CORRUPT_VTAB sqlite3Fts3Corrupt() +#else +# define FTS_CORRUPT_VTAB SQLITE_CORRUPT_VTAB +#endif + +typedef struct Fts3Table Fts3Table; +typedef struct Fts3Cursor Fts3Cursor; +typedef struct Fts3Expr Fts3Expr; +typedef struct Fts3Phrase Fts3Phrase; +typedef struct Fts3PhraseToken Fts3PhraseToken; + +typedef struct Fts3Doclist Fts3Doclist; +typedef struct Fts3SegFilter Fts3SegFilter; +typedef struct Fts3DeferredToken Fts3DeferredToken; +typedef struct Fts3SegReader Fts3SegReader; +typedef struct Fts3MultiSegReader Fts3MultiSegReader; + +/* +** A connection to a fulltext index is an instance of the following +** structure. The xCreate and xConnect methods create an instance +** of this structure and xDestroy and xDisconnect free that instance. +** All other methods receive a pointer to the structure as one of their +** arguments. +*/ +struct Fts3Table { + sqlite3_vtab base; /* Base class used by SQLite core */ + sqlite3 *db; /* The database connection */ + const char *zDb; /* logical database name */ + const char *zName; /* virtual table name */ + int nColumn; /* number of named columns in virtual table */ + char **azColumn; /* column names. malloced */ + sqlite3_tokenizer *pTokenizer; /* tokenizer for inserts and queries */ + char *zContentTbl; /* content=xxx option, or NULL */ + char *zLanguageid; /* languageid=xxx option, or NULL */ + u8 bAutoincrmerge; /* True if automerge=1 */ + u32 nLeafAdd; /* Number of leaf blocks added this trans */ + + /* Precompiled statements used by the implementation. Each of these + ** statements is run and reset within a single virtual table API call. + */ + sqlite3_stmt *aStmt[37]; + + char *zReadExprlist; + char *zWriteExprlist; + + int nNodeSize; /* Soft limit for node size */ + u8 bFts4; /* True for FTS4, false for FTS3 */ + u8 bHasStat; /* True if %_stat table exists */ + u8 bHasDocsize; /* True if %_docsize table exists */ + u8 bDescIdx; /* True if doclists are in reverse order */ + u8 bIgnoreSavepoint; /* True to ignore xSavepoint invocations */ + int nPgsz; /* Page size for host database */ + char *zSegmentsTbl; /* Name of %_segments table */ + sqlite3_blob *pSegments; /* Blob handle open on %_segments table */ + + /* + ** The following array of hash tables is used to buffer pending index + ** updates during transactions. All pending updates buffered at any one + ** time must share a common language-id (see the FTS4 langid= feature). + ** The current language id is stored in variable iPrevLangid. + ** + ** A single FTS4 table may have multiple full-text indexes. For each index + ** there is an entry in the aIndex[] array. Index 0 is an index of all the + ** terms that appear in the document set. Each subsequent index in aIndex[] + ** is an index of prefixes of a specific length. + ** + ** Variable nPendingData contains an estimate the memory consumed by the + ** pending data structures, including hash table overhead, but not including + ** malloc overhead. When nPendingData exceeds nMaxPendingData, all hash + ** tables are flushed to disk. Variable iPrevDocid is the docid of the most + ** recently inserted record. + */ + int nIndex; /* Size of aIndex[] */ + struct Fts3Index { + int nPrefix; /* Prefix length (0 for main terms index) */ + Fts3Hash hPending; /* Pending terms table for this index */ + } *aIndex; + int nMaxPendingData; /* Max pending data before flush to disk */ + int nPendingData; /* Current bytes of pending data */ + sqlite_int64 iPrevDocid; /* Docid of most recently inserted document */ + int iPrevLangid; /* Langid of recently inserted document */ + +#if defined(SQLITE_DEBUG) || defined(SQLITE_COVERAGE_TEST) + /* State variables used for validating that the transaction control + ** methods of the virtual table are called at appropriate times. These + ** values do not contribute to FTS functionality; they are used for + ** verifying the operation of the SQLite core. + */ + int inTransaction; /* True after xBegin but before xCommit/xRollback */ + int mxSavepoint; /* Largest valid xSavepoint integer */ +#endif +}; + +/* +** When the core wants to read from the virtual table, it creates a +** virtual table cursor (an instance of the following structure) using +** the xOpen method. Cursors are destroyed using the xClose method. +*/ +struct Fts3Cursor { + sqlite3_vtab_cursor base; /* Base class used by SQLite core */ + i16 eSearch; /* Search strategy (see below) */ + u8 isEof; /* True if at End Of Results */ + u8 isRequireSeek; /* True if must seek pStmt to %_content row */ + sqlite3_stmt *pStmt; /* Prepared statement in use by the cursor */ + Fts3Expr *pExpr; /* Parsed MATCH query string */ + int iLangid; /* Language being queried for */ + int nPhrase; /* Number of matchable phrases in query */ + Fts3DeferredToken *pDeferred; /* Deferred search tokens, if any */ + sqlite3_int64 iPrevId; /* Previous id read from aDoclist */ + char *pNextId; /* Pointer into the body of aDoclist */ + char *aDoclist; /* List of docids for full-text queries */ + int nDoclist; /* Size of buffer at aDoclist */ + u8 bDesc; /* True to sort in descending order */ + int eEvalmode; /* An FTS3_EVAL_XX constant */ + int nRowAvg; /* Average size of database rows, in pages */ + sqlite3_int64 nDoc; /* Documents in table */ + + int isMatchinfoNeeded; /* True when aMatchinfo[] needs filling in */ + u32 *aMatchinfo; /* Information about most recent match */ + int nMatchinfo; /* Number of elements in aMatchinfo[] */ + char *zMatchinfo; /* Matchinfo specification */ +}; + +#define FTS3_EVAL_FILTER 0 +#define FTS3_EVAL_NEXT 1 +#define FTS3_EVAL_MATCHINFO 2 + +/* +** The Fts3Cursor.eSearch member is always set to one of the following. +** Actualy, Fts3Cursor.eSearch can be greater than or equal to +** FTS3_FULLTEXT_SEARCH. If so, then Fts3Cursor.eSearch - 2 is the index +** of the column to be searched. For example, in +** +** CREATE VIRTUAL TABLE ex1 USING fts3(a,b,c,d); +** SELECT docid FROM ex1 WHERE b MATCH 'one two three'; +** +** Because the LHS of the MATCH operator is 2nd column "b", +** Fts3Cursor.eSearch will be set to FTS3_FULLTEXT_SEARCH+1. (+0 for a, +** +1 for b, +2 for c, +3 for d.) If the LHS of MATCH were "ex1" +** indicating that all columns should be searched, +** then eSearch would be set to FTS3_FULLTEXT_SEARCH+4. +*/ +#define FTS3_FULLSCAN_SEARCH 0 /* Linear scan of %_content table */ +#define FTS3_DOCID_SEARCH 1 /* Lookup by rowid on %_content table */ +#define FTS3_FULLTEXT_SEARCH 2 /* Full-text index search */ + + +struct Fts3Doclist { + char *aAll; /* Array containing doclist (or NULL) */ + int nAll; /* Size of a[] in bytes */ + char *pNextDocid; /* Pointer to next docid */ + + sqlite3_int64 iDocid; /* Current docid (if pList!=0) */ + int bFreeList; /* True if pList should be sqlite3_free()d */ + char *pList; /* Pointer to position list following iDocid */ + int nList; /* Length of position list */ +}; + +/* +** A "phrase" is a sequence of one or more tokens that must match in +** sequence. A single token is the base case and the most common case. +** For a sequence of tokens contained in double-quotes (i.e. "one two three") +** nToken will be the number of tokens in the string. +*/ +struct Fts3PhraseToken { + char *z; /* Text of the token */ + int n; /* Number of bytes in buffer z */ + int isPrefix; /* True if token ends with a "*" character */ + int bFirst; /* True if token must appear at position 0 */ + + /* Variables above this point are populated when the expression is + ** parsed (by code in fts3_expr.c). Below this point the variables are + ** used when evaluating the expression. */ + Fts3DeferredToken *pDeferred; /* Deferred token object for this token */ + Fts3MultiSegReader *pSegcsr; /* Segment-reader for this token */ +}; + +struct Fts3Phrase { + /* Cache of doclist for this phrase. */ + Fts3Doclist doclist; + int bIncr; /* True if doclist is loaded incrementally */ + int iDoclistToken; + + /* Variables below this point are populated by fts3_expr.c when parsing + ** a MATCH expression. Everything above is part of the evaluation phase. + */ + int nToken; /* Number of tokens in the phrase */ + int iColumn; /* Index of column this phrase must match */ + Fts3PhraseToken aToken[1]; /* One entry for each token in the phrase */ +}; + +/* +** A tree of these objects forms the RHS of a MATCH operator. +** +** If Fts3Expr.eType is FTSQUERY_PHRASE and isLoaded is true, then aDoclist +** points to a malloced buffer, size nDoclist bytes, containing the results +** of this phrase query in FTS3 doclist format. As usual, the initial +** "Length" field found in doclists stored on disk is omitted from this +** buffer. +** +** Variable aMI is used only for FTSQUERY_NEAR nodes to store the global +** matchinfo data. If it is not NULL, it points to an array of size nCol*3, +** where nCol is the number of columns in the queried FTS table. The array +** is populated as follows: +** +** aMI[iCol*3 + 0] = Undefined +** aMI[iCol*3 + 1] = Number of occurrences +** aMI[iCol*3 + 2] = Number of rows containing at least one instance +** +** The aMI array is allocated using sqlite3_malloc(). It should be freed +** when the expression node is. +*/ +struct Fts3Expr { + int eType; /* One of the FTSQUERY_XXX values defined below */ + int nNear; /* Valid if eType==FTSQUERY_NEAR */ + Fts3Expr *pParent; /* pParent->pLeft==this or pParent->pRight==this */ + Fts3Expr *pLeft; /* Left operand */ + Fts3Expr *pRight; /* Right operand */ + Fts3Phrase *pPhrase; /* Valid if eType==FTSQUERY_PHRASE */ + + /* The following are used by the fts3_eval.c module. */ + sqlite3_int64 iDocid; /* Current docid */ + u8 bEof; /* True this expression is at EOF already */ + u8 bStart; /* True if iDocid is valid */ + u8 bDeferred; /* True if this expression is entirely deferred */ + + u32 *aMI; +}; + +/* +** Candidate values for Fts3Query.eType. Note that the order of the first +** four values is in order of precedence when parsing expressions. For +** example, the following: +** +** "a OR b AND c NOT d NEAR e" +** +** is equivalent to: +** +** "a OR (b AND (c NOT (d NEAR e)))" +*/ +#define FTSQUERY_NEAR 1 +#define FTSQUERY_NOT 2 +#define FTSQUERY_AND 3 +#define FTSQUERY_OR 4 +#define FTSQUERY_PHRASE 5 + + +/* fts3_write.c */ +int sqlite3Fts3UpdateMethod(sqlite3_vtab*,int,sqlite3_value**,sqlite3_int64*); +int sqlite3Fts3PendingTermsFlush(Fts3Table *); +void sqlite3Fts3PendingTermsClear(Fts3Table *); +int sqlite3Fts3Optimize(Fts3Table *); +int sqlite3Fts3SegReaderNew(int, int, sqlite3_int64, + sqlite3_int64, sqlite3_int64, const char *, int, Fts3SegReader**); +int sqlite3Fts3SegReaderPending( + Fts3Table*,int,const char*,int,int,Fts3SegReader**); +void sqlite3Fts3SegReaderFree(Fts3SegReader *); +int sqlite3Fts3AllSegdirs(Fts3Table*, int, int, int, sqlite3_stmt **); +int sqlite3Fts3ReadLock(Fts3Table *); +int sqlite3Fts3ReadBlock(Fts3Table*, sqlite3_int64, char **, int*, int*); + +int sqlite3Fts3SelectDoctotal(Fts3Table *, sqlite3_stmt **); +int sqlite3Fts3SelectDocsize(Fts3Table *, sqlite3_int64, sqlite3_stmt **); + +#ifndef SQLITE_DISABLE_FTS4_DEFERRED +void sqlite3Fts3FreeDeferredTokens(Fts3Cursor *); +int sqlite3Fts3DeferToken(Fts3Cursor *, Fts3PhraseToken *, int); +int sqlite3Fts3CacheDeferredDoclists(Fts3Cursor *); +void sqlite3Fts3FreeDeferredDoclists(Fts3Cursor *); +int sqlite3Fts3DeferredTokenList(Fts3DeferredToken *, char **, int *); +#else +# define sqlite3Fts3FreeDeferredTokens(x) +# define sqlite3Fts3DeferToken(x,y,z) SQLITE_OK +# define sqlite3Fts3CacheDeferredDoclists(x) SQLITE_OK +# define sqlite3Fts3FreeDeferredDoclists(x) +# define sqlite3Fts3DeferredTokenList(x,y,z) SQLITE_OK +#endif + +void sqlite3Fts3SegmentsClose(Fts3Table *); +int sqlite3Fts3MaxLevel(Fts3Table *, int *); + +/* Special values interpreted by sqlite3SegReaderCursor() */ +#define FTS3_SEGCURSOR_PENDING -1 +#define FTS3_SEGCURSOR_ALL -2 + +int sqlite3Fts3SegReaderStart(Fts3Table*, Fts3MultiSegReader*, Fts3SegFilter*); +int sqlite3Fts3SegReaderStep(Fts3Table *, Fts3MultiSegReader *); +void sqlite3Fts3SegReaderFinish(Fts3MultiSegReader *); + +int sqlite3Fts3SegReaderCursor(Fts3Table *, + int, int, int, const char *, int, int, int, Fts3MultiSegReader *); + +/* Flags allowed as part of the 4th argument to SegmentReaderIterate() */ +#define FTS3_SEGMENT_REQUIRE_POS 0x00000001 +#define FTS3_SEGMENT_IGNORE_EMPTY 0x00000002 +#define FTS3_SEGMENT_COLUMN_FILTER 0x00000004 +#define FTS3_SEGMENT_PREFIX 0x00000008 +#define FTS3_SEGMENT_SCAN 0x00000010 +#define FTS3_SEGMENT_FIRST 0x00000020 + +/* Type passed as 4th argument to SegmentReaderIterate() */ +struct Fts3SegFilter { + const char *zTerm; + int nTerm; + int iCol; + int flags; +}; + +struct Fts3MultiSegReader { + /* Used internally by sqlite3Fts3SegReaderXXX() calls */ + Fts3SegReader **apSegment; /* Array of Fts3SegReader objects */ + int nSegment; /* Size of apSegment array */ + int nAdvance; /* How many seg-readers to advance */ + Fts3SegFilter *pFilter; /* Pointer to filter object */ + char *aBuffer; /* Buffer to merge doclists in */ + int nBuffer; /* Allocated size of aBuffer[] in bytes */ + + int iColFilter; /* If >=0, filter for this column */ + int bRestart; + + /* Used by fts3.c only. */ + int nCost; /* Cost of running iterator */ + int bLookup; /* True if a lookup of a single entry. */ + + /* Output values. Valid only after Fts3SegReaderStep() returns SQLITE_ROW. */ + char *zTerm; /* Pointer to term buffer */ + int nTerm; /* Size of zTerm in bytes */ + char *aDoclist; /* Pointer to doclist buffer */ + int nDoclist; /* Size of aDoclist[] in bytes */ +}; + +int sqlite3Fts3Incrmerge(Fts3Table*,int,int); + +/* fts3.c */ +int sqlite3Fts3PutVarint(char *, sqlite3_int64); +int sqlite3Fts3GetVarint(const char *, sqlite_int64 *); +int sqlite3Fts3GetVarint32(const char *, int *); +int sqlite3Fts3VarintLen(sqlite3_uint64); +void sqlite3Fts3Dequote(char *); +void sqlite3Fts3DoclistPrev(int,char*,int,char**,sqlite3_int64*,int*,u8*); +int sqlite3Fts3EvalPhraseStats(Fts3Cursor *, Fts3Expr *, u32 *); +int sqlite3Fts3FirstFilter(sqlite3_int64, char *, int, char *); +void sqlite3Fts3CreateStatTable(int*, Fts3Table*); + +/* fts3_tokenizer.c */ +const char *sqlite3Fts3NextToken(const char *, int *); +int sqlite3Fts3InitHashTable(sqlite3 *, Fts3Hash *, const char *); +int sqlite3Fts3InitTokenizer(Fts3Hash *pHash, const char *, + sqlite3_tokenizer **, char ** +); +int sqlite3Fts3IsIdChar(char); + +/* fts3_snippet.c */ +void sqlite3Fts3Offsets(sqlite3_context*, Fts3Cursor*); +void sqlite3Fts3Snippet(sqlite3_context *, Fts3Cursor *, const char *, + const char *, const char *, int, int +); +void sqlite3Fts3Matchinfo(sqlite3_context *, Fts3Cursor *, const char *); + +/* fts3_expr.c */ +int sqlite3Fts3ExprParse(sqlite3_tokenizer *, int, + char **, int, int, int, const char *, int, Fts3Expr ** +); +void sqlite3Fts3ExprFree(Fts3Expr *); +#ifdef SQLITE_TEST +int sqlite3Fts3ExprInitTestInterface(sqlite3 *db); +int sqlite3Fts3InitTerm(sqlite3 *db); +#endif + +int sqlite3Fts3OpenTokenizer(sqlite3_tokenizer *, int, const char *, int, + sqlite3_tokenizer_cursor ** +); + +/* fts3_aux.c */ +int sqlite3Fts3InitAux(sqlite3 *db); + +void sqlite3Fts3EvalPhraseCleanup(Fts3Phrase *); + +int sqlite3Fts3MsrIncrStart( + Fts3Table*, Fts3MultiSegReader*, int, const char*, int); +int sqlite3Fts3MsrIncrNext( + Fts3Table *, Fts3MultiSegReader *, sqlite3_int64 *, char **, int *); +int sqlite3Fts3EvalPhrasePoslist(Fts3Cursor *, Fts3Expr *, int iCol, char **); +int sqlite3Fts3MsrOvfl(Fts3Cursor *, Fts3MultiSegReader *, int *); +int sqlite3Fts3MsrIncrRestart(Fts3MultiSegReader *pCsr); + +/* fts3_unicode2.c (functions generated by parsing unicode text files) */ +#ifdef SQLITE_ENABLE_FTS4_UNICODE61 +int sqlite3FtsUnicodeFold(int, int); +int sqlite3FtsUnicodeIsalnum(int); +int sqlite3FtsUnicodeIsdiacritic(int); +#endif + +#endif /* !SQLITE_CORE || SQLITE_ENABLE_FTS3 */ +#endif /* _FTSINT_H */ diff -Nru tracker-0.15.1/src/libtracker-fts/fts3_aux.c tracker-0.15.2/src/libtracker-fts/fts3_aux.c --- tracker-0.15.1/src/libtracker-fts/fts3_aux.c 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/fts3_aux.c 2013-02-14 19:30:47.000000000 +0000 @@ -0,0 +1,474 @@ +/* +** 2011 Jan 27 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +****************************************************************************** +** +*/ +#include "fts3Int.h" +#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) + +#include +#include + +typedef struct Fts3auxTable Fts3auxTable; +typedef struct Fts3auxCursor Fts3auxCursor; + +struct Fts3auxTable { + sqlite3_vtab base; /* Base class used by SQLite core */ + Fts3Table *pFts3Tab; +}; + +struct Fts3auxCursor { + sqlite3_vtab_cursor base; /* Base class used by SQLite core */ + Fts3MultiSegReader csr; /* Must be right after "base" */ + Fts3SegFilter filter; + char *zStop; + int nStop; /* Byte-length of string zStop */ + int isEof; /* True if cursor is at EOF */ + sqlite3_int64 iRowid; /* Current rowid */ + + int iCol; /* Current value of 'col' column */ + int nStat; /* Size of aStat[] array */ + struct Fts3auxColstats { + sqlite3_int64 nDoc; /* 'documents' values for current csr row */ + sqlite3_int64 nOcc; /* 'occurrences' values for current csr row */ + } *aStat; +}; + +/* +** Schema of the terms table. +*/ +#define FTS3_TERMS_SCHEMA "CREATE TABLE x(term, col, documents, occurrences)" + +/* +** This function does all the work for both the xConnect and xCreate methods. +** These tables have no persistent representation of their own, so xConnect +** and xCreate are identical operations. +*/ +static int fts3auxConnectMethod( + sqlite3 *db, /* Database connection */ + void *pUnused, /* Unused */ + int argc, /* Number of elements in argv array */ + const char * const *argv, /* xCreate/xConnect argument array */ + sqlite3_vtab **ppVtab, /* OUT: New sqlite3_vtab object */ + char **pzErr /* OUT: sqlite3_malloc'd error message */ +){ + char const *zDb; /* Name of database (e.g. "main") */ + char const *zFts3; /* Name of fts3 table */ + int nDb; /* Result of strlen(zDb) */ + int nFts3; /* Result of strlen(zFts3) */ + int nByte; /* Bytes of space to allocate here */ + int rc; /* value returned by declare_vtab() */ + Fts3auxTable *p; /* Virtual table object to return */ + + UNUSED_PARAMETER(pUnused); + + /* The user should specify a single argument - the name of an fts3 table. */ + if( argc!=4 ){ + *pzErr = sqlite3_mprintf( + "wrong number of arguments to fts4aux constructor" + ); + return SQLITE_ERROR; + } + + zDb = argv[1]; + nDb = (int)strlen(zDb); + zFts3 = argv[3]; + nFts3 = (int)strlen(zFts3); + + rc = sqlite3_declare_vtab(db, FTS3_TERMS_SCHEMA); + if( rc!=SQLITE_OK ) return rc; + + nByte = sizeof(Fts3auxTable) + sizeof(Fts3Table) + nDb + nFts3 + 2; + p = (Fts3auxTable *)sqlite3_malloc(nByte); + if( !p ) return SQLITE_NOMEM; + memset(p, 0, nByte); + + p->pFts3Tab = (Fts3Table *)&p[1]; + p->pFts3Tab->zDb = (char *)&p->pFts3Tab[1]; + p->pFts3Tab->zName = &p->pFts3Tab->zDb[nDb+1]; + p->pFts3Tab->db = db; + p->pFts3Tab->nIndex = 1; + + memcpy((char *)p->pFts3Tab->zDb, zDb, nDb); + memcpy((char *)p->pFts3Tab->zName, zFts3, nFts3); + sqlite3Fts3Dequote((char *)p->pFts3Tab->zName); + + *ppVtab = (sqlite3_vtab *)p; + return SQLITE_OK; +} + +/* +** This function does the work for both the xDisconnect and xDestroy methods. +** These tables have no persistent representation of their own, so xDisconnect +** and xDestroy are identical operations. +*/ +static int fts3auxDisconnectMethod(sqlite3_vtab *pVtab){ + Fts3auxTable *p = (Fts3auxTable *)pVtab; + Fts3Table *pFts3 = p->pFts3Tab; + int i; + + /* Free any prepared statements held */ + for(i=0; iaStmt); i++){ + sqlite3_finalize(pFts3->aStmt[i]); + } + sqlite3_free(pFts3->zSegmentsTbl); + sqlite3_free(p); + return SQLITE_OK; +} + +#define FTS4AUX_EQ_CONSTRAINT 1 +#define FTS4AUX_GE_CONSTRAINT 2 +#define FTS4AUX_LE_CONSTRAINT 4 + +/* +** xBestIndex - Analyze a WHERE and ORDER BY clause. +*/ +static int fts3auxBestIndexMethod( + sqlite3_vtab *pVTab, + sqlite3_index_info *pInfo +){ + int i; + int iEq = -1; + int iGe = -1; + int iLe = -1; + + UNUSED_PARAMETER(pVTab); + + /* This vtab delivers always results in "ORDER BY term ASC" order. */ + if( pInfo->nOrderBy==1 + && pInfo->aOrderBy[0].iColumn==0 + && pInfo->aOrderBy[0].desc==0 + ){ + pInfo->orderByConsumed = 1; + } + + /* Search for equality and range constraints on the "term" column. */ + for(i=0; inConstraint; i++){ + if( pInfo->aConstraint[i].usable && pInfo->aConstraint[i].iColumn==0 ){ + int op = pInfo->aConstraint[i].op; + if( op==SQLITE_INDEX_CONSTRAINT_EQ ) iEq = i; + if( op==SQLITE_INDEX_CONSTRAINT_LT ) iLe = i; + if( op==SQLITE_INDEX_CONSTRAINT_LE ) iLe = i; + if( op==SQLITE_INDEX_CONSTRAINT_GT ) iGe = i; + if( op==SQLITE_INDEX_CONSTRAINT_GE ) iGe = i; + } + } + + if( iEq>=0 ){ + pInfo->idxNum = FTS4AUX_EQ_CONSTRAINT; + pInfo->aConstraintUsage[iEq].argvIndex = 1; + pInfo->estimatedCost = 5; + }else{ + pInfo->idxNum = 0; + pInfo->estimatedCost = 20000; + if( iGe>=0 ){ + pInfo->idxNum += FTS4AUX_GE_CONSTRAINT; + pInfo->aConstraintUsage[iGe].argvIndex = 1; + pInfo->estimatedCost /= 2; + } + if( iLe>=0 ){ + pInfo->idxNum += FTS4AUX_LE_CONSTRAINT; + pInfo->aConstraintUsage[iLe].argvIndex = 1 + (iGe>=0); + pInfo->estimatedCost /= 2; + } + } + + return SQLITE_OK; +} + +/* +** xOpen - Open a cursor. +*/ +static int fts3auxOpenMethod(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCsr){ + Fts3auxCursor *pCsr; /* Pointer to cursor object to return */ + + UNUSED_PARAMETER(pVTab); + + pCsr = (Fts3auxCursor *)sqlite3_malloc(sizeof(Fts3auxCursor)); + if( !pCsr ) return SQLITE_NOMEM; + memset(pCsr, 0, sizeof(Fts3auxCursor)); + + *ppCsr = (sqlite3_vtab_cursor *)pCsr; + return SQLITE_OK; +} + +/* +** xClose - Close a cursor. +*/ +static int fts3auxCloseMethod(sqlite3_vtab_cursor *pCursor){ + Fts3Table *pFts3 = ((Fts3auxTable *)pCursor->pVtab)->pFts3Tab; + Fts3auxCursor *pCsr = (Fts3auxCursor *)pCursor; + + sqlite3Fts3SegmentsClose(pFts3); + sqlite3Fts3SegReaderFinish(&pCsr->csr); + sqlite3_free((void *)pCsr->filter.zTerm); + sqlite3_free(pCsr->zStop); + sqlite3_free(pCsr->aStat); + sqlite3_free(pCsr); + return SQLITE_OK; +} + +static int fts3auxGrowStatArray(Fts3auxCursor *pCsr, int nSize){ + if( nSize>pCsr->nStat ){ + struct Fts3auxColstats *aNew; + aNew = (struct Fts3auxColstats *)sqlite3_realloc(pCsr->aStat, + sizeof(struct Fts3auxColstats) * nSize + ); + if( aNew==0 ) return SQLITE_NOMEM; + memset(&aNew[pCsr->nStat], 0, + sizeof(struct Fts3auxColstats) * (nSize - pCsr->nStat) + ); + pCsr->aStat = aNew; + pCsr->nStat = nSize; + } + return SQLITE_OK; +} + +/* +** xNext - Advance the cursor to the next row, if any. +*/ +static int fts3auxNextMethod(sqlite3_vtab_cursor *pCursor){ + Fts3auxCursor *pCsr = (Fts3auxCursor *)pCursor; + Fts3Table *pFts3 = ((Fts3auxTable *)pCursor->pVtab)->pFts3Tab; + int rc; + + /* Increment our pretend rowid value. */ + pCsr->iRowid++; + + for(pCsr->iCol++; pCsr->iColnStat; pCsr->iCol++){ + if( pCsr->aStat[pCsr->iCol].nDoc>0 ) return SQLITE_OK; + } + + rc = sqlite3Fts3SegReaderStep(pFts3, &pCsr->csr); + if( rc==SQLITE_ROW ){ + int i = 0; + int nDoclist = pCsr->csr.nDoclist; + char *aDoclist = pCsr->csr.aDoclist; + int iCol; + + int eState = 0; + + if( pCsr->zStop ){ + int n = (pCsr->nStopcsr.nTerm) ? pCsr->nStop : pCsr->csr.nTerm; + int mc = memcmp(pCsr->zStop, pCsr->csr.zTerm, n); + if( mc<0 || (mc==0 && pCsr->csr.nTerm>pCsr->nStop) ){ + pCsr->isEof = 1; + return SQLITE_OK; + } + } + + if( fts3auxGrowStatArray(pCsr, 2) ) return SQLITE_NOMEM; + memset(pCsr->aStat, 0, sizeof(struct Fts3auxColstats) * pCsr->nStat); + iCol = 0; + + while( iaStat[0].nDoc++; + eState = 1; + iCol = 0; + break; + + /* State 1. In this state we are expecting either a 1, indicating + ** that the following integer will be a column number, or the + ** start of a position list for column 0. + ** + ** The only difference between state 1 and state 2 is that if the + ** integer encountered in state 1 is not 0 or 1, then we need to + ** increment the column 0 "nDoc" count for this term. + */ + case 1: + assert( iCol==0 ); + if( v>1 ){ + pCsr->aStat[1].nDoc++; + } + eState = 2; + /* fall through */ + + case 2: + if( v==0 ){ /* 0x00. Next integer will be a docid. */ + eState = 0; + }else if( v==1 ){ /* 0x01. Next integer will be a column number. */ + eState = 3; + }else{ /* 2 or greater. A position. */ + pCsr->aStat[iCol+1].nOcc++; + pCsr->aStat[0].nOcc++; + } + break; + + /* State 3. The integer just read is a column number. */ + default: assert( eState==3 ); + iCol = (int)v; + if( fts3auxGrowStatArray(pCsr, iCol+2) ) return SQLITE_NOMEM; + pCsr->aStat[iCol+1].nDoc++; + eState = 2; + break; + } + } + + pCsr->iCol = 0; + rc = SQLITE_OK; + }else{ + pCsr->isEof = 1; + } + return rc; +} + +/* +** xFilter - Initialize a cursor to point at the start of its data. +*/ +static int fts3auxFilterMethod( + sqlite3_vtab_cursor *pCursor, /* The cursor used for this query */ + int idxNum, /* Strategy index */ + const char *idxStr, /* Unused */ + int nVal, /* Number of elements in apVal */ + sqlite3_value **apVal /* Arguments for the indexing scheme */ +){ + Fts3auxCursor *pCsr = (Fts3auxCursor *)pCursor; + Fts3Table *pFts3 = ((Fts3auxTable *)pCursor->pVtab)->pFts3Tab; + int rc; + int isScan; + + UNUSED_PARAMETER(nVal); + UNUSED_PARAMETER(idxStr); + + assert( idxStr==0 ); + assert( idxNum==FTS4AUX_EQ_CONSTRAINT || idxNum==0 + || idxNum==FTS4AUX_LE_CONSTRAINT || idxNum==FTS4AUX_GE_CONSTRAINT + || idxNum==(FTS4AUX_LE_CONSTRAINT|FTS4AUX_GE_CONSTRAINT) + ); + isScan = (idxNum!=FTS4AUX_EQ_CONSTRAINT); + + /* In case this cursor is being reused, close and zero it. */ + testcase(pCsr->filter.zTerm); + sqlite3Fts3SegReaderFinish(&pCsr->csr); + sqlite3_free((void *)pCsr->filter.zTerm); + sqlite3_free(pCsr->aStat); + memset(&pCsr->csr, 0, ((u8*)&pCsr[1]) - (u8*)&pCsr->csr); + + pCsr->filter.flags = FTS3_SEGMENT_REQUIRE_POS|FTS3_SEGMENT_IGNORE_EMPTY; + if( isScan ) pCsr->filter.flags |= FTS3_SEGMENT_SCAN; + + if( idxNum&(FTS4AUX_EQ_CONSTRAINT|FTS4AUX_GE_CONSTRAINT) ){ + const unsigned char *zStr = sqlite3_value_text(apVal[0]); + if( zStr ){ + pCsr->filter.zTerm = sqlite3_mprintf("%s", zStr); + pCsr->filter.nTerm = sqlite3_value_bytes(apVal[0]); + if( pCsr->filter.zTerm==0 ) return SQLITE_NOMEM; + } + } + if( idxNum&FTS4AUX_LE_CONSTRAINT ){ + int iIdx = (idxNum&FTS4AUX_GE_CONSTRAINT) ? 1 : 0; + pCsr->zStop = sqlite3_mprintf("%s", sqlite3_value_text(apVal[iIdx])); + pCsr->nStop = sqlite3_value_bytes(apVal[iIdx]); + if( pCsr->zStop==0 ) return SQLITE_NOMEM; + } + + rc = sqlite3Fts3SegReaderCursor(pFts3, 0, 0, FTS3_SEGCURSOR_ALL, + pCsr->filter.zTerm, pCsr->filter.nTerm, 0, isScan, &pCsr->csr + ); + if( rc==SQLITE_OK ){ + rc = sqlite3Fts3SegReaderStart(pFts3, &pCsr->csr, &pCsr->filter); + } + + if( rc==SQLITE_OK ) rc = fts3auxNextMethod(pCursor); + return rc; +} + +/* +** xEof - Return true if the cursor is at EOF, or false otherwise. +*/ +static int fts3auxEofMethod(sqlite3_vtab_cursor *pCursor){ + Fts3auxCursor *pCsr = (Fts3auxCursor *)pCursor; + return pCsr->isEof; +} + +/* +** xColumn - Return a column value. +*/ +static int fts3auxColumnMethod( + sqlite3_vtab_cursor *pCursor, /* Cursor to retrieve value from */ + sqlite3_context *pContext, /* Context for sqlite3_result_xxx() calls */ + int iCol /* Index of column to read value from */ +){ + Fts3auxCursor *p = (Fts3auxCursor *)pCursor; + + assert( p->isEof==0 ); + if( iCol==0 ){ /* Column "term" */ + sqlite3_result_text(pContext, p->csr.zTerm, p->csr.nTerm, SQLITE_TRANSIENT); + }else if( iCol==1 ){ /* Column "col" */ + if( p->iCol ){ + sqlite3_result_int(pContext, p->iCol-1); + }else{ + sqlite3_result_text(pContext, "*", -1, SQLITE_STATIC); + } + }else if( iCol==2 ){ /* Column "documents" */ + sqlite3_result_int64(pContext, p->aStat[p->iCol].nDoc); + }else{ /* Column "occurrences" */ + sqlite3_result_int64(pContext, p->aStat[p->iCol].nOcc); + } + + return SQLITE_OK; +} + +/* +** xRowid - Return the current rowid for the cursor. +*/ +static int fts3auxRowidMethod( + sqlite3_vtab_cursor *pCursor, /* Cursor to retrieve value from */ + sqlite_int64 *pRowid /* OUT: Rowid value */ +){ + Fts3auxCursor *pCsr = (Fts3auxCursor *)pCursor; + *pRowid = pCsr->iRowid; + return SQLITE_OK; +} + +/* +** Register the fts3aux module with database connection db. Return SQLITE_OK +** if successful or an error code if sqlite3_create_module() fails. +*/ +int sqlite3Fts3InitAux(sqlite3 *db){ + static const sqlite3_module fts3aux_module = { + 0, /* iVersion */ + fts3auxConnectMethod, /* xCreate */ + fts3auxConnectMethod, /* xConnect */ + fts3auxBestIndexMethod, /* xBestIndex */ + fts3auxDisconnectMethod, /* xDisconnect */ + fts3auxDisconnectMethod, /* xDestroy */ + fts3auxOpenMethod, /* xOpen */ + fts3auxCloseMethod, /* xClose */ + fts3auxFilterMethod, /* xFilter */ + fts3auxNextMethod, /* xNext */ + fts3auxEofMethod, /* xEof */ + fts3auxColumnMethod, /* xColumn */ + fts3auxRowidMethod, /* xRowid */ + 0, /* xUpdate */ + 0, /* xBegin */ + 0, /* xSync */ + 0, /* xCommit */ + 0, /* xRollback */ + 0, /* xFindFunction */ + 0, /* xRename */ + 0, /* xSavepoint */ + 0, /* xRelease */ + 0 /* xRollbackTo */ + }; + int rc; /* Return code */ + + rc = sqlite3_create_module(db, "fts4aux", &fts3aux_module, 0); + return rc; +} + +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ diff -Nru tracker-0.15.1/src/libtracker-fts/fts3_expr.c tracker-0.15.2/src/libtracker-fts/fts3_expr.c --- tracker-0.15.1/src/libtracker-fts/fts3_expr.c 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/fts3_expr.c 2013-02-14 19:30:47.000000000 +0000 @@ -0,0 +1,1013 @@ +/* +** 2008 Nov 28 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +****************************************************************************** +** +** This module contains code that implements a parser for fts3 query strings +** (the right-hand argument to the MATCH operator). Because the supported +** syntax is relatively simple, the whole tokenizer/parser system is +** hand-coded. +*/ +#include "fts3Int.h" +#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) + +/* +** By default, this module parses the legacy syntax that has been +** traditionally used by fts3. Or, if SQLITE_ENABLE_FTS3_PARENTHESIS +** is defined, then it uses the new syntax. The differences between +** the new and the old syntaxes are: +** +** a) The new syntax supports parenthesis. The old does not. +** +** b) The new syntax supports the AND and NOT operators. The old does not. +** +** c) The old syntax supports the "-" token qualifier. This is not +** supported by the new syntax (it is replaced by the NOT operator). +** +** d) When using the old syntax, the OR operator has a greater precedence +** than an implicit AND. When using the new, both implicity and explicit +** AND operators have a higher precedence than OR. +** +** If compiled with SQLITE_TEST defined, then this module exports the +** symbol "int sqlite3_fts3_enable_parentheses". Setting this variable +** to zero causes the module to use the old syntax. If it is set to +** non-zero the new syntax is activated. This is so both syntaxes can +** be tested using a single build of testfixture. +** +** The following describes the syntax supported by the fts3 MATCH +** operator in a similar format to that used by the lemon parser +** generator. This module does not use actually lemon, it uses a +** custom parser. +** +** query ::= andexpr (OR andexpr)*. +** +** andexpr ::= notexpr (AND? notexpr)*. +** +** notexpr ::= nearexpr (NOT nearexpr|-TOKEN)*. +** notexpr ::= LP query RP. +** +** nearexpr ::= phrase (NEAR distance_opt nearexpr)*. +** +** distance_opt ::= . +** distance_opt ::= / INTEGER. +** +** phrase ::= TOKEN. +** phrase ::= COLUMN:TOKEN. +** phrase ::= "TOKEN TOKEN TOKEN...". +*/ + +#ifdef SQLITE_TEST +int sqlite3_fts3_enable_parentheses = 0; +#else +# ifdef SQLITE_ENABLE_FTS3_PARENTHESIS +# define sqlite3_fts3_enable_parentheses 1 +# else +# define sqlite3_fts3_enable_parentheses 0 +# endif +#endif + +/* +** Default span for NEAR operators. +*/ +#define SQLITE_FTS3_DEFAULT_NEAR_PARAM 10 + +#include +#include + +/* +** isNot: +** This variable is used by function getNextNode(). When getNextNode() is +** called, it sets ParseContext.isNot to true if the 'next node' is a +** FTSQUERY_PHRASE with a unary "-" attached to it. i.e. "mysql" in the +** FTS3 query "sqlite -mysql". Otherwise, ParseContext.isNot is set to +** zero. +*/ +typedef struct ParseContext ParseContext; +struct ParseContext { + sqlite3_tokenizer *pTokenizer; /* Tokenizer module */ + int iLangid; /* Language id used with tokenizer */ + const char **azCol; /* Array of column names for fts3 table */ + int bFts4; /* True to allow FTS4-only syntax */ + int nCol; /* Number of entries in azCol[] */ + int iDefaultCol; /* Default column to query */ + int isNot; /* True if getNextNode() sees a unary - */ + sqlite3_context *pCtx; /* Write error message here */ + int nNest; /* Number of nested brackets */ +}; + +/* +** This function is equivalent to the standard isspace() function. +** +** The standard isspace() can be awkward to use safely, because although it +** is defined to accept an argument of type int, its behaviour when passed +** an integer that falls outside of the range of the unsigned char type +** is undefined (and sometimes, "undefined" means segfault). This wrapper +** is defined to accept an argument of type char, and always returns 0 for +** any values that fall outside of the range of the unsigned char type (i.e. +** negative values). +*/ +static int fts3isspace(char c){ + return c==' ' || c=='\t' || c=='\n' || c=='\r' || c=='\v' || c=='\f'; +} + +/* +** Allocate nByte bytes of memory using sqlite3_malloc(). If successful, +** zero the memory before returning a pointer to it. If unsuccessful, +** return NULL. +*/ +static void *fts3MallocZero(int nByte){ + void *pRet = sqlite3_malloc(nByte); + if( pRet ) memset(pRet, 0, nByte); + return pRet; +} + +int sqlite3Fts3OpenTokenizer( + sqlite3_tokenizer *pTokenizer, + int iLangid, + const char *z, + int n, + sqlite3_tokenizer_cursor **ppCsr +){ + sqlite3_tokenizer_module const *pModule = pTokenizer->pModule; + sqlite3_tokenizer_cursor *pCsr = 0; + int rc; + + rc = pModule->xOpen(pTokenizer, z, n, &pCsr); + assert( rc==SQLITE_OK || pCsr==0 ); + if( rc==SQLITE_OK ){ + pCsr->pTokenizer = pTokenizer; + if( pModule->iVersion>=1 ){ + rc = pModule->xLanguageid(pCsr, iLangid); + if( rc!=SQLITE_OK ){ + pModule->xClose(pCsr); + pCsr = 0; + } + } + } + *ppCsr = pCsr; + return rc; +} + + +/* +** Extract the next token from buffer z (length n) using the tokenizer +** and other information (column names etc.) in pParse. Create an Fts3Expr +** structure of type FTSQUERY_PHRASE containing a phrase consisting of this +** single token and set *ppExpr to point to it. If the end of the buffer is +** reached before a token is found, set *ppExpr to zero. It is the +** responsibility of the caller to eventually deallocate the allocated +** Fts3Expr structure (if any) by passing it to sqlite3_free(). +** +** Return SQLITE_OK if successful, or SQLITE_NOMEM if a memory allocation +** fails. +*/ +static int getNextToken( + ParseContext *pParse, /* fts3 query parse context */ + int iCol, /* Value for Fts3Phrase.iColumn */ + const char *z, int n, /* Input string */ + Fts3Expr **ppExpr, /* OUT: expression */ + int *pnConsumed /* OUT: Number of bytes consumed */ +){ + sqlite3_tokenizer *pTokenizer = pParse->pTokenizer; + sqlite3_tokenizer_module const *pModule = pTokenizer->pModule; + int rc; + sqlite3_tokenizer_cursor *pCursor; + Fts3Expr *pRet = 0; + int nConsumed = 0; + + rc = sqlite3Fts3OpenTokenizer(pTokenizer, pParse->iLangid, z, n, &pCursor); + if( rc==SQLITE_OK ){ + const char *zToken; + int nToken = 0, iStart = 0, iEnd = 0, iPosition = 0; + int nByte; /* total space to allocate */ + + rc = pModule->xNext(pCursor, &zToken, &nToken, &iStart, &iEnd, &iPosition); + if( rc==SQLITE_OK ){ + nByte = sizeof(Fts3Expr) + sizeof(Fts3Phrase) + nToken; + pRet = (Fts3Expr *)fts3MallocZero(nByte); + if( !pRet ){ + rc = SQLITE_NOMEM; + }else{ + pRet->eType = FTSQUERY_PHRASE; + pRet->pPhrase = (Fts3Phrase *)&pRet[1]; + pRet->pPhrase->nToken = 1; + pRet->pPhrase->iColumn = iCol; + pRet->pPhrase->aToken[0].n = nToken; + pRet->pPhrase->aToken[0].z = (char *)&pRet->pPhrase[1]; + memcpy(pRet->pPhrase->aToken[0].z, zToken, nToken); + + if( iEndpPhrase->aToken[0].isPrefix = 1; + iEnd++; + } + + while( 1 ){ + if( !sqlite3_fts3_enable_parentheses + && iStart>0 && z[iStart-1]=='-' + ){ + pParse->isNot = 1; + iStart--; + }else if( pParse->bFts4 && iStart>0 && z[iStart-1]=='^' ){ + pRet->pPhrase->aToken[0].bFirst = 1; + iStart--; + }else{ + break; + } + } + + } + nConsumed = iEnd; + } + + pModule->xClose(pCursor); + } + + *pnConsumed = nConsumed; + *ppExpr = pRet; + return rc; +} + + +/* +** Enlarge a memory allocation. If an out-of-memory allocation occurs, +** then free the old allocation. +*/ +static void *fts3ReallocOrFree(void *pOrig, int nNew){ + void *pRet = sqlite3_realloc(pOrig, nNew); + if( !pRet ){ + sqlite3_free(pOrig); + } + return pRet; +} + +/* +** Buffer zInput, length nInput, contains the contents of a quoted string +** that appeared as part of an fts3 query expression. Neither quote character +** is included in the buffer. This function attempts to tokenize the entire +** input buffer and create an Fts3Expr structure of type FTSQUERY_PHRASE +** containing the results. +** +** If successful, SQLITE_OK is returned and *ppExpr set to point at the +** allocated Fts3Expr structure. Otherwise, either SQLITE_NOMEM (out of memory +** error) or SQLITE_ERROR (tokenization error) is returned and *ppExpr set +** to 0. +*/ +static int getNextString( + ParseContext *pParse, /* fts3 query parse context */ + const char *zInput, int nInput, /* Input string */ + Fts3Expr **ppExpr /* OUT: expression */ +){ + sqlite3_tokenizer *pTokenizer = pParse->pTokenizer; + sqlite3_tokenizer_module const *pModule = pTokenizer->pModule; + int rc; + Fts3Expr *p = 0; + sqlite3_tokenizer_cursor *pCursor = 0; + char *zTemp = 0; + int nTemp = 0; + + const int nSpace = sizeof(Fts3Expr) + sizeof(Fts3Phrase); + int nToken = 0; + + /* The final Fts3Expr data structure, including the Fts3Phrase, + ** Fts3PhraseToken structures token buffers are all stored as a single + ** allocation so that the expression can be freed with a single call to + ** sqlite3_free(). Setting this up requires a two pass approach. + ** + ** The first pass, in the block below, uses a tokenizer cursor to iterate + ** through the tokens in the expression. This pass uses fts3ReallocOrFree() + ** to assemble data in two dynamic buffers: + ** + ** Buffer p: Points to the Fts3Expr structure, followed by the Fts3Phrase + ** structure, followed by the array of Fts3PhraseToken + ** structures. This pass only populates the Fts3PhraseToken array. + ** + ** Buffer zTemp: Contains copies of all tokens. + ** + ** The second pass, in the block that begins "if( rc==SQLITE_DONE )" below, + ** appends buffer zTemp to buffer p, and fills in the Fts3Expr and Fts3Phrase + ** structures. + */ + rc = sqlite3Fts3OpenTokenizer( + pTokenizer, pParse->iLangid, zInput, nInput, &pCursor); + if( rc==SQLITE_OK ){ + int ii; + for(ii=0; rc==SQLITE_OK; ii++){ + const char *zByte; + int nByte = 0, iBegin = 0, iEnd = 0, iPos = 0; + rc = pModule->xNext(pCursor, &zByte, &nByte, &iBegin, &iEnd, &iPos); + if( rc==SQLITE_OK ){ + Fts3PhraseToken *pToken; + + p = fts3ReallocOrFree(p, nSpace + ii*sizeof(Fts3PhraseToken)); + if( !p ) goto no_mem; + + zTemp = fts3ReallocOrFree(zTemp, nTemp + nByte); + if( !zTemp ) goto no_mem; + + assert( nToken==ii ); + pToken = &((Fts3Phrase *)(&p[1]))->aToken[ii]; + memset(pToken, 0, sizeof(Fts3PhraseToken)); + + memcpy(&zTemp[nTemp], zByte, nByte); + nTemp += nByte; + + pToken->n = nByte; + pToken->isPrefix = (iEndbFirst = (iBegin>0 && zInput[iBegin-1]=='^'); + nToken = ii+1; + } + } + + pModule->xClose(pCursor); + pCursor = 0; + } + + if( rc==SQLITE_DONE ){ + int jj; + char *zBuf = 0; + + p = fts3ReallocOrFree(p, nSpace + nToken*sizeof(Fts3PhraseToken) + nTemp); + if( !p ) goto no_mem; + memset(p, 0, (char *)&(((Fts3Phrase *)&p[1])->aToken[0])-(char *)p); + p->eType = FTSQUERY_PHRASE; + p->pPhrase = (Fts3Phrase *)&p[1]; + p->pPhrase->iColumn = pParse->iDefaultCol; + p->pPhrase->nToken = nToken; + + zBuf = (char *)&p->pPhrase->aToken[nToken]; + if( zTemp ){ + memcpy(zBuf, zTemp, nTemp); + sqlite3_free(zTemp); + }else{ + assert( nTemp==0 ); + } + + for(jj=0; jjpPhrase->nToken; jj++){ + p->pPhrase->aToken[jj].z = zBuf; + zBuf += p->pPhrase->aToken[jj].n; + } + rc = SQLITE_OK; + } + + *ppExpr = p; + return rc; +no_mem: + + if( pCursor ){ + pModule->xClose(pCursor); + } + sqlite3_free(zTemp); + sqlite3_free(p); + *ppExpr = 0; + return SQLITE_NOMEM; +} + +/* +** Function getNextNode(), which is called by fts3ExprParse(), may itself +** call fts3ExprParse(). So this forward declaration is required. +*/ +static int fts3ExprParse(ParseContext *, const char *, int, Fts3Expr **, int *); + +/* +** The output variable *ppExpr is populated with an allocated Fts3Expr +** structure, or set to 0 if the end of the input buffer is reached. +** +** Returns an SQLite error code. SQLITE_OK if everything works, SQLITE_NOMEM +** if a malloc failure occurs, or SQLITE_ERROR if a parse error is encountered. +** If SQLITE_ERROR is returned, pContext is populated with an error message. +*/ +static int getNextNode( + ParseContext *pParse, /* fts3 query parse context */ + const char *z, int n, /* Input string */ + Fts3Expr **ppExpr, /* OUT: expression */ + int *pnConsumed /* OUT: Number of bytes consumed */ +){ + static const struct Fts3Keyword { + char *z; /* Keyword text */ + unsigned char n; /* Length of the keyword */ + unsigned char parenOnly; /* Only valid in paren mode */ + unsigned char eType; /* Keyword code */ + } aKeyword[] = { + { "OR" , 2, 0, FTSQUERY_OR }, + { "AND", 3, 1, FTSQUERY_AND }, + { "NOT", 3, 1, FTSQUERY_NOT }, + { "NEAR", 4, 0, FTSQUERY_NEAR } + }; + int ii; + int iCol; + int iColLen; + int rc; + Fts3Expr *pRet = 0; + + const char *zInput = z; + int nInput = n; + + pParse->isNot = 0; + + /* Skip over any whitespace before checking for a keyword, an open or + ** close bracket, or a quoted string. + */ + while( nInput>0 && fts3isspace(*zInput) ){ + nInput--; + zInput++; + } + if( nInput==0 ){ + return SQLITE_DONE; + } + + /* See if we are dealing with a keyword. */ + for(ii=0; ii<(int)(sizeof(aKeyword)/sizeof(struct Fts3Keyword)); ii++){ + const struct Fts3Keyword *pKey = &aKeyword[ii]; + + if( (pKey->parenOnly & ~sqlite3_fts3_enable_parentheses)!=0 ){ + continue; + } + + if( nInput>=pKey->n && 0==memcmp(zInput, pKey->z, pKey->n) ){ + int nNear = SQLITE_FTS3_DEFAULT_NEAR_PARAM; + int nKey = pKey->n; + char cNext; + + /* If this is a "NEAR" keyword, check for an explicit nearness. */ + if( pKey->eType==FTSQUERY_NEAR ){ + assert( nKey==4 ); + if( zInput[4]=='/' && zInput[5]>='0' && zInput[5]<='9' ){ + nNear = 0; + for(nKey=5; zInput[nKey]>='0' && zInput[nKey]<='9'; nKey++){ + nNear = nNear * 10 + (zInput[nKey] - '0'); + } + } + } + + /* At this point this is probably a keyword. But for that to be true, + ** the next byte must contain either whitespace, an open or close + ** parenthesis, a quote character, or EOF. + */ + cNext = zInput[nKey]; + if( fts3isspace(cNext) + || cNext=='"' || cNext=='(' || cNext==')' || cNext==0 + ){ + pRet = (Fts3Expr *)fts3MallocZero(sizeof(Fts3Expr)); + if( !pRet ){ + return SQLITE_NOMEM; + } + pRet->eType = pKey->eType; + pRet->nNear = nNear; + *ppExpr = pRet; + *pnConsumed = (int)((zInput - z) + nKey); + return SQLITE_OK; + } + + /* Turns out that wasn't a keyword after all. This happens if the + ** user has supplied a token such as "ORacle". Continue. + */ + } + } + + /* Check for an open bracket. */ + if( sqlite3_fts3_enable_parentheses ){ + if( *zInput=='(' ){ + int nConsumed; + pParse->nNest++; + rc = fts3ExprParse(pParse, &zInput[1], nInput-1, ppExpr, &nConsumed); + if( rc==SQLITE_OK && !*ppExpr ){ + rc = SQLITE_DONE; + } + *pnConsumed = (int)((zInput - z) + 1 + nConsumed); + return rc; + } + + /* Check for a close bracket. */ + if( *zInput==')' ){ + pParse->nNest--; + *pnConsumed = (int)((zInput - z) + 1); + return SQLITE_DONE; + } + } + + /* See if we are dealing with a quoted phrase. If this is the case, then + ** search for the closing quote and pass the whole string to getNextString() + ** for processing. This is easy to do, as fts3 has no syntax for escaping + ** a quote character embedded in a string. + */ + if( *zInput=='"' ){ + for(ii=1; iiiDefaultCol; + iColLen = 0; + for(ii=0; iinCol; ii++){ + const char *zStr = pParse->azCol[ii]; + int nStr = (int)strlen(zStr); + if( nInput>nStr && zInput[nStr]==':' + && sqlite3_strnicmp(zStr, zInput, nStr)==0 + ){ + iCol = ii; + iColLen = (int)((zInput - z) + nStr + 1); + break; + } + } + rc = getNextToken(pParse, iCol, &z[iColLen], n-iColLen, ppExpr, pnConsumed); + *pnConsumed += iColLen; + return rc; +} + +/* +** The argument is an Fts3Expr structure for a binary operator (any type +** except an FTSQUERY_PHRASE). Return an integer value representing the +** precedence of the operator. Lower values have a higher precedence (i.e. +** group more tightly). For example, in the C language, the == operator +** groups more tightly than ||, and would therefore have a higher precedence. +** +** When using the new fts3 query syntax (when SQLITE_ENABLE_FTS3_PARENTHESIS +** is defined), the order of the operators in precedence from highest to +** lowest is: +** +** NEAR +** NOT +** AND (including implicit ANDs) +** OR +** +** Note that when using the old query syntax, the OR operator has a higher +** precedence than the AND operator. +*/ +static int opPrecedence(Fts3Expr *p){ + assert( p->eType!=FTSQUERY_PHRASE ); + if( sqlite3_fts3_enable_parentheses ){ + return p->eType; + }else if( p->eType==FTSQUERY_NEAR ){ + return 1; + }else if( p->eType==FTSQUERY_OR ){ + return 2; + } + assert( p->eType==FTSQUERY_AND ); + return 3; +} + +/* +** Argument ppHead contains a pointer to the current head of a query +** expression tree being parsed. pPrev is the expression node most recently +** inserted into the tree. This function adds pNew, which is always a binary +** operator node, into the expression tree based on the relative precedence +** of pNew and the existing nodes of the tree. This may result in the head +** of the tree changing, in which case *ppHead is set to the new root node. +*/ +static void insertBinaryOperator( + Fts3Expr **ppHead, /* Pointer to the root node of a tree */ + Fts3Expr *pPrev, /* Node most recently inserted into the tree */ + Fts3Expr *pNew /* New binary node to insert into expression tree */ +){ + Fts3Expr *pSplit = pPrev; + while( pSplit->pParent && opPrecedence(pSplit->pParent)<=opPrecedence(pNew) ){ + pSplit = pSplit->pParent; + } + + if( pSplit->pParent ){ + assert( pSplit->pParent->pRight==pSplit ); + pSplit->pParent->pRight = pNew; + pNew->pParent = pSplit->pParent; + }else{ + *ppHead = pNew; + } + pNew->pLeft = pSplit; + pSplit->pParent = pNew; +} + +/* +** Parse the fts3 query expression found in buffer z, length n. This function +** returns either when the end of the buffer is reached or an unmatched +** closing bracket - ')' - is encountered. +** +** If successful, SQLITE_OK is returned, *ppExpr is set to point to the +** parsed form of the expression and *pnConsumed is set to the number of +** bytes read from buffer z. Otherwise, *ppExpr is set to 0 and SQLITE_NOMEM +** (out of memory error) or SQLITE_ERROR (parse error) is returned. +*/ +static int fts3ExprParse( + ParseContext *pParse, /* fts3 query parse context */ + const char *z, int n, /* Text of MATCH query */ + Fts3Expr **ppExpr, /* OUT: Parsed query structure */ + int *pnConsumed /* OUT: Number of bytes consumed */ +){ + Fts3Expr *pRet = 0; + Fts3Expr *pPrev = 0; + Fts3Expr *pNotBranch = 0; /* Only used in legacy parse mode */ + int nIn = n; + const char *zIn = z; + int rc = SQLITE_OK; + int isRequirePhrase = 1; + + while( rc==SQLITE_OK ){ + Fts3Expr *p = 0; + int nByte = 0; + rc = getNextNode(pParse, zIn, nIn, &p, &nByte); + if( rc==SQLITE_OK ){ + int isPhrase; + + if( !sqlite3_fts3_enable_parentheses + && p->eType==FTSQUERY_PHRASE && pParse->isNot + ){ + /* Create an implicit NOT operator. */ + Fts3Expr *pNot = fts3MallocZero(sizeof(Fts3Expr)); + if( !pNot ){ + sqlite3Fts3ExprFree(p); + rc = SQLITE_NOMEM; + goto exprparse_out; + } + pNot->eType = FTSQUERY_NOT; + pNot->pRight = p; + if( pNotBranch ){ + pNot->pLeft = pNotBranch; + } + pNotBranch = pNot; + p = pPrev; + }else{ + int eType = p->eType; + isPhrase = (eType==FTSQUERY_PHRASE || p->pLeft); + + /* The isRequirePhrase variable is set to true if a phrase or + ** an expression contained in parenthesis is required. If a + ** binary operator (AND, OR, NOT or NEAR) is encounted when + ** isRequirePhrase is set, this is a syntax error. + */ + if( !isPhrase && isRequirePhrase ){ + sqlite3Fts3ExprFree(p); + rc = SQLITE_ERROR; + goto exprparse_out; + } + + if( isPhrase && !isRequirePhrase ){ + /* Insert an implicit AND operator. */ + Fts3Expr *pAnd; + assert( pRet && pPrev ); + pAnd = fts3MallocZero(sizeof(Fts3Expr)); + if( !pAnd ){ + sqlite3Fts3ExprFree(p); + rc = SQLITE_NOMEM; + goto exprparse_out; + } + pAnd->eType = FTSQUERY_AND; + insertBinaryOperator(&pRet, pPrev, pAnd); + pPrev = pAnd; + } + + /* This test catches attempts to make either operand of a NEAR + ** operator something other than a phrase. For example, either of + ** the following: + ** + ** (bracketed expression) NEAR phrase + ** phrase NEAR (bracketed expression) + ** + ** Return an error in either case. + */ + if( pPrev && ( + (eType==FTSQUERY_NEAR && !isPhrase && pPrev->eType!=FTSQUERY_PHRASE) + || (eType!=FTSQUERY_PHRASE && isPhrase && pPrev->eType==FTSQUERY_NEAR) + )){ + sqlite3Fts3ExprFree(p); + rc = SQLITE_ERROR; + goto exprparse_out; + } + + if( isPhrase ){ + if( pRet ){ + assert( pPrev && pPrev->pLeft && pPrev->pRight==0 ); + pPrev->pRight = p; + p->pParent = pPrev; + }else{ + pRet = p; + } + }else{ + insertBinaryOperator(&pRet, pPrev, p); + } + isRequirePhrase = !isPhrase; + } + assert( nByte>0 ); + } + assert( rc!=SQLITE_OK || (nByte>0 && nByte<=nIn) ); + nIn -= nByte; + zIn += nByte; + pPrev = p; + } + + if( rc==SQLITE_DONE && pRet && isRequirePhrase ){ + rc = SQLITE_ERROR; + } + + if( rc==SQLITE_DONE ){ + rc = SQLITE_OK; + if( !sqlite3_fts3_enable_parentheses && pNotBranch ){ + if( !pRet ){ + rc = SQLITE_ERROR; + }else{ + Fts3Expr *pIter = pNotBranch; + while( pIter->pLeft ){ + pIter = pIter->pLeft; + } + pIter->pLeft = pRet; + pRet = pNotBranch; + } + } + } + *pnConsumed = n - nIn; + +exprparse_out: + if( rc!=SQLITE_OK ){ + sqlite3Fts3ExprFree(pRet); + sqlite3Fts3ExprFree(pNotBranch); + pRet = 0; + } + *ppExpr = pRet; + return rc; +} + +/* +** Parameters z and n contain a pointer to and length of a buffer containing +** an fts3 query expression, respectively. This function attempts to parse the +** query expression and create a tree of Fts3Expr structures representing the +** parsed expression. If successful, *ppExpr is set to point to the head +** of the parsed expression tree and SQLITE_OK is returned. If an error +** occurs, either SQLITE_NOMEM (out-of-memory error) or SQLITE_ERROR (parse +** error) is returned and *ppExpr is set to 0. +** +** If parameter n is a negative number, then z is assumed to point to a +** nul-terminated string and the length is determined using strlen(). +** +** The first parameter, pTokenizer, is passed the fts3 tokenizer module to +** use to normalize query tokens while parsing the expression. The azCol[] +** array, which is assumed to contain nCol entries, should contain the names +** of each column in the target fts3 table, in order from left to right. +** Column names must be nul-terminated strings. +** +** The iDefaultCol parameter should be passed the index of the table column +** that appears on the left-hand-side of the MATCH operator (the default +** column to match against for tokens for which a column name is not explicitly +** specified as part of the query string), or -1 if tokens may by default +** match any table column. +*/ +int sqlite3Fts3ExprParse( + sqlite3_tokenizer *pTokenizer, /* Tokenizer module */ + int iLangid, /* Language id for tokenizer */ + char **azCol, /* Array of column names for fts3 table */ + int bFts4, /* True to allow FTS4-only syntax */ + int nCol, /* Number of entries in azCol[] */ + int iDefaultCol, /* Default column to query */ + const char *z, int n, /* Text of MATCH query */ + Fts3Expr **ppExpr /* OUT: Parsed query structure */ +){ + int nParsed; + int rc; + ParseContext sParse; + + memset(&sParse, 0, sizeof(ParseContext)); + sParse.pTokenizer = pTokenizer; + sParse.iLangid = iLangid; + sParse.azCol = (const char **)azCol; + sParse.nCol = nCol; + sParse.iDefaultCol = iDefaultCol; + sParse.bFts4 = bFts4; + if( z==0 ){ + *ppExpr = 0; + return SQLITE_OK; + } + if( n<0 ){ + n = (int)strlen(z); + } + rc = fts3ExprParse(&sParse, z, n, ppExpr, &nParsed); + + /* Check for mismatched parenthesis */ + if( rc==SQLITE_OK && sParse.nNest ){ + rc = SQLITE_ERROR; + sqlite3Fts3ExprFree(*ppExpr); + *ppExpr = 0; + } + + return rc; +} + +/* +** Free a parsed fts3 query expression allocated by sqlite3Fts3ExprParse(). +*/ +void sqlite3Fts3ExprFree(Fts3Expr *p){ + if( p ){ + assert( p->eType==FTSQUERY_PHRASE || p->pPhrase==0 ); + sqlite3Fts3ExprFree(p->pLeft); + sqlite3Fts3ExprFree(p->pRight); + sqlite3Fts3EvalPhraseCleanup(p->pPhrase); + sqlite3_free(p->aMI); + sqlite3_free(p); + } +} + +/**************************************************************************** +***************************************************************************** +** Everything after this point is just test code. +*/ + +#ifdef SQLITE_TEST + +#include + +/* +** Function to query the hash-table of tokenizers (see README.tokenizers). +*/ +static int queryTestTokenizer( + sqlite3 *db, + const char *zName, + const sqlite3_tokenizer_module **pp +){ + int rc; + sqlite3_stmt *pStmt; + const char zSql[] = "SELECT fts3_tokenizer(?)"; + + *pp = 0; + rc = sqlite3_prepare_v2(db, zSql, -1, &pStmt, 0); + if( rc!=SQLITE_OK ){ + return rc; + } + + sqlite3_bind_text(pStmt, 1, zName, -1, SQLITE_STATIC); + if( SQLITE_ROW==sqlite3_step(pStmt) ){ + if( sqlite3_column_type(pStmt, 0)==SQLITE_BLOB ){ + memcpy((void *)pp, sqlite3_column_blob(pStmt, 0), sizeof(*pp)); + } + } + + return sqlite3_finalize(pStmt); +} + +/* +** Return a pointer to a buffer containing a text representation of the +** expression passed as the first argument. The buffer is obtained from +** sqlite3_malloc(). It is the responsibility of the caller to use +** sqlite3_free() to release the memory. If an OOM condition is encountered, +** NULL is returned. +** +** If the second argument is not NULL, then its contents are prepended to +** the returned expression text and then freed using sqlite3_free(). +*/ +static char *exprToString(Fts3Expr *pExpr, char *zBuf){ + switch( pExpr->eType ){ + case FTSQUERY_PHRASE: { + Fts3Phrase *pPhrase = pExpr->pPhrase; + int i; + zBuf = sqlite3_mprintf( + "%zPHRASE %d 0", zBuf, pPhrase->iColumn); + for(i=0; zBuf && inToken; i++){ + zBuf = sqlite3_mprintf("%z %.*s%s", zBuf, + pPhrase->aToken[i].n, pPhrase->aToken[i].z, + (pPhrase->aToken[i].isPrefix?"+":"") + ); + } + return zBuf; + } + + case FTSQUERY_NEAR: + zBuf = sqlite3_mprintf("%zNEAR/%d ", zBuf, pExpr->nNear); + break; + case FTSQUERY_NOT: + zBuf = sqlite3_mprintf("%zNOT ", zBuf); + break; + case FTSQUERY_AND: + zBuf = sqlite3_mprintf("%zAND ", zBuf); + break; + case FTSQUERY_OR: + zBuf = sqlite3_mprintf("%zOR ", zBuf); + break; + } + + if( zBuf ) zBuf = sqlite3_mprintf("%z{", zBuf); + if( zBuf ) zBuf = exprToString(pExpr->pLeft, zBuf); + if( zBuf ) zBuf = sqlite3_mprintf("%z} {", zBuf); + + if( zBuf ) zBuf = exprToString(pExpr->pRight, zBuf); + if( zBuf ) zBuf = sqlite3_mprintf("%z}", zBuf); + + return zBuf; +} + +/* +** This is the implementation of a scalar SQL function used to test the +** expression parser. It should be called as follows: +** +** fts3_exprtest(, , , ...); +** +** The first argument, , is the name of the fts3 tokenizer used +** to parse the query expression (see README.tokenizers). The second argument +** is the query expression to parse. Each subsequent argument is the name +** of a column of the fts3 table that the query expression may refer to. +** For example: +** +** SELECT fts3_exprtest('simple', 'Bill col2:Bloggs', 'col1', 'col2'); +*/ +static void fts3ExprTest( + sqlite3_context *context, + int argc, + sqlite3_value **argv +){ + sqlite3_tokenizer_module const *pModule = 0; + sqlite3_tokenizer *pTokenizer = 0; + int rc; + char **azCol = 0; + const char *zExpr; + int nExpr; + int nCol; + int ii; + Fts3Expr *pExpr; + char *zBuf = 0; + sqlite3 *db = sqlite3_context_db_handle(context); + + if( argc<3 ){ + sqlite3_result_error(context, + "Usage: fts3_exprtest(tokenizer, expr, col1, ...", -1 + ); + return; + } + + rc = queryTestTokenizer(db, + (const char *)sqlite3_value_text(argv[0]), &pModule); + if( rc==SQLITE_NOMEM ){ + sqlite3_result_error_nomem(context); + goto exprtest_out; + }else if( !pModule ){ + sqlite3_result_error(context, "No such tokenizer module", -1); + goto exprtest_out; + } + + rc = pModule->xCreate(0, 0, &pTokenizer); + assert( rc==SQLITE_NOMEM || rc==SQLITE_OK ); + if( rc==SQLITE_NOMEM ){ + sqlite3_result_error_nomem(context); + goto exprtest_out; + } + pTokenizer->pModule = pModule; + + zExpr = (const char *)sqlite3_value_text(argv[1]); + nExpr = sqlite3_value_bytes(argv[1]); + nCol = argc-2; + azCol = (char **)sqlite3_malloc(nCol*sizeof(char *)); + if( !azCol ){ + sqlite3_result_error_nomem(context); + goto exprtest_out; + } + for(ii=0; iixDestroy(pTokenizer); + } + sqlite3_free(azCol); +} + +/* +** Register the query expression parser test function fts3_exprtest() +** with database connection db. +*/ +int sqlite3Fts3ExprInitTestInterface(sqlite3* db){ + return sqlite3_create_function( + db, "fts3_exprtest", -1, SQLITE_UTF8, 0, fts3ExprTest, 0, 0 + ); +} + +#endif +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ diff -Nru tracker-0.15.1/src/libtracker-fts/fts3_hash.c tracker-0.15.2/src/libtracker-fts/fts3_hash.c --- tracker-0.15.1/src/libtracker-fts/fts3_hash.c 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/fts3_hash.c 2013-02-14 19:30:47.000000000 +0000 @@ -0,0 +1,383 @@ +/* +** 2001 September 22 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +************************************************************************* +** This is the implementation of generic hash-tables used in SQLite. +** We've modified it slightly to serve as a standalone hash table +** implementation for the full-text indexing module. +*/ + +/* +** The code in this file is only compiled if: +** +** * The FTS3 module is being built as an extension +** (in which case SQLITE_CORE is not defined), or +** +** * The FTS3 module is being built into the core of +** SQLite (in which case SQLITE_ENABLE_FTS3 is defined). +*/ +#include "fts3Int.h" +#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) + +#include +#include +#include + +#include "fts3_hash.h" + +/* +** Malloc and Free functions +*/ +static void *fts3HashMalloc(int n){ + void *p = sqlite3_malloc(n); + if( p ){ + memset(p, 0, n); + } + return p; +} +static void fts3HashFree(void *p){ + sqlite3_free(p); +} + +/* Turn bulk memory into a hash table object by initializing the +** fields of the Hash structure. +** +** "pNew" is a pointer to the hash table that is to be initialized. +** keyClass is one of the constants +** FTS3_HASH_BINARY or FTS3_HASH_STRING. The value of keyClass +** determines what kind of key the hash table will use. "copyKey" is +** true if the hash table should make its own private copy of keys and +** false if it should just use the supplied pointer. +*/ +void sqlite3Fts3HashInit(Fts3Hash *pNew, char keyClass, char copyKey){ + assert( pNew!=0 ); + assert( keyClass>=FTS3_HASH_STRING && keyClass<=FTS3_HASH_BINARY ); + pNew->keyClass = keyClass; + pNew->copyKey = copyKey; + pNew->first = 0; + pNew->count = 0; + pNew->htsize = 0; + pNew->ht = 0; +} + +/* Remove all entries from a hash table. Reclaim all memory. +** Call this routine to delete a hash table or to reset a hash table +** to the empty state. +*/ +void sqlite3Fts3HashClear(Fts3Hash *pH){ + Fts3HashElem *elem; /* For looping over all elements of the table */ + + assert( pH!=0 ); + elem = pH->first; + pH->first = 0; + fts3HashFree(pH->ht); + pH->ht = 0; + pH->htsize = 0; + while( elem ){ + Fts3HashElem *next_elem = elem->next; + if( pH->copyKey && elem->pKey ){ + fts3HashFree(elem->pKey); + } + fts3HashFree(elem); + elem = next_elem; + } + pH->count = 0; +} + +/* +** Hash and comparison functions when the mode is FTS3_HASH_STRING +*/ +static int fts3StrHash(const void *pKey, int nKey){ + const char *z = (const char *)pKey; + int h = 0; + if( nKey<=0 ) nKey = (int) strlen(z); + while( nKey > 0 ){ + h = (h<<3) ^ h ^ *z++; + nKey--; + } + return h & 0x7fffffff; +} +static int fts3StrCompare(const void *pKey1, int n1, const void *pKey2, int n2){ + if( n1!=n2 ) return 1; + return strncmp((const char*)pKey1,(const char*)pKey2,n1); +} + +/* +** Hash and comparison functions when the mode is FTS3_HASH_BINARY +*/ +static int fts3BinHash(const void *pKey, int nKey){ + int h = 0; + const char *z = (const char *)pKey; + while( nKey-- > 0 ){ + h = (h<<3) ^ h ^ *(z++); + } + return h & 0x7fffffff; +} +static int fts3BinCompare(const void *pKey1, int n1, const void *pKey2, int n2){ + if( n1!=n2 ) return 1; + return memcmp(pKey1,pKey2,n1); +} + +/* +** Return a pointer to the appropriate hash function given the key class. +** +** The C syntax in this function definition may be unfamilar to some +** programmers, so we provide the following additional explanation: +** +** The name of the function is "ftsHashFunction". The function takes a +** single parameter "keyClass". The return value of ftsHashFunction() +** is a pointer to another function. Specifically, the return value +** of ftsHashFunction() is a pointer to a function that takes two parameters +** with types "const void*" and "int" and returns an "int". +*/ +static int (*ftsHashFunction(int keyClass))(const void*,int){ + if( keyClass==FTS3_HASH_STRING ){ + return &fts3StrHash; + }else{ + assert( keyClass==FTS3_HASH_BINARY ); + return &fts3BinHash; + } +} + +/* +** Return a pointer to the appropriate hash function given the key class. +** +** For help in interpreted the obscure C code in the function definition, +** see the header comment on the previous function. +*/ +static int (*ftsCompareFunction(int keyClass))(const void*,int,const void*,int){ + if( keyClass==FTS3_HASH_STRING ){ + return &fts3StrCompare; + }else{ + assert( keyClass==FTS3_HASH_BINARY ); + return &fts3BinCompare; + } +} + +/* Link an element into the hash table +*/ +static void fts3HashInsertElement( + Fts3Hash *pH, /* The complete hash table */ + struct _fts3ht *pEntry, /* The entry into which pNew is inserted */ + Fts3HashElem *pNew /* The element to be inserted */ +){ + Fts3HashElem *pHead; /* First element already in pEntry */ + pHead = pEntry->chain; + if( pHead ){ + pNew->next = pHead; + pNew->prev = pHead->prev; + if( pHead->prev ){ pHead->prev->next = pNew; } + else { pH->first = pNew; } + pHead->prev = pNew; + }else{ + pNew->next = pH->first; + if( pH->first ){ pH->first->prev = pNew; } + pNew->prev = 0; + pH->first = pNew; + } + pEntry->count++; + pEntry->chain = pNew; +} + + +/* Resize the hash table so that it cantains "new_size" buckets. +** "new_size" must be a power of 2. The hash table might fail +** to resize if sqliteMalloc() fails. +** +** Return non-zero if a memory allocation error occurs. +*/ +static int fts3Rehash(Fts3Hash *pH, int new_size){ + struct _fts3ht *new_ht; /* The new hash table */ + Fts3HashElem *elem, *next_elem; /* For looping over existing elements */ + int (*xHash)(const void*,int); /* The hash function */ + + assert( (new_size & (new_size-1))==0 ); + new_ht = (struct _fts3ht *)fts3HashMalloc( new_size*sizeof(struct _fts3ht) ); + if( new_ht==0 ) return 1; + fts3HashFree(pH->ht); + pH->ht = new_ht; + pH->htsize = new_size; + xHash = ftsHashFunction(pH->keyClass); + for(elem=pH->first, pH->first=0; elem; elem = next_elem){ + int h = (*xHash)(elem->pKey, elem->nKey) & (new_size-1); + next_elem = elem->next; + fts3HashInsertElement(pH, &new_ht[h], elem); + } + return 0; +} + +/* This function (for internal use only) locates an element in an +** hash table that matches the given key. The hash for this key has +** already been computed and is passed as the 4th parameter. +*/ +static Fts3HashElem *fts3FindElementByHash( + const Fts3Hash *pH, /* The pH to be searched */ + const void *pKey, /* The key we are searching for */ + int nKey, + int h /* The hash for this key. */ +){ + Fts3HashElem *elem; /* Used to loop thru the element list */ + int count; /* Number of elements left to test */ + int (*xCompare)(const void*,int,const void*,int); /* comparison function */ + + if( pH->ht ){ + struct _fts3ht *pEntry = &pH->ht[h]; + elem = pEntry->chain; + count = pEntry->count; + xCompare = ftsCompareFunction(pH->keyClass); + while( count-- && elem ){ + if( (*xCompare)(elem->pKey,elem->nKey,pKey,nKey)==0 ){ + return elem; + } + elem = elem->next; + } + } + return 0; +} + +/* Remove a single entry from the hash table given a pointer to that +** element and a hash on the element's key. +*/ +static void fts3RemoveElementByHash( + Fts3Hash *pH, /* The pH containing "elem" */ + Fts3HashElem* elem, /* The element to be removed from the pH */ + int h /* Hash value for the element */ +){ + struct _fts3ht *pEntry; + if( elem->prev ){ + elem->prev->next = elem->next; + }else{ + pH->first = elem->next; + } + if( elem->next ){ + elem->next->prev = elem->prev; + } + pEntry = &pH->ht[h]; + if( pEntry->chain==elem ){ + pEntry->chain = elem->next; + } + pEntry->count--; + if( pEntry->count<=0 ){ + pEntry->chain = 0; + } + if( pH->copyKey && elem->pKey ){ + fts3HashFree(elem->pKey); + } + fts3HashFree( elem ); + pH->count--; + if( pH->count<=0 ){ + assert( pH->first==0 ); + assert( pH->count==0 ); + fts3HashClear(pH); + } +} + +Fts3HashElem *sqlite3Fts3HashFindElem( + const Fts3Hash *pH, + const void *pKey, + int nKey +){ + int h; /* A hash on key */ + int (*xHash)(const void*,int); /* The hash function */ + + if( pH==0 || pH->ht==0 ) return 0; + xHash = ftsHashFunction(pH->keyClass); + assert( xHash!=0 ); + h = (*xHash)(pKey,nKey); + assert( (pH->htsize & (pH->htsize-1))==0 ); + return fts3FindElementByHash(pH,pKey,nKey, h & (pH->htsize-1)); +} + +/* +** Attempt to locate an element of the hash table pH with a key +** that matches pKey,nKey. Return the data for this element if it is +** found, or NULL if there is no match. +*/ +void *sqlite3Fts3HashFind(const Fts3Hash *pH, const void *pKey, int nKey){ + Fts3HashElem *pElem; /* The element that matches key (if any) */ + + pElem = sqlite3Fts3HashFindElem(pH, pKey, nKey); + return pElem ? pElem->data : 0; +} + +/* Insert an element into the hash table pH. The key is pKey,nKey +** and the data is "data". +** +** If no element exists with a matching key, then a new +** element is created. A copy of the key is made if the copyKey +** flag is set. NULL is returned. +** +** If another element already exists with the same key, then the +** new data replaces the old data and the old data is returned. +** The key is not copied in this instance. If a malloc fails, then +** the new data is returned and the hash table is unchanged. +** +** If the "data" parameter to this function is NULL, then the +** element corresponding to "key" is removed from the hash table. +*/ +void *sqlite3Fts3HashInsert( + Fts3Hash *pH, /* The hash table to insert into */ + const void *pKey, /* The key */ + int nKey, /* Number of bytes in the key */ + void *data /* The data */ +){ + int hraw; /* Raw hash value of the key */ + int h; /* the hash of the key modulo hash table size */ + Fts3HashElem *elem; /* Used to loop thru the element list */ + Fts3HashElem *new_elem; /* New element added to the pH */ + int (*xHash)(const void*,int); /* The hash function */ + + assert( pH!=0 ); + xHash = ftsHashFunction(pH->keyClass); + assert( xHash!=0 ); + hraw = (*xHash)(pKey, nKey); + assert( (pH->htsize & (pH->htsize-1))==0 ); + h = hraw & (pH->htsize-1); + elem = fts3FindElementByHash(pH,pKey,nKey,h); + if( elem ){ + void *old_data = elem->data; + if( data==0 ){ + fts3RemoveElementByHash(pH,elem,h); + }else{ + elem->data = data; + } + return old_data; + } + if( data==0 ) return 0; + if( (pH->htsize==0 && fts3Rehash(pH,8)) + || (pH->count>=pH->htsize && fts3Rehash(pH, pH->htsize*2)) + ){ + pH->count = 0; + return data; + } + assert( pH->htsize>0 ); + new_elem = (Fts3HashElem*)fts3HashMalloc( sizeof(Fts3HashElem) ); + if( new_elem==0 ) return data; + if( pH->copyKey && pKey!=0 ){ + new_elem->pKey = fts3HashMalloc( nKey ); + if( new_elem->pKey==0 ){ + fts3HashFree(new_elem); + return data; + } + memcpy((void*)new_elem->pKey, pKey, nKey); + }else{ + new_elem->pKey = (void*)pKey; + } + new_elem->nKey = nKey; + pH->count++; + assert( pH->htsize>0 ); + assert( (pH->htsize & (pH->htsize-1))==0 ); + h = hraw & (pH->htsize-1); + fts3HashInsertElement(pH, &pH->ht[h], new_elem); + new_elem->data = data; + return 0; +} + +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ diff -Nru tracker-0.15.1/src/libtracker-fts/fts3_hash.h tracker-0.15.2/src/libtracker-fts/fts3_hash.h --- tracker-0.15.1/src/libtracker-fts/fts3_hash.h 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/fts3_hash.h 2013-02-14 19:30:47.000000000 +0000 @@ -0,0 +1,112 @@ +/* +** 2001 September 22 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +************************************************************************* +** This is the header file for the generic hash-table implemenation +** used in SQLite. We've modified it slightly to serve as a standalone +** hash table implementation for the full-text indexing module. +** +*/ +#ifndef _FTS3_HASH_H_ +#define _FTS3_HASH_H_ + +/* Forward declarations of structures. */ +typedef struct Fts3Hash Fts3Hash; +typedef struct Fts3HashElem Fts3HashElem; + +/* A complete hash table is an instance of the following structure. +** The internals of this structure are intended to be opaque -- client +** code should not attempt to access or modify the fields of this structure +** directly. Change this structure only by using the routines below. +** However, many of the "procedures" and "functions" for modifying and +** accessing this structure are really macros, so we can't really make +** this structure opaque. +*/ +struct Fts3Hash { + char keyClass; /* HASH_INT, _POINTER, _STRING, _BINARY */ + char copyKey; /* True if copy of key made on insert */ + int count; /* Number of entries in this table */ + Fts3HashElem *first; /* The first element of the array */ + int htsize; /* Number of buckets in the hash table */ + struct _fts3ht { /* the hash table */ + int count; /* Number of entries with this hash */ + Fts3HashElem *chain; /* Pointer to first entry with this hash */ + } *ht; +}; + +/* Each element in the hash table is an instance of the following +** structure. All elements are stored on a single doubly-linked list. +** +** Again, this structure is intended to be opaque, but it can't really +** be opaque because it is used by macros. +*/ +struct Fts3HashElem { + Fts3HashElem *next, *prev; /* Next and previous elements in the table */ + void *data; /* Data associated with this element */ + void *pKey; int nKey; /* Key associated with this element */ +}; + +/* +** There are 2 different modes of operation for a hash table: +** +** FTS3_HASH_STRING pKey points to a string that is nKey bytes long +** (including the null-terminator, if any). Case +** is respected in comparisons. +** +** FTS3_HASH_BINARY pKey points to binary data nKey bytes long. +** memcmp() is used to compare keys. +** +** A copy of the key is made if the copyKey parameter to fts3HashInit is 1. +*/ +#define FTS3_HASH_STRING 1 +#define FTS3_HASH_BINARY 2 + +/* +** Access routines. To delete, insert a NULL pointer. +*/ +void sqlite3Fts3HashInit(Fts3Hash *pNew, char keyClass, char copyKey); +void *sqlite3Fts3HashInsert(Fts3Hash*, const void *pKey, int nKey, void *pData); +void *sqlite3Fts3HashFind(const Fts3Hash*, const void *pKey, int nKey); +void sqlite3Fts3HashClear(Fts3Hash*); +Fts3HashElem *sqlite3Fts3HashFindElem(const Fts3Hash *, const void *, int); + +/* +** Shorthand for the functions above +*/ +#define fts3HashInit sqlite3Fts3HashInit +#define fts3HashInsert sqlite3Fts3HashInsert +#define fts3HashFind sqlite3Fts3HashFind +#define fts3HashClear sqlite3Fts3HashClear +#define fts3HashFindElem sqlite3Fts3HashFindElem + +/* +** Macros for looping over all elements of a hash table. The idiom is +** like this: +** +** Fts3Hash h; +** Fts3HashElem *p; +** ... +** for(p=fts3HashFirst(&h); p; p=fts3HashNext(p)){ +** SomeStructure *pData = fts3HashData(p); +** // do something with pData +** } +*/ +#define fts3HashFirst(H) ((H)->first) +#define fts3HashNext(E) ((E)->next) +#define fts3HashData(E) ((E)->data) +#define fts3HashKey(E) ((E)->pKey) +#define fts3HashKeysize(E) ((E)->nKey) + +/* +** Number of entries in a hash table +*/ +#define fts3HashCount(H) ((H)->count) + +#endif /* _FTS3_HASH_H_ */ diff -Nru tracker-0.15.1/src/libtracker-fts/fts3_icu.c tracker-0.15.2/src/libtracker-fts/fts3_icu.c --- tracker-0.15.1/src/libtracker-fts/fts3_icu.c 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/fts3_icu.c 2013-02-14 19:30:47.000000000 +0000 @@ -0,0 +1,261 @@ +/* +** 2007 June 22 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +************************************************************************* +** This file implements a tokenizer for fts3 based on the ICU library. +*/ +#include "fts3Int.h" +#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) +#ifdef SQLITE_ENABLE_ICU + +#include +#include +#include "fts3_tokenizer.h" + +#include +#include +#include +#include + +typedef struct IcuTokenizer IcuTokenizer; +typedef struct IcuCursor IcuCursor; + +struct IcuTokenizer { + sqlite3_tokenizer base; + char *zLocale; +}; + +struct IcuCursor { + sqlite3_tokenizer_cursor base; + + UBreakIterator *pIter; /* ICU break-iterator object */ + int nChar; /* Number of UChar elements in pInput */ + UChar *aChar; /* Copy of input using utf-16 encoding */ + int *aOffset; /* Offsets of each character in utf-8 input */ + + int nBuffer; + char *zBuffer; + + int iToken; +}; + +/* +** Create a new tokenizer instance. +*/ +static int icuCreate( + int argc, /* Number of entries in argv[] */ + const char * const *argv, /* Tokenizer creation arguments */ + sqlite3_tokenizer **ppTokenizer /* OUT: Created tokenizer */ +){ + IcuTokenizer *p; + int n = 0; + + if( argc>0 ){ + n = strlen(argv[0])+1; + } + p = (IcuTokenizer *)sqlite3_malloc(sizeof(IcuTokenizer)+n); + if( !p ){ + return SQLITE_NOMEM; + } + memset(p, 0, sizeof(IcuTokenizer)); + + if( n ){ + p->zLocale = (char *)&p[1]; + memcpy(p->zLocale, argv[0], n); + } + + *ppTokenizer = (sqlite3_tokenizer *)p; + + return SQLITE_OK; +} + +/* +** Destroy a tokenizer +*/ +static int icuDestroy(sqlite3_tokenizer *pTokenizer){ + IcuTokenizer *p = (IcuTokenizer *)pTokenizer; + sqlite3_free(p); + return SQLITE_OK; +} + +/* +** Prepare to begin tokenizing a particular string. The input +** string to be tokenized is pInput[0..nBytes-1]. A cursor +** used to incrementally tokenize this string is returned in +** *ppCursor. +*/ +static int icuOpen( + sqlite3_tokenizer *pTokenizer, /* The tokenizer */ + const char *zInput, /* Input string */ + int nInput, /* Length of zInput in bytes */ + sqlite3_tokenizer_cursor **ppCursor /* OUT: Tokenization cursor */ +){ + IcuTokenizer *p = (IcuTokenizer *)pTokenizer; + IcuCursor *pCsr; + + const int32_t opt = U_FOLD_CASE_DEFAULT; + UErrorCode status = U_ZERO_ERROR; + int nChar; + + UChar32 c; + int iInput = 0; + int iOut = 0; + + *ppCursor = 0; + + if( zInput==0 ){ + nInput = 0; + zInput = ""; + }else if( nInput<0 ){ + nInput = strlen(zInput); + } + nChar = nInput+1; + pCsr = (IcuCursor *)sqlite3_malloc( + sizeof(IcuCursor) + /* IcuCursor */ + ((nChar+3)&~3) * sizeof(UChar) + /* IcuCursor.aChar[] */ + (nChar+1) * sizeof(int) /* IcuCursor.aOffset[] */ + ); + if( !pCsr ){ + return SQLITE_NOMEM; + } + memset(pCsr, 0, sizeof(IcuCursor)); + pCsr->aChar = (UChar *)&pCsr[1]; + pCsr->aOffset = (int *)&pCsr->aChar[(nChar+3)&~3]; + + pCsr->aOffset[iOut] = iInput; + U8_NEXT(zInput, iInput, nInput, c); + while( c>0 ){ + int isError = 0; + c = u_foldCase(c, opt); + U16_APPEND(pCsr->aChar, iOut, nChar, c, isError); + if( isError ){ + sqlite3_free(pCsr); + return SQLITE_ERROR; + } + pCsr->aOffset[iOut] = iInput; + + if( iInputpIter = ubrk_open(UBRK_WORD, p->zLocale, pCsr->aChar, iOut, &status); + if( !U_SUCCESS(status) ){ + sqlite3_free(pCsr); + return SQLITE_ERROR; + } + pCsr->nChar = iOut; + + ubrk_first(pCsr->pIter); + *ppCursor = (sqlite3_tokenizer_cursor *)pCsr; + return SQLITE_OK; +} + +/* +** Close a tokenization cursor previously opened by a call to icuOpen(). +*/ +static int icuClose(sqlite3_tokenizer_cursor *pCursor){ + IcuCursor *pCsr = (IcuCursor *)pCursor; + ubrk_close(pCsr->pIter); + sqlite3_free(pCsr->zBuffer); + sqlite3_free(pCsr); + return SQLITE_OK; +} + +/* +** Extract the next token from a tokenization cursor. +*/ +static int icuNext( + sqlite3_tokenizer_cursor *pCursor, /* Cursor returned by simpleOpen */ + const char **ppToken, /* OUT: *ppToken is the token text */ + int *pnBytes, /* OUT: Number of bytes in token */ + int *piStartOffset, /* OUT: Starting offset of token */ + int *piEndOffset, /* OUT: Ending offset of token */ + int *piPosition /* OUT: Position integer of token */ +){ + IcuCursor *pCsr = (IcuCursor *)pCursor; + + int iStart = 0; + int iEnd = 0; + int nByte = 0; + + while( iStart==iEnd ){ + UChar32 c; + + iStart = ubrk_current(pCsr->pIter); + iEnd = ubrk_next(pCsr->pIter); + if( iEnd==UBRK_DONE ){ + return SQLITE_DONE; + } + + while( iStartaChar, iWhite, pCsr->nChar, c); + if( u_isspace(c) ){ + iStart = iWhite; + }else{ + break; + } + } + assert(iStart<=iEnd); + } + + do { + UErrorCode status = U_ZERO_ERROR; + if( nByte ){ + char *zNew = sqlite3_realloc(pCsr->zBuffer, nByte); + if( !zNew ){ + return SQLITE_NOMEM; + } + pCsr->zBuffer = zNew; + pCsr->nBuffer = nByte; + } + + u_strToUTF8( + pCsr->zBuffer, pCsr->nBuffer, &nByte, /* Output vars */ + &pCsr->aChar[iStart], iEnd-iStart, /* Input vars */ + &status /* Output success/failure */ + ); + } while( nByte>pCsr->nBuffer ); + + *ppToken = pCsr->zBuffer; + *pnBytes = nByte; + *piStartOffset = pCsr->aOffset[iStart]; + *piEndOffset = pCsr->aOffset[iEnd]; + *piPosition = pCsr->iToken++; + + return SQLITE_OK; +} + +/* +** The set of routines that implement the simple tokenizer +*/ +static const sqlite3_tokenizer_module icuTokenizerModule = { + 0, /* iVersion */ + icuCreate, /* xCreate */ + icuDestroy, /* xCreate */ + icuOpen, /* xOpen */ + icuClose, /* xClose */ + icuNext, /* xNext */ +}; + +/* +** Set *ppModule to point at the implementation of the ICU tokenizer. +*/ +void sqlite3Fts3IcuTokenizerModule( + sqlite3_tokenizer_module const**ppModule +){ + *ppModule = &icuTokenizerModule; +} + +#endif /* defined(SQLITE_ENABLE_ICU) */ +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ diff -Nru tracker-0.15.1/src/libtracker-fts/fts3_porter.c tracker-0.15.2/src/libtracker-fts/fts3_porter.c --- tracker-0.15.1/src/libtracker-fts/fts3_porter.c 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/fts3_porter.c 2013-02-14 19:30:47.000000000 +0000 @@ -0,0 +1,646 @@ +/* +** 2006 September 30 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +************************************************************************* +** Implementation of the full-text-search tokenizer that implements +** a Porter stemmer. +*/ + +/* +** The code in this file is only compiled if: +** +** * The FTS3 module is being built as an extension +** (in which case SQLITE_CORE is not defined), or +** +** * The FTS3 module is being built into the core of +** SQLite (in which case SQLITE_ENABLE_FTS3 is defined). +*/ +#include "fts3Int.h" +#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) + +#include +#include +#include +#include + +#include "fts3_tokenizer.h" + +/* +** Class derived from sqlite3_tokenizer +*/ +typedef struct porter_tokenizer { + sqlite3_tokenizer base; /* Base class */ +} porter_tokenizer; + +/* +** Class derived from sqlite3_tokenizer_cursor +*/ +typedef struct porter_tokenizer_cursor { + sqlite3_tokenizer_cursor base; + const char *zInput; /* input we are tokenizing */ + int nInput; /* size of the input */ + int iOffset; /* current position in zInput */ + int iToken; /* index of next token to be returned */ + char *zToken; /* storage for current token */ + int nAllocated; /* space allocated to zToken buffer */ +} porter_tokenizer_cursor; + + +/* +** Create a new tokenizer instance. +*/ +static int porterCreate( + int argc, const char * const *argv, + sqlite3_tokenizer **ppTokenizer +){ + porter_tokenizer *t; + + UNUSED_PARAMETER(argc); + UNUSED_PARAMETER(argv); + + t = (porter_tokenizer *) sqlite3_malloc(sizeof(*t)); + if( t==NULL ) return SQLITE_NOMEM; + memset(t, 0, sizeof(*t)); + *ppTokenizer = &t->base; + return SQLITE_OK; +} + +/* +** Destroy a tokenizer +*/ +static int porterDestroy(sqlite3_tokenizer *pTokenizer){ + sqlite3_free(pTokenizer); + return SQLITE_OK; +} + +/* +** Prepare to begin tokenizing a particular string. The input +** string to be tokenized is zInput[0..nInput-1]. A cursor +** used to incrementally tokenize this string is returned in +** *ppCursor. +*/ +static int porterOpen( + sqlite3_tokenizer *pTokenizer, /* The tokenizer */ + const char *zInput, int nInput, /* String to be tokenized */ + sqlite3_tokenizer_cursor **ppCursor /* OUT: Tokenization cursor */ +){ + porter_tokenizer_cursor *c; + + UNUSED_PARAMETER(pTokenizer); + + c = (porter_tokenizer_cursor *) sqlite3_malloc(sizeof(*c)); + if( c==NULL ) return SQLITE_NOMEM; + + c->zInput = zInput; + if( zInput==0 ){ + c->nInput = 0; + }else if( nInput<0 ){ + c->nInput = (int)strlen(zInput); + }else{ + c->nInput = nInput; + } + c->iOffset = 0; /* start tokenizing at the beginning */ + c->iToken = 0; + c->zToken = NULL; /* no space allocated, yet. */ + c->nAllocated = 0; + + *ppCursor = &c->base; + return SQLITE_OK; +} + +/* +** Close a tokenization cursor previously opened by a call to +** porterOpen() above. +*/ +static int porterClose(sqlite3_tokenizer_cursor *pCursor){ + porter_tokenizer_cursor *c = (porter_tokenizer_cursor *) pCursor; + sqlite3_free(c->zToken); + sqlite3_free(c); + return SQLITE_OK; +} +/* +** Vowel or consonant +*/ +static const char cType[] = { + 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 2, 1 +}; + +/* +** isConsonant() and isVowel() determine if their first character in +** the string they point to is a consonant or a vowel, according +** to Porter ruls. +** +** A consonate is any letter other than 'a', 'e', 'i', 'o', or 'u'. +** 'Y' is a consonant unless it follows another consonant, +** in which case it is a vowel. +** +** In these routine, the letters are in reverse order. So the 'y' rule +** is that 'y' is a consonant unless it is followed by another +** consonent. +*/ +static int isVowel(const char*); +static int isConsonant(const char *z){ + int j; + char x = *z; + if( x==0 ) return 0; + assert( x>='a' && x<='z' ); + j = cType[x-'a']; + if( j<2 ) return j; + return z[1]==0 || isVowel(z + 1); +} +static int isVowel(const char *z){ + int j; + char x = *z; + if( x==0 ) return 0; + assert( x>='a' && x<='z' ); + j = cType[x-'a']; + if( j<2 ) return 1-j; + return isConsonant(z + 1); +} + +/* +** Let any sequence of one or more vowels be represented by V and let +** C be sequence of one or more consonants. Then every word can be +** represented as: +** +** [C] (VC){m} [V] +** +** In prose: A word is an optional consonant followed by zero or +** vowel-consonant pairs followed by an optional vowel. "m" is the +** number of vowel consonant pairs. This routine computes the value +** of m for the first i bytes of a word. +** +** Return true if the m-value for z is 1 or more. In other words, +** return true if z contains at least one vowel that is followed +** by a consonant. +** +** In this routine z[] is in reverse order. So we are really looking +** for an instance of of a consonant followed by a vowel. +*/ +static int m_gt_0(const char *z){ + while( isVowel(z) ){ z++; } + if( *z==0 ) return 0; + while( isConsonant(z) ){ z++; } + return *z!=0; +} + +/* Like mgt0 above except we are looking for a value of m which is +** exactly 1 +*/ +static int m_eq_1(const char *z){ + while( isVowel(z) ){ z++; } + if( *z==0 ) return 0; + while( isConsonant(z) ){ z++; } + if( *z==0 ) return 0; + while( isVowel(z) ){ z++; } + if( *z==0 ) return 1; + while( isConsonant(z) ){ z++; } + return *z==0; +} + +/* Like mgt0 above except we are looking for a value of m>1 instead +** or m>0 +*/ +static int m_gt_1(const char *z){ + while( isVowel(z) ){ z++; } + if( *z==0 ) return 0; + while( isConsonant(z) ){ z++; } + if( *z==0 ) return 0; + while( isVowel(z) ){ z++; } + if( *z==0 ) return 0; + while( isConsonant(z) ){ z++; } + return *z!=0; +} + +/* +** Return TRUE if there is a vowel anywhere within z[0..n-1] +*/ +static int hasVowel(const char *z){ + while( isConsonant(z) ){ z++; } + return *z!=0; +} + +/* +** Return TRUE if the word ends in a double consonant. +** +** The text is reversed here. So we are really looking at +** the first two characters of z[]. +*/ +static int doubleConsonant(const char *z){ + return isConsonant(z) && z[0]==z[1]; +} + +/* +** Return TRUE if the word ends with three letters which +** are consonant-vowel-consonent and where the final consonant +** is not 'w', 'x', or 'y'. +** +** The word is reversed here. So we are really checking the +** first three letters and the first one cannot be in [wxy]. +*/ +static int star_oh(const char *z){ + return + isConsonant(z) && + z[0]!='w' && z[0]!='x' && z[0]!='y' && + isVowel(z+1) && + isConsonant(z+2); +} + +/* +** If the word ends with zFrom and xCond() is true for the stem +** of the word that preceeds the zFrom ending, then change the +** ending to zTo. +** +** The input word *pz and zFrom are both in reverse order. zTo +** is in normal order. +** +** Return TRUE if zFrom matches. Return FALSE if zFrom does not +** match. Not that TRUE is returned even if xCond() fails and +** no substitution occurs. +*/ +static int stem( + char **pz, /* The word being stemmed (Reversed) */ + const char *zFrom, /* If the ending matches this... (Reversed) */ + const char *zTo, /* ... change the ending to this (not reversed) */ + int (*xCond)(const char*) /* Condition that must be true */ +){ + char *z = *pz; + while( *zFrom && *zFrom==*z ){ z++; zFrom++; } + if( *zFrom!=0 ) return 0; + if( xCond && !xCond(z) ) return 1; + while( *zTo ){ + *(--z) = *(zTo++); + } + *pz = z; + return 1; +} + +/* +** This is the fallback stemmer used when the porter stemmer is +** inappropriate. The input word is copied into the output with +** US-ASCII case folding. If the input word is too long (more +** than 20 bytes if it contains no digits or more than 6 bytes if +** it contains digits) then word is truncated to 20 or 6 bytes +** by taking 10 or 3 bytes from the beginning and end. +*/ +static void copy_stemmer(const char *zIn, int nIn, char *zOut, int *pnOut){ + int i, mx, j; + int hasDigit = 0; + for(i=0; i='A' && c<='Z' ){ + zOut[i] = c - 'A' + 'a'; + }else{ + if( c>='0' && c<='9' ) hasDigit = 1; + zOut[i] = c; + } + } + mx = hasDigit ? 3 : 10; + if( nIn>mx*2 ){ + for(j=mx, i=nIn-mx; i=(int)sizeof(zReverse)-7 ){ + /* The word is too big or too small for the porter stemmer. + ** Fallback to the copy stemmer */ + copy_stemmer(zIn, nIn, zOut, pnOut); + return; + } + for(i=0, j=sizeof(zReverse)-6; i='A' && c<='Z' ){ + zReverse[j] = c + 'a' - 'A'; + }else if( c>='a' && c<='z' ){ + zReverse[j] = c; + }else{ + /* The use of a character not in [a-zA-Z] means that we fallback + ** to the copy stemmer */ + copy_stemmer(zIn, nIn, zOut, pnOut); + return; + } + } + memset(&zReverse[sizeof(zReverse)-5], 0, 5); + z = &zReverse[j+1]; + + + /* Step 1a */ + if( z[0]=='s' ){ + if( + !stem(&z, "sess", "ss", 0) && + !stem(&z, "sei", "i", 0) && + !stem(&z, "ss", "ss", 0) + ){ + z++; + } + } + + /* Step 1b */ + z2 = z; + if( stem(&z, "dee", "ee", m_gt_0) ){ + /* Do nothing. The work was all in the test */ + }else if( + (stem(&z, "gni", "", hasVowel) || stem(&z, "de", "", hasVowel)) + && z!=z2 + ){ + if( stem(&z, "ta", "ate", 0) || + stem(&z, "lb", "ble", 0) || + stem(&z, "zi", "ize", 0) ){ + /* Do nothing. The work was all in the test */ + }else if( doubleConsonant(z) && (*z!='l' && *z!='s' && *z!='z') ){ + z++; + }else if( m_eq_1(z) && star_oh(z) ){ + *(--z) = 'e'; + } + } + + /* Step 1c */ + if( z[0]=='y' && hasVowel(z+1) ){ + z[0] = 'i'; + } + + /* Step 2 */ + switch( z[1] ){ + case 'a': + stem(&z, "lanoita", "ate", m_gt_0) || + stem(&z, "lanoit", "tion", m_gt_0); + break; + case 'c': + stem(&z, "icne", "ence", m_gt_0) || + stem(&z, "icna", "ance", m_gt_0); + break; + case 'e': + stem(&z, "rezi", "ize", m_gt_0); + break; + case 'g': + stem(&z, "igol", "log", m_gt_0); + break; + case 'l': + stem(&z, "ilb", "ble", m_gt_0) || + stem(&z, "illa", "al", m_gt_0) || + stem(&z, "iltne", "ent", m_gt_0) || + stem(&z, "ile", "e", m_gt_0) || + stem(&z, "ilsuo", "ous", m_gt_0); + break; + case 'o': + stem(&z, "noitazi", "ize", m_gt_0) || + stem(&z, "noita", "ate", m_gt_0) || + stem(&z, "rota", "ate", m_gt_0); + break; + case 's': + stem(&z, "msila", "al", m_gt_0) || + stem(&z, "ssenevi", "ive", m_gt_0) || + stem(&z, "ssenluf", "ful", m_gt_0) || + stem(&z, "ssensuo", "ous", m_gt_0); + break; + case 't': + stem(&z, "itila", "al", m_gt_0) || + stem(&z, "itivi", "ive", m_gt_0) || + stem(&z, "itilib", "ble", m_gt_0); + break; + } + + /* Step 3 */ + switch( z[0] ){ + case 'e': + stem(&z, "etaci", "ic", m_gt_0) || + stem(&z, "evita", "", m_gt_0) || + stem(&z, "ezila", "al", m_gt_0); + break; + case 'i': + stem(&z, "itici", "ic", m_gt_0); + break; + case 'l': + stem(&z, "laci", "ic", m_gt_0) || + stem(&z, "luf", "", m_gt_0); + break; + case 's': + stem(&z, "ssen", "", m_gt_0); + break; + } + + /* Step 4 */ + switch( z[1] ){ + case 'a': + if( z[0]=='l' && m_gt_1(z+2) ){ + z += 2; + } + break; + case 'c': + if( z[0]=='e' && z[2]=='n' && (z[3]=='a' || z[3]=='e') && m_gt_1(z+4) ){ + z += 4; + } + break; + case 'e': + if( z[0]=='r' && m_gt_1(z+2) ){ + z += 2; + } + break; + case 'i': + if( z[0]=='c' && m_gt_1(z+2) ){ + z += 2; + } + break; + case 'l': + if( z[0]=='e' && z[2]=='b' && (z[3]=='a' || z[3]=='i') && m_gt_1(z+4) ){ + z += 4; + } + break; + case 'n': + if( z[0]=='t' ){ + if( z[2]=='a' ){ + if( m_gt_1(z+3) ){ + z += 3; + } + }else if( z[2]=='e' ){ + stem(&z, "tneme", "", m_gt_1) || + stem(&z, "tnem", "", m_gt_1) || + stem(&z, "tne", "", m_gt_1); + } + } + break; + case 'o': + if( z[0]=='u' ){ + if( m_gt_1(z+2) ){ + z += 2; + } + }else if( z[3]=='s' || z[3]=='t' ){ + stem(&z, "noi", "", m_gt_1); + } + break; + case 's': + if( z[0]=='m' && z[2]=='i' && m_gt_1(z+3) ){ + z += 3; + } + break; + case 't': + stem(&z, "eta", "", m_gt_1) || + stem(&z, "iti", "", m_gt_1); + break; + case 'u': + if( z[0]=='s' && z[2]=='o' && m_gt_1(z+3) ){ + z += 3; + } + break; + case 'v': + case 'z': + if( z[0]=='e' && z[2]=='i' && m_gt_1(z+3) ){ + z += 3; + } + break; + } + + /* Step 5a */ + if( z[0]=='e' ){ + if( m_gt_1(z+1) ){ + z++; + }else if( m_eq_1(z+1) && !star_oh(z+1) ){ + z++; + } + } + + /* Step 5b */ + if( m_gt_1(z) && z[0]=='l' && z[1]=='l' ){ + z++; + } + + /* z[] is now the stemmed word in reverse order. Flip it back + ** around into forward order and return. + */ + *pnOut = i = (int)strlen(z); + zOut[i] = 0; + while( *z ){ + zOut[--i] = *(z++); + } +} + +/* +** Characters that can be part of a token. We assume any character +** whose value is greater than 0x80 (any UTF character) can be +** part of a token. In other words, delimiters all must have +** values of 0x7f or lower. +*/ +static const char porterIdChar[] = { +/* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* 3x */ + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 4x */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, /* 5x */ + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 6x */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, /* 7x */ +}; +#define isDelim(C) (((ch=C)&0x80)==0 && (ch<0x30 || !porterIdChar[ch-0x30])) + +/* +** Extract the next token from a tokenization cursor. The cursor must +** have been opened by a prior call to porterOpen(). +*/ +static int porterNext( + sqlite3_tokenizer_cursor *pCursor, /* Cursor returned by porterOpen */ + const char **pzToken, /* OUT: *pzToken is the token text */ + int *pnBytes, /* OUT: Number of bytes in token */ + int *piStartOffset, /* OUT: Starting offset of token */ + int *piEndOffset, /* OUT: Ending offset of token */ + int *piPosition /* OUT: Position integer of token */ +){ + porter_tokenizer_cursor *c = (porter_tokenizer_cursor *) pCursor; + const char *z = c->zInput; + + while( c->iOffsetnInput ){ + int iStartOffset, ch; + + /* Scan past delimiter characters */ + while( c->iOffsetnInput && isDelim(z[c->iOffset]) ){ + c->iOffset++; + } + + /* Count non-delimiter characters. */ + iStartOffset = c->iOffset; + while( c->iOffsetnInput && !isDelim(z[c->iOffset]) ){ + c->iOffset++; + } + + if( c->iOffset>iStartOffset ){ + int n = c->iOffset-iStartOffset; + if( n>c->nAllocated ){ + char *pNew; + c->nAllocated = n+20; + pNew = sqlite3_realloc(c->zToken, c->nAllocated); + if( !pNew ) return SQLITE_NOMEM; + c->zToken = pNew; + } + porter_stemmer(&z[iStartOffset], n, c->zToken, pnBytes); + *pzToken = c->zToken; + *piStartOffset = iStartOffset; + *piEndOffset = c->iOffset; + *piPosition = c->iToken++; + return SQLITE_OK; + } + } + return SQLITE_DONE; +} + +/* +** The set of routines that implement the porter-stemmer tokenizer +*/ +static const sqlite3_tokenizer_module porterTokenizerModule = { + 0, + porterCreate, + porterDestroy, + porterOpen, + porterClose, + porterNext, + 0 +}; + +/* +** Allocate a new porter tokenizer. Return a pointer to the new +** tokenizer in *ppModule +*/ +void sqlite3Fts3PorterTokenizerModule( + sqlite3_tokenizer_module const**ppModule +){ + *ppModule = &porterTokenizerModule; +} + +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ diff -Nru tracker-0.15.1/src/libtracker-fts/fts3_snippet.c tracker-0.15.2/src/libtracker-fts/fts3_snippet.c --- tracker-0.15.1/src/libtracker-fts/fts3_snippet.c 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/fts3_snippet.c 2013-02-14 19:30:47.000000000 +0000 @@ -0,0 +1,1520 @@ +/* +** 2009 Oct 23 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +****************************************************************************** +*/ + +#include "fts3Int.h" +#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) + +#include +#include + +/* +** Characters that may appear in the second argument to matchinfo(). +*/ +#define FTS3_MATCHINFO_NPHRASE 'p' /* 1 value */ +#define FTS3_MATCHINFO_NCOL 'c' /* 1 value */ +#define FTS3_MATCHINFO_NDOC 'n' /* 1 value */ +#define FTS3_MATCHINFO_AVGLENGTH 'a' /* nCol values */ +#define FTS3_MATCHINFO_LENGTH 'l' /* nCol values */ +#define FTS3_MATCHINFO_LCS 's' /* nCol values */ +#define FTS3_MATCHINFO_HITS 'x' /* 3*nCol*nPhrase values */ + +/* +** The default value for the second argument to matchinfo(). +*/ +#define FTS3_MATCHINFO_DEFAULT "pcx" + + +/* +** Used as an fts3ExprIterate() context when loading phrase doclists to +** Fts3Expr.aDoclist[]/nDoclist. +*/ +typedef struct LoadDoclistCtx LoadDoclistCtx; +struct LoadDoclistCtx { + Fts3Cursor *pCsr; /* FTS3 Cursor */ + int nPhrase; /* Number of phrases seen so far */ + int nToken; /* Number of tokens seen so far */ +}; + +/* +** The following types are used as part of the implementation of the +** fts3BestSnippet() routine. +*/ +typedef struct SnippetIter SnippetIter; +typedef struct SnippetPhrase SnippetPhrase; +typedef struct SnippetFragment SnippetFragment; + +struct SnippetIter { + Fts3Cursor *pCsr; /* Cursor snippet is being generated from */ + int iCol; /* Extract snippet from this column */ + int nSnippet; /* Requested snippet length (in tokens) */ + int nPhrase; /* Number of phrases in query */ + SnippetPhrase *aPhrase; /* Array of size nPhrase */ + int iCurrent; /* First token of current snippet */ +}; + +struct SnippetPhrase { + int nToken; /* Number of tokens in phrase */ + char *pList; /* Pointer to start of phrase position list */ + int iHead; /* Next value in position list */ + char *pHead; /* Position list data following iHead */ + int iTail; /* Next value in trailing position list */ + char *pTail; /* Position list data following iTail */ +}; + +struct SnippetFragment { + int iCol; /* Column snippet is extracted from */ + int iPos; /* Index of first token in snippet */ + u64 covered; /* Mask of query phrases covered */ + u64 hlmask; /* Mask of snippet terms to highlight */ +}; + +/* +** This type is used as an fts3ExprIterate() context object while +** accumulating the data returned by the matchinfo() function. +*/ +typedef struct MatchInfo MatchInfo; +struct MatchInfo { + Fts3Cursor *pCursor; /* FTS3 Cursor */ + int nCol; /* Number of columns in table */ + int nPhrase; /* Number of matchable phrases in query */ + sqlite3_int64 nDoc; /* Number of docs in database */ + u32 *aMatchinfo; /* Pre-allocated buffer */ +}; + + + +/* +** The snippet() and offsets() functions both return text values. An instance +** of the following structure is used to accumulate those values while the +** functions are running. See fts3StringAppend() for details. +*/ +typedef struct StrBuffer StrBuffer; +struct StrBuffer { + char *z; /* Pointer to buffer containing string */ + int n; /* Length of z in bytes (excl. nul-term) */ + int nAlloc; /* Allocated size of buffer z in bytes */ +}; + + +/* +** This function is used to help iterate through a position-list. A position +** list is a list of unique integers, sorted from smallest to largest. Each +** element of the list is represented by an FTS3 varint that takes the value +** of the difference between the current element and the previous one plus +** two. For example, to store the position-list: +** +** 4 9 113 +** +** the three varints: +** +** 6 7 106 +** +** are encoded. +** +** When this function is called, *pp points to the start of an element of +** the list. *piPos contains the value of the previous entry in the list. +** After it returns, *piPos contains the value of the next element of the +** list and *pp is advanced to the following varint. +*/ +static void fts3GetDeltaPosition(char **pp, int *piPos){ + int iVal; + *pp += sqlite3Fts3GetVarint32(*pp, &iVal); + *piPos += (iVal-2); +} + +/* +** Helper function for fts3ExprIterate() (see below). +*/ +static int fts3ExprIterate2( + Fts3Expr *pExpr, /* Expression to iterate phrases of */ + int *piPhrase, /* Pointer to phrase counter */ + int (*x)(Fts3Expr*,int,void*), /* Callback function to invoke for phrases */ + void *pCtx /* Second argument to pass to callback */ +){ + int rc; /* Return code */ + int eType = pExpr->eType; /* Type of expression node pExpr */ + + if( eType!=FTSQUERY_PHRASE ){ + assert( pExpr->pLeft && pExpr->pRight ); + rc = fts3ExprIterate2(pExpr->pLeft, piPhrase, x, pCtx); + if( rc==SQLITE_OK && eType!=FTSQUERY_NOT ){ + rc = fts3ExprIterate2(pExpr->pRight, piPhrase, x, pCtx); + } + }else{ + rc = x(pExpr, *piPhrase, pCtx); + (*piPhrase)++; + } + return rc; +} + +/* +** Iterate through all phrase nodes in an FTS3 query, except those that +** are part of a sub-tree that is the right-hand-side of a NOT operator. +** For each phrase node found, the supplied callback function is invoked. +** +** If the callback function returns anything other than SQLITE_OK, +** the iteration is abandoned and the error code returned immediately. +** Otherwise, SQLITE_OK is returned after a callback has been made for +** all eligible phrase nodes. +*/ +static int fts3ExprIterate( + Fts3Expr *pExpr, /* Expression to iterate phrases of */ + int (*x)(Fts3Expr*,int,void*), /* Callback function to invoke for phrases */ + void *pCtx /* Second argument to pass to callback */ +){ + int iPhrase = 0; /* Variable used as the phrase counter */ + return fts3ExprIterate2(pExpr, &iPhrase, x, pCtx); +} + +/* +** This is an fts3ExprIterate() callback used while loading the doclists +** for each phrase into Fts3Expr.aDoclist[]/nDoclist. See also +** fts3ExprLoadDoclists(). +*/ +static int fts3ExprLoadDoclistsCb(Fts3Expr *pExpr, int iPhrase, void *ctx){ + int rc = SQLITE_OK; + Fts3Phrase *pPhrase = pExpr->pPhrase; + LoadDoclistCtx *p = (LoadDoclistCtx *)ctx; + + UNUSED_PARAMETER(iPhrase); + + p->nPhrase++; + p->nToken += pPhrase->nToken; + + return rc; +} + +/* +** Load the doclists for each phrase in the query associated with FTS3 cursor +** pCsr. +** +** If pnPhrase is not NULL, then *pnPhrase is set to the number of matchable +** phrases in the expression (all phrases except those directly or +** indirectly descended from the right-hand-side of a NOT operator). If +** pnToken is not NULL, then it is set to the number of tokens in all +** matchable phrases of the expression. +*/ +static int fts3ExprLoadDoclists( + Fts3Cursor *pCsr, /* Fts3 cursor for current query */ + int *pnPhrase, /* OUT: Number of phrases in query */ + int *pnToken /* OUT: Number of tokens in query */ +){ + int rc; /* Return Code */ + LoadDoclistCtx sCtx = {0,0,0}; /* Context for fts3ExprIterate() */ + sCtx.pCsr = pCsr; + rc = fts3ExprIterate(pCsr->pExpr, fts3ExprLoadDoclistsCb, (void *)&sCtx); + if( pnPhrase ) *pnPhrase = sCtx.nPhrase; + if( pnToken ) *pnToken = sCtx.nToken; + return rc; +} + +static int fts3ExprPhraseCountCb(Fts3Expr *pExpr, int iPhrase, void *ctx){ + (*(int *)ctx)++; + UNUSED_PARAMETER(pExpr); + UNUSED_PARAMETER(iPhrase); + return SQLITE_OK; +} +static int fts3ExprPhraseCount(Fts3Expr *pExpr){ + int nPhrase = 0; + (void)fts3ExprIterate(pExpr, fts3ExprPhraseCountCb, (void *)&nPhrase); + return nPhrase; +} + +/* +** Advance the position list iterator specified by the first two +** arguments so that it points to the first element with a value greater +** than or equal to parameter iNext. +*/ +static void fts3SnippetAdvance(char **ppIter, int *piIter, int iNext){ + char *pIter = *ppIter; + if( pIter ){ + int iIter = *piIter; + + while( iIteriCurrent<0 ){ + /* The SnippetIter object has just been initialized. The first snippet + ** candidate always starts at offset 0 (even if this candidate has a + ** score of 0.0). + */ + pIter->iCurrent = 0; + + /* Advance the 'head' iterator of each phrase to the first offset that + ** is greater than or equal to (iNext+nSnippet). + */ + for(i=0; inPhrase; i++){ + SnippetPhrase *pPhrase = &pIter->aPhrase[i]; + fts3SnippetAdvance(&pPhrase->pHead, &pPhrase->iHead, pIter->nSnippet); + } + }else{ + int iStart; + int iEnd = 0x7FFFFFFF; + + for(i=0; inPhrase; i++){ + SnippetPhrase *pPhrase = &pIter->aPhrase[i]; + if( pPhrase->pHead && pPhrase->iHeadiHead; + } + } + if( iEnd==0x7FFFFFFF ){ + return 1; + } + + pIter->iCurrent = iStart = iEnd - pIter->nSnippet + 1; + for(i=0; inPhrase; i++){ + SnippetPhrase *pPhrase = &pIter->aPhrase[i]; + fts3SnippetAdvance(&pPhrase->pHead, &pPhrase->iHead, iEnd+1); + fts3SnippetAdvance(&pPhrase->pTail, &pPhrase->iTail, iStart); + } + } + + return 0; +} + +/* +** Retrieve information about the current candidate snippet of snippet +** iterator pIter. +*/ +static void fts3SnippetDetails( + SnippetIter *pIter, /* Snippet iterator */ + u64 mCovered, /* Bitmask of phrases already covered */ + int *piToken, /* OUT: First token of proposed snippet */ + int *piScore, /* OUT: "Score" for this snippet */ + u64 *pmCover, /* OUT: Bitmask of phrases covered */ + u64 *pmHighlight /* OUT: Bitmask of terms to highlight */ +){ + int iStart = pIter->iCurrent; /* First token of snippet */ + int iScore = 0; /* Score of this snippet */ + int i; /* Loop counter */ + u64 mCover = 0; /* Mask of phrases covered by this snippet */ + u64 mHighlight = 0; /* Mask of tokens to highlight in snippet */ + + for(i=0; inPhrase; i++){ + SnippetPhrase *pPhrase = &pIter->aPhrase[i]; + if( pPhrase->pTail ){ + char *pCsr = pPhrase->pTail; + int iCsr = pPhrase->iTail; + + while( iCsr<(iStart+pIter->nSnippet) ){ + int j; + u64 mPhrase = (u64)1 << i; + u64 mPos = (u64)1 << (iCsr - iStart); + assert( iCsr>=iStart ); + if( (mCover|mCovered)&mPhrase ){ + iScore++; + }else{ + iScore += 1000; + } + mCover |= mPhrase; + + for(j=0; jnToken; j++){ + mHighlight |= (mPos>>j); + } + + if( 0==(*pCsr & 0x0FE) ) break; + fts3GetDeltaPosition(&pCsr, &iCsr); + } + } + } + + /* Set the output variables before returning. */ + *piToken = iStart; + *piScore = iScore; + *pmCover = mCover; + *pmHighlight = mHighlight; +} + +/* +** This function is an fts3ExprIterate() callback used by fts3BestSnippet(). +** Each invocation populates an element of the SnippetIter.aPhrase[] array. +*/ +static int fts3SnippetFindPositions(Fts3Expr *pExpr, int iPhrase, void *ctx){ + SnippetIter *p = (SnippetIter *)ctx; + SnippetPhrase *pPhrase = &p->aPhrase[iPhrase]; + char *pCsr; + int rc; + + pPhrase->nToken = pExpr->pPhrase->nToken; + rc = sqlite3Fts3EvalPhrasePoslist(p->pCsr, pExpr, p->iCol, &pCsr); + assert( rc==SQLITE_OK || pCsr==0 ); + if( pCsr ){ + int iFirst = 0; + pPhrase->pList = pCsr; + fts3GetDeltaPosition(&pCsr, &iFirst); + assert( iFirst>=0 ); + pPhrase->pHead = pCsr; + pPhrase->pTail = pCsr; + pPhrase->iHead = iFirst; + pPhrase->iTail = iFirst; + }else{ + assert( rc!=SQLITE_OK || ( + pPhrase->pList==0 && pPhrase->pHead==0 && pPhrase->pTail==0 + )); + } + + return rc; +} + +/* +** Select the fragment of text consisting of nFragment contiguous tokens +** from column iCol that represent the "best" snippet. The best snippet +** is the snippet with the highest score, where scores are calculated +** by adding: +** +** (a) +1 point for each occurence of a matchable phrase in the snippet. +** +** (b) +1000 points for the first occurence of each matchable phrase in +** the snippet for which the corresponding mCovered bit is not set. +** +** The selected snippet parameters are stored in structure *pFragment before +** returning. The score of the selected snippet is stored in *piScore +** before returning. +*/ +static int fts3BestSnippet( + int nSnippet, /* Desired snippet length */ + Fts3Cursor *pCsr, /* Cursor to create snippet for */ + int iCol, /* Index of column to create snippet from */ + u64 mCovered, /* Mask of phrases already covered */ + u64 *pmSeen, /* IN/OUT: Mask of phrases seen */ + SnippetFragment *pFragment, /* OUT: Best snippet found */ + int *piScore /* OUT: Score of snippet pFragment */ +){ + int rc; /* Return Code */ + int nList; /* Number of phrases in expression */ + SnippetIter sIter; /* Iterates through snippet candidates */ + int nByte; /* Number of bytes of space to allocate */ + int iBestScore = -1; /* Best snippet score found so far */ + int i; /* Loop counter */ + + memset(&sIter, 0, sizeof(sIter)); + + /* Iterate through the phrases in the expression to count them. The same + ** callback makes sure the doclists are loaded for each phrase. + */ + rc = fts3ExprLoadDoclists(pCsr, &nList, 0); + if( rc!=SQLITE_OK ){ + return rc; + } + + /* Now that it is known how many phrases there are, allocate and zero + ** the required space using malloc(). + */ + nByte = sizeof(SnippetPhrase) * nList; + sIter.aPhrase = (SnippetPhrase *)sqlite3_malloc(nByte); + if( !sIter.aPhrase ){ + return SQLITE_NOMEM; + } + memset(sIter.aPhrase, 0, nByte); + + /* Initialize the contents of the SnippetIter object. Then iterate through + ** the set of phrases in the expression to populate the aPhrase[] array. + */ + sIter.pCsr = pCsr; + sIter.iCol = iCol; + sIter.nSnippet = nSnippet; + sIter.nPhrase = nList; + sIter.iCurrent = -1; + (void)fts3ExprIterate(pCsr->pExpr, fts3SnippetFindPositions, (void *)&sIter); + + /* Set the *pmSeen output variable. */ + for(i=0; iiCol = iCol; + while( !fts3SnippetNextCandidate(&sIter) ){ + int iPos; + int iScore; + u64 mCover; + u64 mHighlight; + fts3SnippetDetails(&sIter, mCovered, &iPos, &iScore, &mCover, &mHighlight); + assert( iScore>=0 ); + if( iScore>iBestScore ){ + pFragment->iPos = iPos; + pFragment->hlmask = mHighlight; + pFragment->covered = mCover; + iBestScore = iScore; + } + } + + sqlite3_free(sIter.aPhrase); + *piScore = iBestScore; + return SQLITE_OK; +} + + +/* +** Append a string to the string-buffer passed as the first argument. +** +** If nAppend is negative, then the length of the string zAppend is +** determined using strlen(). +*/ +static int fts3StringAppend( + StrBuffer *pStr, /* Buffer to append to */ + const char *zAppend, /* Pointer to data to append to buffer */ + int nAppend /* Size of zAppend in bytes (or -1) */ +){ + if( nAppend<0 ){ + nAppend = (int)strlen(zAppend); + } + + /* If there is insufficient space allocated at StrBuffer.z, use realloc() + ** to grow the buffer until so that it is big enough to accomadate the + ** appended data. + */ + if( pStr->n+nAppend+1>=pStr->nAlloc ){ + int nAlloc = pStr->nAlloc+nAppend+100; + char *zNew = sqlite3_realloc(pStr->z, nAlloc); + if( !zNew ){ + return SQLITE_NOMEM; + } + pStr->z = zNew; + pStr->nAlloc = nAlloc; + } + + /* Append the data to the string buffer. */ + memcpy(&pStr->z[pStr->n], zAppend, nAppend); + pStr->n += nAppend; + pStr->z[pStr->n] = '\0'; + + return SQLITE_OK; +} + +/* +** The fts3BestSnippet() function often selects snippets that end with a +** query term. That is, the final term of the snippet is always a term +** that requires highlighting. For example, if 'X' is a highlighted term +** and '.' is a non-highlighted term, BestSnippet() may select: +** +** ........X.....X +** +** This function "shifts" the beginning of the snippet forward in the +** document so that there are approximately the same number of +** non-highlighted terms to the right of the final highlighted term as there +** are to the left of the first highlighted term. For example, to this: +** +** ....X.....X.... +** +** This is done as part of extracting the snippet text, not when selecting +** the snippet. Snippet selection is done based on doclists only, so there +** is no way for fts3BestSnippet() to know whether or not the document +** actually contains terms that follow the final highlighted term. +*/ +static int fts3SnippetShift( + Fts3Table *pTab, /* FTS3 table snippet comes from */ + int iLangid, /* Language id to use in tokenizing */ + int nSnippet, /* Number of tokens desired for snippet */ + const char *zDoc, /* Document text to extract snippet from */ + int nDoc, /* Size of buffer zDoc in bytes */ + int *piPos, /* IN/OUT: First token of snippet */ + u64 *pHlmask /* IN/OUT: Mask of tokens to highlight */ +){ + u64 hlmask = *pHlmask; /* Local copy of initial highlight-mask */ + + if( hlmask ){ + int nLeft; /* Tokens to the left of first highlight */ + int nRight; /* Tokens to the right of last highlight */ + int nDesired; /* Ideal number of tokens to shift forward */ + + for(nLeft=0; !(hlmask & ((u64)1 << nLeft)); nLeft++); + for(nRight=0; !(hlmask & ((u64)1 << (nSnippet-1-nRight))); nRight++); + nDesired = (nLeft-nRight)/2; + + /* Ideally, the start of the snippet should be pushed forward in the + ** document nDesired tokens. This block checks if there are actually + ** nDesired tokens to the right of the snippet. If so, *piPos and + ** *pHlMask are updated to shift the snippet nDesired tokens to the + ** right. Otherwise, the snippet is shifted by the number of tokens + ** available. + */ + if( nDesired>0 ){ + int nShift; /* Number of tokens to shift snippet by */ + int iCurrent = 0; /* Token counter */ + int rc; /* Return Code */ + sqlite3_tokenizer_module *pMod; + sqlite3_tokenizer_cursor *pC; + pMod = (sqlite3_tokenizer_module *)pTab->pTokenizer->pModule; + + /* Open a cursor on zDoc/nDoc. Check if there are (nSnippet+nDesired) + ** or more tokens in zDoc/nDoc. + */ + rc = sqlite3Fts3OpenTokenizer(pTab->pTokenizer, iLangid, zDoc, nDoc, &pC); + if( rc!=SQLITE_OK ){ + return rc; + } + while( rc==SQLITE_OK && iCurrent<(nSnippet+nDesired) ){ + const char *ZDUMMY; int DUMMY1 = 0, DUMMY2 = 0, DUMMY3 = 0; + rc = pMod->xNext(pC, &ZDUMMY, &DUMMY1, &DUMMY2, &DUMMY3, &iCurrent); + } + pMod->xClose(pC); + if( rc!=SQLITE_OK && rc!=SQLITE_DONE ){ return rc; } + + nShift = (rc==SQLITE_DONE)+iCurrent-nSnippet; + assert( nShift<=nDesired ); + if( nShift>0 ){ + *piPos += nShift; + *pHlmask = hlmask >> nShift; + } + } + } + return SQLITE_OK; +} + +/* +** Extract the snippet text for fragment pFragment from cursor pCsr and +** append it to string buffer pOut. +*/ +static int fts3SnippetText( + Fts3Cursor *pCsr, /* FTS3 Cursor */ + SnippetFragment *pFragment, /* Snippet to extract */ + int iFragment, /* Fragment number */ + int isLast, /* True for final fragment in snippet */ + int nSnippet, /* Number of tokens in extracted snippet */ + const char *zOpen, /* String inserted before highlighted term */ + const char *zClose, /* String inserted after highlighted term */ + const char *zEllipsis, /* String inserted between snippets */ + StrBuffer *pOut /* Write output here */ +){ + Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab; + int rc; /* Return code */ + const char *zDoc; /* Document text to extract snippet from */ + int nDoc; /* Size of zDoc in bytes */ + int iCurrent = 0; /* Current token number of document */ + int iEnd = 0; /* Byte offset of end of current token */ + int isShiftDone = 0; /* True after snippet is shifted */ + int iPos = pFragment->iPos; /* First token of snippet */ + u64 hlmask = pFragment->hlmask; /* Highlight-mask for snippet */ + int iCol = pFragment->iCol+1; /* Query column to extract text from */ + sqlite3_tokenizer_module *pMod; /* Tokenizer module methods object */ + sqlite3_tokenizer_cursor *pC; /* Tokenizer cursor open on zDoc/nDoc */ + + zDoc = (const char *)sqlite3_column_text(pCsr->pStmt, iCol); + if( zDoc==0 ){ + if( sqlite3_column_type(pCsr->pStmt, iCol)!=SQLITE_NULL ){ + return SQLITE_NOMEM; + } + return SQLITE_OK; + } + nDoc = sqlite3_column_bytes(pCsr->pStmt, iCol); + + /* Open a token cursor on the document. */ + pMod = (sqlite3_tokenizer_module *)pTab->pTokenizer->pModule; + rc = sqlite3Fts3OpenTokenizer(pTab->pTokenizer, pCsr->iLangid, zDoc,nDoc,&pC); + if( rc!=SQLITE_OK ){ + return rc; + } + + while( rc==SQLITE_OK ){ + const char *ZDUMMY; /* Dummy argument used with tokenizer */ + int DUMMY1 = -1; /* Dummy argument used with tokenizer */ + int iBegin = 0; /* Offset in zDoc of start of token */ + int iFin = 0; /* Offset in zDoc of end of token */ + int isHighlight = 0; /* True for highlighted terms */ + + /* Variable DUMMY1 is initialized to a negative value above. Elsewhere + ** in the FTS code the variable that the third argument to xNext points to + ** is initialized to zero before the first (*but not necessarily + ** subsequent*) call to xNext(). This is done for a particular application + ** that needs to know whether or not the tokenizer is being used for + ** snippet generation or for some other purpose. + ** + ** Extreme care is required when writing code to depend on this + ** initialization. It is not a documented part of the tokenizer interface. + ** If a tokenizer is used directly by any code outside of FTS, this + ** convention might not be respected. */ + rc = pMod->xNext(pC, &ZDUMMY, &DUMMY1, &iBegin, &iFin, &iCurrent); + if( rc!=SQLITE_OK ){ + if( rc==SQLITE_DONE ){ + /* Special case - the last token of the snippet is also the last token + ** of the column. Append any punctuation that occurred between the end + ** of the previous token and the end of the document to the output. + ** Then break out of the loop. */ + rc = fts3StringAppend(pOut, &zDoc[iEnd], -1); + } + break; + } + if( iCurrentiLangid, nSnippet, &zDoc[iBegin], n, &iPos, &hlmask + ); + isShiftDone = 1; + + /* Now that the shift has been done, check if the initial "..." are + ** required. They are required if (a) this is not the first fragment, + ** or (b) this fragment does not begin at position 0 of its column. + */ + if( rc==SQLITE_OK && (iPos>0 || iFragment>0) ){ + rc = fts3StringAppend(pOut, zEllipsis, -1); + } + if( rc!=SQLITE_OK || iCurrent=(iPos+nSnippet) ){ + if( isLast ){ + rc = fts3StringAppend(pOut, zEllipsis, -1); + } + break; + } + + /* Set isHighlight to true if this term should be highlighted. */ + isHighlight = (hlmask & ((u64)1 << (iCurrent-iPos)))!=0; + + if( iCurrent>iPos ) rc = fts3StringAppend(pOut, &zDoc[iEnd], iBegin-iEnd); + if( rc==SQLITE_OK && isHighlight ) rc = fts3StringAppend(pOut, zOpen, -1); + if( rc==SQLITE_OK ) rc = fts3StringAppend(pOut, &zDoc[iBegin], iFin-iBegin); + if( rc==SQLITE_OK && isHighlight ) rc = fts3StringAppend(pOut, zClose, -1); + + iEnd = iFin; + } + + pMod->xClose(pC); + return rc; +} + + +/* +** This function is used to count the entries in a column-list (a +** delta-encoded list of term offsets within a single column of a single +** row). When this function is called, *ppCollist should point to the +** beginning of the first varint in the column-list (the varint that +** contains the position of the first matching term in the column data). +** Before returning, *ppCollist is set to point to the first byte after +** the last varint in the column-list (either the 0x00 signifying the end +** of the position-list, or the 0x01 that precedes the column number of +** the next column in the position-list). +** +** The number of elements in the column-list is returned. +*/ +static int fts3ColumnlistCount(char **ppCollist){ + char *pEnd = *ppCollist; + char c = 0; + int nEntry = 0; + + /* A column-list is terminated by either a 0x01 or 0x00. */ + while( 0xFE & (*pEnd | c) ){ + c = *pEnd++ & 0x80; + if( !c ) nEntry++; + } + + *ppCollist = pEnd; + return nEntry; +} + +/* +** fts3ExprIterate() callback used to collect the "global" matchinfo stats +** for a single query. +** +** fts3ExprIterate() callback to load the 'global' elements of a +** FTS3_MATCHINFO_HITS matchinfo array. The global stats are those elements +** of the matchinfo array that are constant for all rows returned by the +** current query. +** +** Argument pCtx is actually a pointer to a struct of type MatchInfo. This +** function populates Matchinfo.aMatchinfo[] as follows: +** +** for(iCol=0; iColpCursor, pExpr, &p->aMatchinfo[3*iPhrase*p->nCol] + ); +} + +/* +** fts3ExprIterate() callback used to collect the "local" part of the +** FTS3_MATCHINFO_HITS array. The local stats are those elements of the +** array that are different for each row returned by the query. +*/ +static int fts3ExprLocalHitsCb( + Fts3Expr *pExpr, /* Phrase expression node */ + int iPhrase, /* Phrase number */ + void *pCtx /* Pointer to MatchInfo structure */ +){ + int rc = SQLITE_OK; + MatchInfo *p = (MatchInfo *)pCtx; + int iStart = iPhrase * p->nCol * 3; + int i; + + for(i=0; inCol && rc==SQLITE_OK; i++){ + char *pCsr; + rc = sqlite3Fts3EvalPhrasePoslist(p->pCursor, pExpr, i, &pCsr); + if( pCsr ){ + p->aMatchinfo[iStart+i*3] = fts3ColumnlistCount(&pCsr); + }else{ + p->aMatchinfo[iStart+i*3] = 0; + } + } + + return rc; +} + +static int fts3MatchinfoCheck( + Fts3Table *pTab, + char cArg, + char **pzErr +){ + if( (cArg==FTS3_MATCHINFO_NPHRASE) + || (cArg==FTS3_MATCHINFO_NCOL) + || (cArg==FTS3_MATCHINFO_NDOC && pTab->bFts4) + || (cArg==FTS3_MATCHINFO_AVGLENGTH && pTab->bFts4) + || (cArg==FTS3_MATCHINFO_LENGTH && pTab->bHasDocsize) + || (cArg==FTS3_MATCHINFO_LCS) + || (cArg==FTS3_MATCHINFO_HITS) + ){ + return SQLITE_OK; + } + *pzErr = sqlite3_mprintf("unrecognized matchinfo request: %c", cArg); + return SQLITE_ERROR; +} + +static int fts3MatchinfoSize(MatchInfo *pInfo, char cArg){ + int nVal; /* Number of integers output by cArg */ + + switch( cArg ){ + case FTS3_MATCHINFO_NDOC: + case FTS3_MATCHINFO_NPHRASE: + case FTS3_MATCHINFO_NCOL: + nVal = 1; + break; + + case FTS3_MATCHINFO_AVGLENGTH: + case FTS3_MATCHINFO_LENGTH: + case FTS3_MATCHINFO_LCS: + nVal = pInfo->nCol; + break; + + default: + assert( cArg==FTS3_MATCHINFO_HITS ); + nVal = pInfo->nCol * pInfo->nPhrase * 3; + break; + } + + return nVal; +} + +static int fts3MatchinfoSelectDoctotal( + Fts3Table *pTab, + sqlite3_stmt **ppStmt, + sqlite3_int64 *pnDoc, + const char **paLen +){ + sqlite3_stmt *pStmt; + const char *a; + sqlite3_int64 nDoc; + + if( !*ppStmt ){ + int rc = sqlite3Fts3SelectDoctotal(pTab, ppStmt); + if( rc!=SQLITE_OK ) return rc; + } + pStmt = *ppStmt; + assert( sqlite3_data_count(pStmt)==1 ); + + a = sqlite3_column_blob(pStmt, 0); + a += sqlite3Fts3GetVarint(a, &nDoc); + if( nDoc==0 ) return FTS_CORRUPT_VTAB; + *pnDoc = (u32)nDoc; + + if( paLen ) *paLen = a; + return SQLITE_OK; +} + +/* +** An instance of the following structure is used to store state while +** iterating through a multi-column position-list corresponding to the +** hits for a single phrase on a single row in order to calculate the +** values for a matchinfo() FTS3_MATCHINFO_LCS request. +*/ +typedef struct LcsIterator LcsIterator; +struct LcsIterator { + Fts3Expr *pExpr; /* Pointer to phrase expression */ + int iPosOffset; /* Tokens count up to end of this phrase */ + char *pRead; /* Cursor used to iterate through aDoclist */ + int iPos; /* Current position */ +}; + +/* +** If LcsIterator.iCol is set to the following value, the iterator has +** finished iterating through all offsets for all columns. +*/ +#define LCS_ITERATOR_FINISHED 0x7FFFFFFF; + +static int fts3MatchinfoLcsCb( + Fts3Expr *pExpr, /* Phrase expression node */ + int iPhrase, /* Phrase number (numbered from zero) */ + void *pCtx /* Pointer to MatchInfo structure */ +){ + LcsIterator *aIter = (LcsIterator *)pCtx; + aIter[iPhrase].pExpr = pExpr; + return SQLITE_OK; +} + +/* +** Advance the iterator passed as an argument to the next position. Return +** 1 if the iterator is at EOF or if it now points to the start of the +** position list for the next column. +*/ +static int fts3LcsIteratorAdvance(LcsIterator *pIter){ + char *pRead = pIter->pRead; + sqlite3_int64 iRead; + int rc = 0; + + pRead += sqlite3Fts3GetVarint(pRead, &iRead); + if( iRead==0 || iRead==1 ){ + pRead = 0; + rc = 1; + }else{ + pIter->iPos += (int)(iRead-2); + } + + pIter->pRead = pRead; + return rc; +} + +/* +** This function implements the FTS3_MATCHINFO_LCS matchinfo() flag. +** +** If the call is successful, the longest-common-substring lengths for each +** column are written into the first nCol elements of the pInfo->aMatchinfo[] +** array before returning. SQLITE_OK is returned in this case. +** +** Otherwise, if an error occurs, an SQLite error code is returned and the +** data written to the first nCol elements of pInfo->aMatchinfo[] is +** undefined. +*/ +static int fts3MatchinfoLcs(Fts3Cursor *pCsr, MatchInfo *pInfo){ + LcsIterator *aIter; + int i; + int iCol; + int nToken = 0; + + /* Allocate and populate the array of LcsIterator objects. The array + ** contains one element for each matchable phrase in the query. + **/ + aIter = sqlite3_malloc(sizeof(LcsIterator) * pCsr->nPhrase); + if( !aIter ) return SQLITE_NOMEM; + memset(aIter, 0, sizeof(LcsIterator) * pCsr->nPhrase); + (void)fts3ExprIterate(pCsr->pExpr, fts3MatchinfoLcsCb, (void*)aIter); + + for(i=0; inPhrase; i++){ + LcsIterator *pIter = &aIter[i]; + nToken -= pIter->pExpr->pPhrase->nToken; + pIter->iPosOffset = nToken; + } + + for(iCol=0; iColnCol; iCol++){ + int nLcs = 0; /* LCS value for this column */ + int nLive = 0; /* Number of iterators in aIter not at EOF */ + + for(i=0; inPhrase; i++){ + int rc; + LcsIterator *pIt = &aIter[i]; + rc = sqlite3Fts3EvalPhrasePoslist(pCsr, pIt->pExpr, iCol, &pIt->pRead); + if( rc!=SQLITE_OK ) return rc; + if( pIt->pRead ){ + pIt->iPos = pIt->iPosOffset; + fts3LcsIteratorAdvance(&aIter[i]); + nLive++; + } + } + + while( nLive>0 ){ + LcsIterator *pAdv = 0; /* The iterator to advance by one position */ + int nThisLcs = 0; /* LCS for the current iterator positions */ + + for(i=0; inPhrase; i++){ + LcsIterator *pIter = &aIter[i]; + if( pIter->pRead==0 ){ + /* This iterator is already at EOF for this column. */ + nThisLcs = 0; + }else{ + if( pAdv==0 || pIter->iPosiPos ){ + pAdv = pIter; + } + if( nThisLcs==0 || pIter->iPos==pIter[-1].iPos ){ + nThisLcs++; + }else{ + nThisLcs = 1; + } + if( nThisLcs>nLcs ) nLcs = nThisLcs; + } + } + if( fts3LcsIteratorAdvance(pAdv) ) nLive--; + } + + pInfo->aMatchinfo[iCol] = nLcs; + } + + sqlite3_free(aIter); + return SQLITE_OK; +} + +/* +** Populate the buffer pInfo->aMatchinfo[] with an array of integers to +** be returned by the matchinfo() function. Argument zArg contains the +** format string passed as the second argument to matchinfo (or the +** default value "pcx" if no second argument was specified). The format +** string has already been validated and the pInfo->aMatchinfo[] array +** is guaranteed to be large enough for the output. +** +** If bGlobal is true, then populate all fields of the matchinfo() output. +** If it is false, then assume that those fields that do not change between +** rows (i.e. FTS3_MATCHINFO_NPHRASE, NCOL, NDOC, AVGLENGTH and part of HITS) +** have already been populated. +** +** Return SQLITE_OK if successful, or an SQLite error code if an error +** occurs. If a value other than SQLITE_OK is returned, the state the +** pInfo->aMatchinfo[] buffer is left in is undefined. +*/ +static int fts3MatchinfoValues( + Fts3Cursor *pCsr, /* FTS3 cursor object */ + int bGlobal, /* True to grab the global stats */ + MatchInfo *pInfo, /* Matchinfo context object */ + const char *zArg /* Matchinfo format string */ +){ + int rc = SQLITE_OK; + int i; + Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab; + sqlite3_stmt *pSelect = 0; + + for(i=0; rc==SQLITE_OK && zArg[i]; i++){ + + switch( zArg[i] ){ + case FTS3_MATCHINFO_NPHRASE: + if( bGlobal ) pInfo->aMatchinfo[0] = pInfo->nPhrase; + break; + + case FTS3_MATCHINFO_NCOL: + if( bGlobal ) pInfo->aMatchinfo[0] = pInfo->nCol; + break; + + case FTS3_MATCHINFO_NDOC: + if( bGlobal ){ + sqlite3_int64 nDoc = 0; + rc = fts3MatchinfoSelectDoctotal(pTab, &pSelect, &nDoc, 0); + pInfo->aMatchinfo[0] = (u32)nDoc; + } + break; + + case FTS3_MATCHINFO_AVGLENGTH: + if( bGlobal ){ + sqlite3_int64 nDoc; /* Number of rows in table */ + const char *a; /* Aggregate column length array */ + + rc = fts3MatchinfoSelectDoctotal(pTab, &pSelect, &nDoc, &a); + if( rc==SQLITE_OK ){ + int iCol; + for(iCol=0; iColnCol; iCol++){ + u32 iVal; + sqlite3_int64 nToken; + a += sqlite3Fts3GetVarint(a, &nToken); + iVal = (u32)(((u32)(nToken&0xffffffff)+nDoc/2)/nDoc); + pInfo->aMatchinfo[iCol] = iVal; + } + } + } + break; + + case FTS3_MATCHINFO_LENGTH: { + sqlite3_stmt *pSelectDocsize = 0; + rc = sqlite3Fts3SelectDocsize(pTab, pCsr->iPrevId, &pSelectDocsize); + if( rc==SQLITE_OK ){ + int iCol; + const char *a = sqlite3_column_blob(pSelectDocsize, 0); + for(iCol=0; iColnCol; iCol++){ + sqlite3_int64 nToken; + a += sqlite3Fts3GetVarint(a, &nToken); + pInfo->aMatchinfo[iCol] = (u32)nToken; + } + } + sqlite3_reset(pSelectDocsize); + break; + } + + case FTS3_MATCHINFO_LCS: + rc = fts3ExprLoadDoclists(pCsr, 0, 0); + if( rc==SQLITE_OK ){ + rc = fts3MatchinfoLcs(pCsr, pInfo); + } + break; + + default: { + Fts3Expr *pExpr; + assert( zArg[i]==FTS3_MATCHINFO_HITS ); + pExpr = pCsr->pExpr; + rc = fts3ExprLoadDoclists(pCsr, 0, 0); + if( rc!=SQLITE_OK ) break; + if( bGlobal ){ + if( pCsr->pDeferred ){ + rc = fts3MatchinfoSelectDoctotal(pTab, &pSelect, &pInfo->nDoc, 0); + if( rc!=SQLITE_OK ) break; + } + rc = fts3ExprIterate(pExpr, fts3ExprGlobalHitsCb,(void*)pInfo); + if( rc!=SQLITE_OK ) break; + } + (void)fts3ExprIterate(pExpr, fts3ExprLocalHitsCb,(void*)pInfo); + break; + } + } + + pInfo->aMatchinfo += fts3MatchinfoSize(pInfo, zArg[i]); + } + + sqlite3_reset(pSelect); + return rc; +} + + +/* +** Populate pCsr->aMatchinfo[] with data for the current row. The +** 'matchinfo' data is an array of 32-bit unsigned integers (C type u32). +*/ +static int fts3GetMatchinfo( + Fts3Cursor *pCsr, /* FTS3 Cursor object */ + const char *zArg /* Second argument to matchinfo() function */ +){ + MatchInfo sInfo; + Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab; + int rc = SQLITE_OK; + int bGlobal = 0; /* Collect 'global' stats as well as local */ + + memset(&sInfo, 0, sizeof(MatchInfo)); + sInfo.pCursor = pCsr; + sInfo.nCol = pTab->nColumn; + + /* If there is cached matchinfo() data, but the format string for the + ** cache does not match the format string for this request, discard + ** the cached data. */ + if( pCsr->zMatchinfo && strcmp(pCsr->zMatchinfo, zArg) ){ + assert( pCsr->aMatchinfo ); + sqlite3_free(pCsr->aMatchinfo); + pCsr->zMatchinfo = 0; + pCsr->aMatchinfo = 0; + } + + /* If Fts3Cursor.aMatchinfo[] is NULL, then this is the first time the + ** matchinfo function has been called for this query. In this case + ** allocate the array used to accumulate the matchinfo data and + ** initialize those elements that are constant for every row. + */ + if( pCsr->aMatchinfo==0 ){ + int nMatchinfo = 0; /* Number of u32 elements in match-info */ + int nArg; /* Bytes in zArg */ + int i; /* Used to iterate through zArg */ + + /* Determine the number of phrases in the query */ + pCsr->nPhrase = fts3ExprPhraseCount(pCsr->pExpr); + sInfo.nPhrase = pCsr->nPhrase; + + /* Determine the number of integers in the buffer returned by this call. */ + for(i=0; zArg[i]; i++){ + nMatchinfo += fts3MatchinfoSize(&sInfo, zArg[i]); + } + + /* Allocate space for Fts3Cursor.aMatchinfo[] and Fts3Cursor.zMatchinfo. */ + nArg = (int)strlen(zArg); + pCsr->aMatchinfo = (u32 *)sqlite3_malloc(sizeof(u32)*nMatchinfo + nArg + 1); + if( !pCsr->aMatchinfo ) return SQLITE_NOMEM; + + pCsr->zMatchinfo = (char *)&pCsr->aMatchinfo[nMatchinfo]; + pCsr->nMatchinfo = nMatchinfo; + memcpy(pCsr->zMatchinfo, zArg, nArg+1); + memset(pCsr->aMatchinfo, 0, sizeof(u32)*nMatchinfo); + pCsr->isMatchinfoNeeded = 1; + bGlobal = 1; + } + + sInfo.aMatchinfo = pCsr->aMatchinfo; + sInfo.nPhrase = pCsr->nPhrase; + if( pCsr->isMatchinfoNeeded ){ + rc = fts3MatchinfoValues(pCsr, bGlobal, &sInfo, zArg); + pCsr->isMatchinfoNeeded = 0; + } + + return rc; +} + +/* +** Implementation of snippet() function. +*/ +void sqlite3Fts3Snippet( + sqlite3_context *pCtx, /* SQLite function call context */ + Fts3Cursor *pCsr, /* Cursor object */ + const char *zStart, /* Snippet start text - "" */ + const char *zEnd, /* Snippet end text - "" */ + const char *zEllipsis, /* Snippet ellipsis text - "..." */ + int iCol, /* Extract snippet from this column */ + int nToken /* Approximate number of tokens in snippet */ +){ + Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab; + int rc = SQLITE_OK; + int i; + StrBuffer res = {0, 0, 0}; + + /* The returned text includes up to four fragments of text extracted from + ** the data in the current row. The first iteration of the for(...) loop + ** below attempts to locate a single fragment of text nToken tokens in + ** size that contains at least one instance of all phrases in the query + ** expression that appear in the current row. If such a fragment of text + ** cannot be found, the second iteration of the loop attempts to locate + ** a pair of fragments, and so on. + */ + int nSnippet = 0; /* Number of fragments in this snippet */ + SnippetFragment aSnippet[4]; /* Maximum of 4 fragments per snippet */ + int nFToken = -1; /* Number of tokens in each fragment */ + + if( !pCsr->pExpr ){ + sqlite3_result_text(pCtx, "", 0, SQLITE_STATIC); + return; + } + + for(nSnippet=1; 1; nSnippet++){ + + int iSnip; /* Loop counter 0..nSnippet-1 */ + u64 mCovered = 0; /* Bitmask of phrases covered by snippet */ + u64 mSeen = 0; /* Bitmask of phrases seen by BestSnippet() */ + + if( nToken>=0 ){ + nFToken = (nToken+nSnippet-1) / nSnippet; + }else{ + nFToken = -1 * nToken; + } + + for(iSnip=0; iSnipnColumn; iRead++){ + SnippetFragment sF = {0, 0, 0, 0}; + int iS; + if( iCol>=0 && iRead!=iCol ) continue; + + /* Find the best snippet of nFToken tokens in column iRead. */ + rc = fts3BestSnippet(nFToken, pCsr, iRead, mCovered, &mSeen, &sF, &iS); + if( rc!=SQLITE_OK ){ + goto snippet_out; + } + if( iS>iBestScore ){ + *pFragment = sF; + iBestScore = iS; + } + } + + mCovered |= pFragment->covered; + } + + /* If all query phrases seen by fts3BestSnippet() are present in at least + ** one of the nSnippet snippet fragments, break out of the loop. + */ + assert( (mCovered&mSeen)==mCovered ); + if( mSeen==mCovered || nSnippet==SizeofArray(aSnippet) ) break; + } + + assert( nFToken>0 ); + + for(i=0; ipCsr, pExpr, p->iCol, &pList); + nTerm = pExpr->pPhrase->nToken; + if( pList ){ + fts3GetDeltaPosition(&pList, &iPos); + assert( iPos>=0 ); + } + + for(iTerm=0; iTermaTerm[p->iTerm++]; + pT->iOff = nTerm-iTerm-1; + pT->pList = pList; + pT->iPos = iPos; + } + + return rc; +} + +/* +** Implementation of offsets() function. +*/ +void sqlite3Fts3Offsets( + sqlite3_context *pCtx, /* SQLite function call context */ + Fts3Cursor *pCsr /* Cursor object */ +){ + Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab; + sqlite3_tokenizer_module const *pMod = pTab->pTokenizer->pModule; + int rc; /* Return Code */ + int nToken; /* Number of tokens in query */ + int iCol; /* Column currently being processed */ + StrBuffer res = {0, 0, 0}; /* Result string */ + TermOffsetCtx sCtx; /* Context for fts3ExprTermOffsetInit() */ + + if( !pCsr->pExpr ){ + sqlite3_result_text(pCtx, "", 0, SQLITE_STATIC); + return; + } + + memset(&sCtx, 0, sizeof(sCtx)); + assert( pCsr->isRequireSeek==0 ); + + /* Count the number of terms in the query */ + rc = fts3ExprLoadDoclists(pCsr, 0, &nToken); + if( rc!=SQLITE_OK ) goto offsets_out; + + /* Allocate the array of TermOffset iterators. */ + sCtx.aTerm = (TermOffset *)sqlite3_malloc(sizeof(TermOffset)*nToken); + if( 0==sCtx.aTerm ){ + rc = SQLITE_NOMEM; + goto offsets_out; + } + sCtx.iDocid = pCsr->iPrevId; + sCtx.pCsr = pCsr; + + /* Loop through the table columns, appending offset information to + ** string-buffer res for each column. + */ + for(iCol=0; iColnColumn; iCol++){ + sqlite3_tokenizer_cursor *pC; /* Tokenizer cursor */ + const char *ZDUMMY; /* Dummy argument used with xNext() */ + int NDUMMY = 0; /* Dummy argument used with xNext() */ + int iStart = 0; + int iEnd = 0; + int iCurrent = 0; + const char *zDoc; + int nDoc; + + /* Initialize the contents of sCtx.aTerm[] for column iCol. There is + ** no way that this operation can fail, so the return code from + ** fts3ExprIterate() can be discarded. + */ + sCtx.iCol = iCol; + sCtx.iTerm = 0; + (void)fts3ExprIterate(pCsr->pExpr, fts3ExprTermOffsetInit, (void *)&sCtx); + + /* Retreive the text stored in column iCol. If an SQL NULL is stored + ** in column iCol, jump immediately to the next iteration of the loop. + ** If an OOM occurs while retrieving the data (this can happen if SQLite + ** needs to transform the data from utf-16 to utf-8), return SQLITE_NOMEM + ** to the caller. + */ + zDoc = (const char *)sqlite3_column_text(pCsr->pStmt, iCol+1); + nDoc = sqlite3_column_bytes(pCsr->pStmt, iCol+1); + if( zDoc==0 ){ + if( sqlite3_column_type(pCsr->pStmt, iCol+1)==SQLITE_NULL ){ + continue; + } + rc = SQLITE_NOMEM; + goto offsets_out; + } + + /* Initialize a tokenizer iterator to iterate through column iCol. */ + rc = sqlite3Fts3OpenTokenizer(pTab->pTokenizer, pCsr->iLangid, + zDoc, nDoc, &pC + ); + if( rc!=SQLITE_OK ) goto offsets_out; + + rc = pMod->xNext(pC, &ZDUMMY, &NDUMMY, &iStart, &iEnd, &iCurrent); + while( rc==SQLITE_OK ){ + int i; /* Used to loop through terms */ + int iMinPos = 0x7FFFFFFF; /* Position of next token */ + TermOffset *pTerm = 0; /* TermOffset associated with next token */ + + for(i=0; ipList && (pT->iPos-pT->iOff)iPos-pT->iOff; + pTerm = pT; + } + } + + if( !pTerm ){ + /* All offsets for this column have been gathered. */ + rc = SQLITE_DONE; + }else{ + assert( iCurrent<=iMinPos ); + if( 0==(0xFE&*pTerm->pList) ){ + pTerm->pList = 0; + }else{ + fts3GetDeltaPosition(&pTerm->pList, &pTerm->iPos); + } + while( rc==SQLITE_OK && iCurrentxNext(pC, &ZDUMMY, &NDUMMY, &iStart, &iEnd, &iCurrent); + } + if( rc==SQLITE_OK ){ + char aBuffer[64]; + sqlite3_snprintf(sizeof(aBuffer), aBuffer, + "%d %d %d %d ", iCol, pTerm-sCtx.aTerm, iStart, iEnd-iStart + ); + rc = fts3StringAppend(&res, aBuffer, -1); + }else if( rc==SQLITE_DONE && pTab->zContentTbl==0 ){ + rc = FTS_CORRUPT_VTAB; + } + } + } + if( rc==SQLITE_DONE ){ + rc = SQLITE_OK; + } + + pMod->xClose(pC); + if( rc!=SQLITE_OK ) goto offsets_out; + } + + offsets_out: + sqlite3_free(sCtx.aTerm); + assert( rc!=SQLITE_DONE ); + sqlite3Fts3SegmentsClose(pTab); + if( rc!=SQLITE_OK ){ + sqlite3_result_error_code(pCtx, rc); + sqlite3_free(res.z); + }else{ + sqlite3_result_text(pCtx, res.z, res.n-1, sqlite3_free); + } + return; +} + +/* +** Implementation of matchinfo() function. +*/ +void sqlite3Fts3Matchinfo( + sqlite3_context *pContext, /* Function call context */ + Fts3Cursor *pCsr, /* FTS3 table cursor */ + const char *zArg /* Second arg to matchinfo() function */ +){ + Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab; + int rc; + int i; + const char *zFormat; + + if( zArg ){ + for(i=0; zArg[i]; i++){ + char *zErr = 0; + if( fts3MatchinfoCheck(pTab, zArg[i], &zErr) ){ + sqlite3_result_error(pContext, zErr, -1); + sqlite3_free(zErr); + return; + } + } + zFormat = zArg; + }else{ + zFormat = FTS3_MATCHINFO_DEFAULT; + } + + if( !pCsr->pExpr ){ + sqlite3_result_blob(pContext, "", 0, SQLITE_STATIC); + return; + } + + /* Retrieve matchinfo() data. */ + rc = fts3GetMatchinfo(pCsr, zFormat); + sqlite3Fts3SegmentsClose(pTab); + + if( rc!=SQLITE_OK ){ + sqlite3_result_error_code(pContext, rc); + }else{ + int n = pCsr->nMatchinfo * sizeof(u32); + sqlite3_result_blob(pContext, pCsr->aMatchinfo, n, SQLITE_TRANSIENT); + } +} + +#endif diff -Nru tracker-0.15.1/src/libtracker-fts/fts3_term.c tracker-0.15.2/src/libtracker-fts/fts3_term.c --- tracker-0.15.1/src/libtracker-fts/fts3_term.c 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/fts3_term.c 2013-02-14 19:30:47.000000000 +0000 @@ -0,0 +1,373 @@ +/* +** 2011 Jan 27 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +****************************************************************************** +** +** This file is not part of the production FTS code. It is only used for +** testing. It contains a virtual table implementation that provides direct +** access to the full-text index of an FTS table. +*/ + +#include "fts3Int.h" +#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) +#ifdef SQLITE_TEST + +#include +#include +#include + +typedef struct Fts3termTable Fts3termTable; +typedef struct Fts3termCursor Fts3termCursor; + +struct Fts3termTable { + sqlite3_vtab base; /* Base class used by SQLite core */ + int iIndex; /* Index for Fts3Table.aIndex[] */ + Fts3Table *pFts3Tab; +}; + +struct Fts3termCursor { + sqlite3_vtab_cursor base; /* Base class used by SQLite core */ + Fts3MultiSegReader csr; /* Must be right after "base" */ + Fts3SegFilter filter; + + int isEof; /* True if cursor is at EOF */ + char *pNext; + + sqlite3_int64 iRowid; /* Current 'rowid' value */ + sqlite3_int64 iDocid; /* Current 'docid' value */ + int iCol; /* Current 'col' value */ + int iPos; /* Current 'pos' value */ +}; + +/* +** Schema of the terms table. +*/ +#define FTS3_TERMS_SCHEMA "CREATE TABLE x(term, docid, col, pos)" + +/* +** This function does all the work for both the xConnect and xCreate methods. +** These tables have no persistent representation of their own, so xConnect +** and xCreate are identical operations. +*/ +static int fts3termConnectMethod( + sqlite3 *db, /* Database connection */ + void *pCtx, /* Non-zero for an fts4prefix table */ + int argc, /* Number of elements in argv array */ + const char * const *argv, /* xCreate/xConnect argument array */ + sqlite3_vtab **ppVtab, /* OUT: New sqlite3_vtab object */ + char **pzErr /* OUT: sqlite3_malloc'd error message */ +){ + char const *zDb; /* Name of database (e.g. "main") */ + char const *zFts3; /* Name of fts3 table */ + int nDb; /* Result of strlen(zDb) */ + int nFts3; /* Result of strlen(zFts3) */ + int nByte; /* Bytes of space to allocate here */ + int rc; /* value returned by declare_vtab() */ + Fts3termTable *p; /* Virtual table object to return */ + int iIndex = 0; + + UNUSED_PARAMETER(pCtx); + if( argc==5 ){ + iIndex = atoi(argv[4]); + argc--; + } + + /* The user should specify a single argument - the name of an fts3 table. */ + if( argc!=4 ){ + *pzErr = sqlite3_mprintf( + "wrong number of arguments to fts4term constructor" + ); + return SQLITE_ERROR; + } + + zDb = argv[1]; + nDb = (int)strlen(zDb); + zFts3 = argv[3]; + nFts3 = (int)strlen(zFts3); + + rc = sqlite3_declare_vtab(db, FTS3_TERMS_SCHEMA); + if( rc!=SQLITE_OK ) return rc; + + nByte = sizeof(Fts3termTable) + sizeof(Fts3Table) + nDb + nFts3 + 2; + p = (Fts3termTable *)sqlite3_malloc(nByte); + if( !p ) return SQLITE_NOMEM; + memset(p, 0, nByte); + + p->pFts3Tab = (Fts3Table *)&p[1]; + p->pFts3Tab->zDb = (char *)&p->pFts3Tab[1]; + p->pFts3Tab->zName = &p->pFts3Tab->zDb[nDb+1]; + p->pFts3Tab->db = db; + p->pFts3Tab->nIndex = iIndex+1; + p->iIndex = iIndex; + + memcpy((char *)p->pFts3Tab->zDb, zDb, nDb); + memcpy((char *)p->pFts3Tab->zName, zFts3, nFts3); + sqlite3Fts3Dequote((char *)p->pFts3Tab->zName); + + *ppVtab = (sqlite3_vtab *)p; + return SQLITE_OK; +} + +/* +** This function does the work for both the xDisconnect and xDestroy methods. +** These tables have no persistent representation of their own, so xDisconnect +** and xDestroy are identical operations. +*/ +static int fts3termDisconnectMethod(sqlite3_vtab *pVtab){ + Fts3termTable *p = (Fts3termTable *)pVtab; + Fts3Table *pFts3 = p->pFts3Tab; + int i; + + /* Free any prepared statements held */ + for(i=0; iaStmt); i++){ + sqlite3_finalize(pFts3->aStmt[i]); + } + sqlite3_free(pFts3->zSegmentsTbl); + sqlite3_free(p); + return SQLITE_OK; +} + +#define FTS4AUX_EQ_CONSTRAINT 1 +#define FTS4AUX_GE_CONSTRAINT 2 +#define FTS4AUX_LE_CONSTRAINT 4 + +/* +** xBestIndex - Analyze a WHERE and ORDER BY clause. +*/ +static int fts3termBestIndexMethod( + sqlite3_vtab *pVTab, + sqlite3_index_info *pInfo +){ + UNUSED_PARAMETER(pVTab); + + /* This vtab naturally does "ORDER BY term, docid, col, pos". */ + if( pInfo->nOrderBy ){ + int i; + for(i=0; inOrderBy; i++){ + if( pInfo->aOrderBy[i].iColumn!=i || pInfo->aOrderBy[i].desc ) break; + } + if( i==pInfo->nOrderBy ){ + pInfo->orderByConsumed = 1; + } + } + + return SQLITE_OK; +} + +/* +** xOpen - Open a cursor. +*/ +static int fts3termOpenMethod(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCsr){ + Fts3termCursor *pCsr; /* Pointer to cursor object to return */ + + UNUSED_PARAMETER(pVTab); + + pCsr = (Fts3termCursor *)sqlite3_malloc(sizeof(Fts3termCursor)); + if( !pCsr ) return SQLITE_NOMEM; + memset(pCsr, 0, sizeof(Fts3termCursor)); + + *ppCsr = (sqlite3_vtab_cursor *)pCsr; + return SQLITE_OK; +} + +/* +** xClose - Close a cursor. +*/ +static int fts3termCloseMethod(sqlite3_vtab_cursor *pCursor){ + Fts3Table *pFts3 = ((Fts3termTable *)pCursor->pVtab)->pFts3Tab; + Fts3termCursor *pCsr = (Fts3termCursor *)pCursor; + + sqlite3Fts3SegmentsClose(pFts3); + sqlite3Fts3SegReaderFinish(&pCsr->csr); + sqlite3_free(pCsr); + return SQLITE_OK; +} + +/* +** xNext - Advance the cursor to the next row, if any. +*/ +static int fts3termNextMethod(sqlite3_vtab_cursor *pCursor){ + Fts3termCursor *pCsr = (Fts3termCursor *)pCursor; + Fts3Table *pFts3 = ((Fts3termTable *)pCursor->pVtab)->pFts3Tab; + int rc; + sqlite3_int64 v; + + /* Increment our pretend rowid value. */ + pCsr->iRowid++; + + /* Advance to the next term in the full-text index. */ + if( pCsr->csr.aDoclist==0 + || pCsr->pNext>=&pCsr->csr.aDoclist[pCsr->csr.nDoclist-1] + ){ + rc = sqlite3Fts3SegReaderStep(pFts3, &pCsr->csr); + if( rc!=SQLITE_ROW ){ + pCsr->isEof = 1; + return rc; + } + + pCsr->iCol = 0; + pCsr->iPos = 0; + pCsr->iDocid = 0; + pCsr->pNext = pCsr->csr.aDoclist; + + /* Read docid */ + pCsr->pNext += sqlite3Fts3GetVarint(pCsr->pNext, &pCsr->iDocid); + } + + pCsr->pNext += sqlite3Fts3GetVarint(pCsr->pNext, &v); + if( v==0 ){ + pCsr->pNext += sqlite3Fts3GetVarint(pCsr->pNext, &v); + pCsr->iDocid += v; + pCsr->pNext += sqlite3Fts3GetVarint(pCsr->pNext, &v); + pCsr->iCol = 0; + pCsr->iPos = 0; + } + + if( v==1 ){ + pCsr->pNext += sqlite3Fts3GetVarint(pCsr->pNext, &v); + pCsr->iCol += (int)v; + pCsr->iPos = 0; + pCsr->pNext += sqlite3Fts3GetVarint(pCsr->pNext, &v); + } + + pCsr->iPos += (int)(v - 2); + + return SQLITE_OK; +} + +/* +** xFilter - Initialize a cursor to point at the start of its data. +*/ +static int fts3termFilterMethod( + sqlite3_vtab_cursor *pCursor, /* The cursor used for this query */ + int idxNum, /* Strategy index */ + const char *idxStr, /* Unused */ + int nVal, /* Number of elements in apVal */ + sqlite3_value **apVal /* Arguments for the indexing scheme */ +){ + Fts3termCursor *pCsr = (Fts3termCursor *)pCursor; + Fts3termTable *p = (Fts3termTable *)pCursor->pVtab; + Fts3Table *pFts3 = p->pFts3Tab; + int rc; + + UNUSED_PARAMETER(nVal); + UNUSED_PARAMETER(idxNum); + UNUSED_PARAMETER(idxStr); + UNUSED_PARAMETER(apVal); + + assert( idxStr==0 && idxNum==0 ); + + /* In case this cursor is being reused, close and zero it. */ + testcase(pCsr->filter.zTerm); + sqlite3Fts3SegReaderFinish(&pCsr->csr); + memset(&pCsr->csr, 0, ((u8*)&pCsr[1]) - (u8*)&pCsr->csr); + + pCsr->filter.flags = FTS3_SEGMENT_REQUIRE_POS|FTS3_SEGMENT_IGNORE_EMPTY; + pCsr->filter.flags |= FTS3_SEGMENT_SCAN; + + rc = sqlite3Fts3SegReaderCursor(pFts3, 0, p->iIndex, FTS3_SEGCURSOR_ALL, + pCsr->filter.zTerm, pCsr->filter.nTerm, 0, 1, &pCsr->csr + ); + if( rc==SQLITE_OK ){ + rc = sqlite3Fts3SegReaderStart(pFts3, &pCsr->csr, &pCsr->filter); + } + if( rc==SQLITE_OK ){ + rc = fts3termNextMethod(pCursor); + } + return rc; +} + +/* +** xEof - Return true if the cursor is at EOF, or false otherwise. +*/ +static int fts3termEofMethod(sqlite3_vtab_cursor *pCursor){ + Fts3termCursor *pCsr = (Fts3termCursor *)pCursor; + return pCsr->isEof; +} + +/* +** xColumn - Return a column value. +*/ +static int fts3termColumnMethod( + sqlite3_vtab_cursor *pCursor, /* Cursor to retrieve value from */ + sqlite3_context *pCtx, /* Context for sqlite3_result_xxx() calls */ + int iCol /* Index of column to read value from */ +){ + Fts3termCursor *p = (Fts3termCursor *)pCursor; + + assert( iCol>=0 && iCol<=3 ); + switch( iCol ){ + case 0: + sqlite3_result_text(pCtx, p->csr.zTerm, p->csr.nTerm, SQLITE_TRANSIENT); + break; + case 1: + sqlite3_result_int64(pCtx, p->iDocid); + break; + case 2: + sqlite3_result_int64(pCtx, p->iCol); + break; + default: + sqlite3_result_int64(pCtx, p->iPos); + break; + } + + return SQLITE_OK; +} + +/* +** xRowid - Return the current rowid for the cursor. +*/ +static int fts3termRowidMethod( + sqlite3_vtab_cursor *pCursor, /* Cursor to retrieve value from */ + sqlite_int64 *pRowid /* OUT: Rowid value */ +){ + Fts3termCursor *pCsr = (Fts3termCursor *)pCursor; + *pRowid = pCsr->iRowid; + return SQLITE_OK; +} + +/* +** Register the fts3term module with database connection db. Return SQLITE_OK +** if successful or an error code if sqlite3_create_module() fails. +*/ +int sqlite3Fts3InitTerm(sqlite3 *db){ + static const sqlite3_module fts3term_module = { + 0, /* iVersion */ + fts3termConnectMethod, /* xCreate */ + fts3termConnectMethod, /* xConnect */ + fts3termBestIndexMethod, /* xBestIndex */ + fts3termDisconnectMethod, /* xDisconnect */ + fts3termDisconnectMethod, /* xDestroy */ + fts3termOpenMethod, /* xOpen */ + fts3termCloseMethod, /* xClose */ + fts3termFilterMethod, /* xFilter */ + fts3termNextMethod, /* xNext */ + fts3termEofMethod, /* xEof */ + fts3termColumnMethod, /* xColumn */ + fts3termRowidMethod, /* xRowid */ + 0, /* xUpdate */ + 0, /* xBegin */ + 0, /* xSync */ + 0, /* xCommit */ + 0, /* xRollback */ + 0, /* xFindFunction */ + 0, /* xRename */ + 0, /* xSavepoint */ + 0, /* xRelease */ + 0 /* xRollbackTo */ + }; + int rc; /* Return code */ + + rc = sqlite3_create_module(db, "fts4term", &fts3term_module, 0); + return rc; +} + +#endif +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ diff -Nru tracker-0.15.1/src/libtracker-fts/fts3_tokenizer.c tracker-0.15.2/src/libtracker-fts/fts3_tokenizer.c --- tracker-0.15.1/src/libtracker-fts/fts3_tokenizer.c 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/fts3_tokenizer.c 2013-02-14 19:30:47.000000000 +0000 @@ -0,0 +1,488 @@ +/* +** 2007 June 22 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +****************************************************************************** +** +** This is part of an SQLite module implementing full-text search. +** This particular file implements the generic tokenizer interface. +*/ + +/* +** The code in this file is only compiled if: +** +** * The FTS3 module is being built as an extension +** (in which case SQLITE_CORE is not defined), or +** +** * The FTS3 module is being built into the core of +** SQLite (in which case SQLITE_ENABLE_FTS3 is defined). +*/ +#include "fts3Int.h" +#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) + +#include +#include + +/* +** Implementation of the SQL scalar function for accessing the underlying +** hash table. This function may be called as follows: +** +** SELECT (); +** SELECT (, ); +** +** where is the name passed as the second argument +** to the sqlite3Fts3InitHashTable() function (e.g. 'fts3_tokenizer'). +** +** If the argument is specified, it must be a blob value +** containing a pointer to be stored as the hash data corresponding +** to the string . If is not specified, then +** the string must already exist in the has table. Otherwise, +** an error is returned. +** +** Whether or not the argument is specified, the value returned +** is a blob containing the pointer stored as the hash data corresponding +** to string (after the hash-table is updated, if applicable). +*/ +static void scalarFunc( + sqlite3_context *context, + int argc, + sqlite3_value **argv +){ + Fts3Hash *pHash; + void *pPtr = 0; + const unsigned char *zName; + int nName; + + assert( argc==1 || argc==2 ); + + pHash = (Fts3Hash *)sqlite3_user_data(context); + + zName = sqlite3_value_text(argv[0]); + nName = sqlite3_value_bytes(argv[0])+1; + + if( argc==2 ){ + void *pOld; + int n = sqlite3_value_bytes(argv[1]); + if( n!=sizeof(pPtr) ){ + sqlite3_result_error(context, "argument type mismatch", -1); + return; + } + pPtr = *(void **)sqlite3_value_blob(argv[1]); + pOld = sqlite3Fts3HashInsert(pHash, (void *)zName, nName, pPtr); + if( pOld==pPtr ){ + sqlite3_result_error(context, "out of memory", -1); + return; + } + }else{ + pPtr = sqlite3Fts3HashFind(pHash, zName, nName); + if( !pPtr ){ + char *zErr = sqlite3_mprintf("unknown tokenizer: %s", zName); + sqlite3_result_error(context, zErr, -1); + sqlite3_free(zErr); + return; + } + } + + sqlite3_result_blob(context, (void *)&pPtr, sizeof(pPtr), SQLITE_TRANSIENT); +} + +int sqlite3Fts3IsIdChar(char c){ + static const char isFtsIdChar[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1x */ + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 2x */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* 3x */ + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 4x */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, /* 5x */ + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 6x */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, /* 7x */ + }; + return (c&0x80 || isFtsIdChar[(int)(c)]); +} + +const char *sqlite3Fts3NextToken(const char *zStr, int *pn){ + const char *z1; + const char *z2 = 0; + + /* Find the start of the next token. */ + z1 = zStr; + while( z2==0 ){ + char c = *z1; + switch( c ){ + case '\0': return 0; /* No more tokens here */ + case '\'': + case '"': + case '`': { + z2 = z1; + while( *++z2 && (*z2!=c || *++z2==c) ); + break; + } + case '[': + z2 = &z1[1]; + while( *z2 && z2[0]!=']' ) z2++; + if( *z2 ) z2++; + break; + + default: + if( sqlite3Fts3IsIdChar(*z1) ){ + z2 = &z1[1]; + while( sqlite3Fts3IsIdChar(*z2) ) z2++; + }else{ + z1++; + } + } + } + + *pn = (int)(z2-z1); + return z1; +} + +int sqlite3Fts3InitTokenizer( + Fts3Hash *pHash, /* Tokenizer hash table */ + const char *zArg, /* Tokenizer name */ + sqlite3_tokenizer **ppTok, /* OUT: Tokenizer (if applicable) */ + char **pzErr /* OUT: Set to malloced error message */ +){ + int rc; + char *z = (char *)zArg; + int n = 0; + char *zCopy; + char *zEnd; /* Pointer to nul-term of zCopy */ + sqlite3_tokenizer_module *m; + + zCopy = sqlite3_mprintf("%s", zArg); + if( !zCopy ) return SQLITE_NOMEM; + zEnd = &zCopy[strlen(zCopy)]; + + z = (char *)sqlite3Fts3NextToken(zCopy, &n); + z[n] = '\0'; + sqlite3Fts3Dequote(z); + + m = (sqlite3_tokenizer_module *)sqlite3Fts3HashFind(pHash,z,(int)strlen(z)+1); + if( !m ){ + *pzErr = sqlite3_mprintf("unknown tokenizer: %s", z); + rc = SQLITE_ERROR; + }else{ + char const **aArg = 0; + int iArg = 0; + z = &z[n+1]; + while( zxCreate(iArg, aArg, ppTok); + assert( rc!=SQLITE_OK || *ppTok ); + if( rc!=SQLITE_OK ){ + *pzErr = sqlite3_mprintf("unknown tokenizer"); + }else{ + (*ppTok)->pModule = m; + } + sqlite3_free((void *)aArg); + } + + sqlite3_free(zCopy); + return rc; +} + + +#ifdef SQLITE_TEST + +#include +#include + +/* +** Implementation of a special SQL scalar function for testing tokenizers +** designed to be used in concert with the Tcl testing framework. This +** function must be called with two or more arguments: +** +** SELECT (, ..., ); +** +** where is the name passed as the second argument +** to the sqlite3Fts3InitHashTable() function (e.g. 'fts3_tokenizer') +** concatenated with the string '_test' (e.g. 'fts3_tokenizer_test'). +** +** The return value is a string that may be interpreted as a Tcl +** list. For each token in the , three elements are +** added to the returned list. The first is the token position, the +** second is the token text (folded, stemmed, etc.) and the third is the +** substring of associated with the token. For example, +** using the built-in "simple" tokenizer: +** +** SELECT fts_tokenizer_test('simple', 'I don't see how'); +** +** will return the string: +** +** "{0 i I 1 dont don't 2 see see 3 how how}" +** +*/ +static void testFunc( + sqlite3_context *context, + int argc, + sqlite3_value **argv +){ + Fts3Hash *pHash; + sqlite3_tokenizer_module *p; + sqlite3_tokenizer *pTokenizer = 0; + sqlite3_tokenizer_cursor *pCsr = 0; + + const char *zErr = 0; + + const char *zName; + int nName; + const char *zInput; + int nInput; + + const char *azArg[64]; + + const char *zToken; + int nToken = 0; + int iStart = 0; + int iEnd = 0; + int iPos = 0; + int i; + + Tcl_Obj *pRet; + + if( argc<2 ){ + sqlite3_result_error(context, "insufficient arguments", -1); + return; + } + + nName = sqlite3_value_bytes(argv[0]); + zName = (const char *)sqlite3_value_text(argv[0]); + nInput = sqlite3_value_bytes(argv[argc-1]); + zInput = (const char *)sqlite3_value_text(argv[argc-1]); + + pHash = (Fts3Hash *)sqlite3_user_data(context); + p = (sqlite3_tokenizer_module *)sqlite3Fts3HashFind(pHash, zName, nName+1); + + if( !p ){ + char *zErr = sqlite3_mprintf("unknown tokenizer: %s", zName); + sqlite3_result_error(context, zErr, -1); + sqlite3_free(zErr); + return; + } + + pRet = Tcl_NewObj(); + Tcl_IncrRefCount(pRet); + + for(i=1; ixCreate(argc-2, azArg, &pTokenizer) ){ + zErr = "error in xCreate()"; + goto finish; + } + pTokenizer->pModule = p; + if( sqlite3Fts3OpenTokenizer(pTokenizer, 0, zInput, nInput, &pCsr) ){ + zErr = "error in xOpen()"; + goto finish; + } + + while( SQLITE_OK==p->xNext(pCsr, &zToken, &nToken, &iStart, &iEnd, &iPos) ){ + Tcl_ListObjAppendElement(0, pRet, Tcl_NewIntObj(iPos)); + Tcl_ListObjAppendElement(0, pRet, Tcl_NewStringObj(zToken, nToken)); + zToken = &zInput[iStart]; + nToken = iEnd-iStart; + Tcl_ListObjAppendElement(0, pRet, Tcl_NewStringObj(zToken, nToken)); + } + + if( SQLITE_OK!=p->xClose(pCsr) ){ + zErr = "error in xClose()"; + goto finish; + } + if( SQLITE_OK!=p->xDestroy(pTokenizer) ){ + zErr = "error in xDestroy()"; + goto finish; + } + +finish: + if( zErr ){ + sqlite3_result_error(context, zErr, -1); + }else{ + sqlite3_result_text(context, Tcl_GetString(pRet), -1, SQLITE_TRANSIENT); + } + Tcl_DecrRefCount(pRet); +} + +static +int registerTokenizer( + sqlite3 *db, + char *zName, + const sqlite3_tokenizer_module *p +){ + int rc; + sqlite3_stmt *pStmt; + const char zSql[] = "SELECT fts3_tokenizer(?, ?)"; + + rc = sqlite3_prepare_v2(db, zSql, -1, &pStmt, 0); + if( rc!=SQLITE_OK ){ + return rc; + } + + sqlite3_bind_text(pStmt, 1, zName, -1, SQLITE_STATIC); + sqlite3_bind_blob(pStmt, 2, &p, sizeof(p), SQLITE_STATIC); + sqlite3_step(pStmt); + + return sqlite3_finalize(pStmt); +} + +static +int queryTokenizer( + sqlite3 *db, + char *zName, + const sqlite3_tokenizer_module **pp +){ + int rc; + sqlite3_stmt *pStmt; + const char zSql[] = "SELECT fts3_tokenizer(?)"; + + *pp = 0; + rc = sqlite3_prepare_v2(db, zSql, -1, &pStmt, 0); + if( rc!=SQLITE_OK ){ + return rc; + } + + sqlite3_bind_text(pStmt, 1, zName, -1, SQLITE_STATIC); + if( SQLITE_ROW==sqlite3_step(pStmt) ){ + if( sqlite3_column_type(pStmt, 0)==SQLITE_BLOB ){ + memcpy((void *)pp, sqlite3_column_blob(pStmt, 0), sizeof(*pp)); + } + } + + return sqlite3_finalize(pStmt); +} + +void sqlite3Fts3SimpleTokenizerModule(sqlite3_tokenizer_module const**ppModule); + +/* +** Implementation of the scalar function fts3_tokenizer_internal_test(). +** This function is used for testing only, it is not included in the +** build unless SQLITE_TEST is defined. +** +** The purpose of this is to test that the fts3_tokenizer() function +** can be used as designed by the C-code in the queryTokenizer and +** registerTokenizer() functions above. These two functions are repeated +** in the README.tokenizer file as an example, so it is important to +** test them. +** +** To run the tests, evaluate the fts3_tokenizer_internal_test() scalar +** function with no arguments. An assert() will fail if a problem is +** detected. i.e.: +** +** SELECT fts3_tokenizer_internal_test(); +** +*/ +static void intTestFunc( + sqlite3_context *context, + int argc, + sqlite3_value **argv +){ + int rc; + const sqlite3_tokenizer_module *p1; + const sqlite3_tokenizer_module *p2; + sqlite3 *db = (sqlite3 *)sqlite3_user_data(context); + + UNUSED_PARAMETER(argc); + UNUSED_PARAMETER(argv); + + /* Test the query function */ + sqlite3Fts3SimpleTokenizerModule(&p1); + rc = queryTokenizer(db, "simple", &p2); + assert( rc==SQLITE_OK ); + assert( p1==p2 ); + rc = queryTokenizer(db, "nosuchtokenizer", &p2); + assert( rc==SQLITE_ERROR ); + assert( p2==0 ); + assert( 0==strcmp(sqlite3_errmsg(db), "unknown tokenizer: nosuchtokenizer") ); + + /* Test the storage function */ + rc = registerTokenizer(db, "nosuchtokenizer", p1); + assert( rc==SQLITE_OK ); + rc = queryTokenizer(db, "nosuchtokenizer", &p2); + assert( rc==SQLITE_OK ); + assert( p2==p1 ); + + sqlite3_result_text(context, "ok", -1, SQLITE_STATIC); +} + +#endif + +/* +** Set up SQL objects in database db used to access the contents of +** the hash table pointed to by argument pHash. The hash table must +** been initialised to use string keys, and to take a private copy +** of the key when a value is inserted. i.e. by a call similar to: +** +** sqlite3Fts3HashInit(pHash, FTS3_HASH_STRING, 1); +** +** This function adds a scalar function (see header comment above +** scalarFunc() in this file for details) and, if ENABLE_TABLE is +** defined at compilation time, a temporary virtual table (see header +** comment above struct HashTableVtab) to the database schema. Both +** provide read/write access to the contents of *pHash. +** +** The third argument to this function, zName, is used as the name +** of both the scalar and, if created, the virtual table. +*/ +int sqlite3Fts3InitHashTable( + sqlite3 *db, + Fts3Hash *pHash, + const char *zName +){ + int rc = SQLITE_OK; + void *p = (void *)pHash; + const int any = SQLITE_ANY; + +#ifdef SQLITE_TEST + char *zTest = 0; + char *zTest2 = 0; + void *pdb = (void *)db; + zTest = sqlite3_mprintf("%s_test", zName); + zTest2 = sqlite3_mprintf("%s_internal_test", zName); + if( !zTest || !zTest2 ){ + rc = SQLITE_NOMEM; + } +#endif + + if( SQLITE_OK==rc ){ + rc = sqlite3_create_function(db, zName, 1, any, p, scalarFunc, 0, 0); + } + if( SQLITE_OK==rc ){ + rc = sqlite3_create_function(db, zName, 2, any, p, scalarFunc, 0, 0); + } +#ifdef SQLITE_TEST + if( SQLITE_OK==rc ){ + rc = sqlite3_create_function(db, zTest, -1, any, p, testFunc, 0, 0); + } + if( SQLITE_OK==rc ){ + rc = sqlite3_create_function(db, zTest2, 0, any, pdb, intTestFunc, 0, 0); + } +#endif + +#ifdef SQLITE_TEST + sqlite3_free(zTest); + sqlite3_free(zTest2); +#endif + + return rc; +} + +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ diff -Nru tracker-0.15.1/src/libtracker-fts/fts3_tokenizer.h tracker-0.15.2/src/libtracker-fts/fts3_tokenizer.h --- tracker-0.15.1/src/libtracker-fts/fts3_tokenizer.h 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/fts3_tokenizer.h 2013-02-14 19:30:47.000000000 +0000 @@ -0,0 +1,161 @@ +/* +** 2006 July 10 +** +** The author disclaims copyright to this source code. +** +************************************************************************* +** Defines the interface to tokenizers used by fulltext-search. There +** are three basic components: +** +** sqlite3_tokenizer_module is a singleton defining the tokenizer +** interface functions. This is essentially the class structure for +** tokenizers. +** +** sqlite3_tokenizer is used to define a particular tokenizer, perhaps +** including customization information defined at creation time. +** +** sqlite3_tokenizer_cursor is generated by a tokenizer to generate +** tokens from a particular input. +*/ +#ifndef _FTS3_TOKENIZER_H_ +#define _FTS3_TOKENIZER_H_ + +/* TODO(shess) Only used for SQLITE_OK and SQLITE_DONE at this time. +** If tokenizers are to be allowed to call sqlite3_*() functions, then +** we will need a way to register the API consistently. +*/ +#include "sqlite3.h" + +/* +** Structures used by the tokenizer interface. When a new tokenizer +** implementation is registered, the caller provides a pointer to +** an sqlite3_tokenizer_module containing pointers to the callback +** functions that make up an implementation. +** +** When an fts3 table is created, it passes any arguments passed to +** the tokenizer clause of the CREATE VIRTUAL TABLE statement to the +** sqlite3_tokenizer_module.xCreate() function of the requested tokenizer +** implementation. The xCreate() function in turn returns an +** sqlite3_tokenizer structure representing the specific tokenizer to +** be used for the fts3 table (customized by the tokenizer clause arguments). +** +** To tokenize an input buffer, the sqlite3_tokenizer_module.xOpen() +** method is called. It returns an sqlite3_tokenizer_cursor object +** that may be used to tokenize a specific input buffer based on +** the tokenization rules supplied by a specific sqlite3_tokenizer +** object. +*/ +typedef struct sqlite3_tokenizer_module sqlite3_tokenizer_module; +typedef struct sqlite3_tokenizer sqlite3_tokenizer; +typedef struct sqlite3_tokenizer_cursor sqlite3_tokenizer_cursor; + +struct sqlite3_tokenizer_module { + + /* + ** Structure version. Should always be set to 0 or 1. + */ + int iVersion; + + /* + ** Create a new tokenizer. The values in the argv[] array are the + ** arguments passed to the "tokenizer" clause of the CREATE VIRTUAL + ** TABLE statement that created the fts3 table. For example, if + ** the following SQL is executed: + ** + ** CREATE .. USING fts3( ... , tokenizer arg1 arg2) + ** + ** then argc is set to 2, and the argv[] array contains pointers + ** to the strings "arg1" and "arg2". + ** + ** This method should return either SQLITE_OK (0), or an SQLite error + ** code. If SQLITE_OK is returned, then *ppTokenizer should be set + ** to point at the newly created tokenizer structure. The generic + ** sqlite3_tokenizer.pModule variable should not be initialised by + ** this callback. The caller will do so. + */ + int (*xCreate)( + int argc, /* Size of argv array */ + const char *const*argv, /* Tokenizer argument strings */ + sqlite3_tokenizer **ppTokenizer /* OUT: Created tokenizer */ + ); + + /* + ** Destroy an existing tokenizer. The fts3 module calls this method + ** exactly once for each successful call to xCreate(). + */ + int (*xDestroy)(sqlite3_tokenizer *pTokenizer); + + /* + ** Create a tokenizer cursor to tokenize an input buffer. The caller + ** is responsible for ensuring that the input buffer remains valid + ** until the cursor is closed (using the xClose() method). + */ + int (*xOpen)( + sqlite3_tokenizer *pTokenizer, /* Tokenizer object */ + const char *pInput, int nBytes, /* Input buffer */ + sqlite3_tokenizer_cursor **ppCursor /* OUT: Created tokenizer cursor */ + ); + + /* + ** Destroy an existing tokenizer cursor. The fts3 module calls this + ** method exactly once for each successful call to xOpen(). + */ + int (*xClose)(sqlite3_tokenizer_cursor *pCursor); + + /* + ** Retrieve the next token from the tokenizer cursor pCursor. This + ** method should either return SQLITE_OK and set the values of the + ** "OUT" variables identified below, or SQLITE_DONE to indicate that + ** the end of the buffer has been reached, or an SQLite error code. + ** + ** *ppToken should be set to point at a buffer containing the + ** normalized version of the token (i.e. after any case-folding and/or + ** stemming has been performed). *pnBytes should be set to the length + ** of this buffer in bytes. The input text that generated the token is + ** identified by the byte offsets returned in *piStartOffset and + ** *piEndOffset. *piStartOffset should be set to the index of the first + ** byte of the token in the input buffer. *piEndOffset should be set + ** to the index of the first byte just past the end of the token in + ** the input buffer. + ** + ** The buffer *ppToken is set to point at is managed by the tokenizer + ** implementation. It is only required to be valid until the next call + ** to xNext() or xClose(). + */ + /* TODO(shess) current implementation requires pInput to be + ** nul-terminated. This should either be fixed, or pInput/nBytes + ** should be converted to zInput. + */ + int (*xNext)( + sqlite3_tokenizer_cursor *pCursor, /* Tokenizer cursor */ + const char **ppToken, int *pnBytes, /* OUT: Normalized text for token */ + int *piStartOffset, /* OUT: Byte offset of token in input buffer */ + int *piEndOffset, /* OUT: Byte offset of end of token in input buffer */ + int *piPosition /* OUT: Number of tokens returned before this one */ + ); + + /*********************************************************************** + ** Methods below this point are only available if iVersion>=1. + */ + + /* + ** Configure the language id of a tokenizer cursor. + */ + int (*xLanguageid)(sqlite3_tokenizer_cursor *pCsr, int iLangid); +}; + +struct sqlite3_tokenizer { + const sqlite3_tokenizer_module *pModule; /* The module for this tokenizer */ + /* Tokenizer implementations will typically add additional fields */ +}; + +struct sqlite3_tokenizer_cursor { + sqlite3_tokenizer *pTokenizer; /* Tokenizer for this cursor. */ + /* Tokenizer implementations will typically add additional fields */ +}; + +int fts3_global_term_cnt(int iTerm, int iCol); +int fts3_term_cnt(int iTerm, int iCol); + + +#endif /* _FTS3_TOKENIZER_H_ */ diff -Nru tracker-0.15.1/src/libtracker-fts/fts3_tokenizer1.c tracker-0.15.2/src/libtracker-fts/fts3_tokenizer1.c --- tracker-0.15.1/src/libtracker-fts/fts3_tokenizer1.c 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/fts3_tokenizer1.c 2013-02-14 19:30:47.000000000 +0000 @@ -0,0 +1,234 @@ +/* +** 2006 Oct 10 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +****************************************************************************** +** +** Implementation of the "simple" full-text-search tokenizer. +*/ + +/* +** The code in this file is only compiled if: +** +** * The FTS3 module is being built as an extension +** (in which case SQLITE_CORE is not defined), or +** +** * The FTS3 module is being built into the core of +** SQLite (in which case SQLITE_ENABLE_FTS3 is defined). +*/ +#include "fts3Int.h" +#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) + +#include +#include +#include +#include + +#include "fts3_tokenizer.h" + +typedef struct simple_tokenizer { + sqlite3_tokenizer base; + char delim[128]; /* flag ASCII delimiters */ +} simple_tokenizer; + +typedef struct simple_tokenizer_cursor { + sqlite3_tokenizer_cursor base; + const char *pInput; /* input we are tokenizing */ + int nBytes; /* size of the input */ + int iOffset; /* current position in pInput */ + int iToken; /* index of next token to be returned */ + char *pToken; /* storage for current token */ + int nTokenAllocated; /* space allocated to zToken buffer */ +} simple_tokenizer_cursor; + + +static int simpleDelim(simple_tokenizer *t, unsigned char c){ + return c<0x80 && t->delim[c]; +} +static int fts3_isalnum(int x){ + return (x>='0' && x<='9') || (x>='A' && x<='Z') || (x>='a' && x<='z'); +} + +/* +** Create a new tokenizer instance. +*/ +static int simpleCreate( + int argc, const char * const *argv, + sqlite3_tokenizer **ppTokenizer +){ + simple_tokenizer *t; + + t = (simple_tokenizer *) sqlite3_malloc(sizeof(*t)); + if( t==NULL ) return SQLITE_NOMEM; + memset(t, 0, sizeof(*t)); + + /* TODO(shess) Delimiters need to remain the same from run to run, + ** else we need to reindex. One solution would be a meta-table to + ** track such information in the database, then we'd only want this + ** information on the initial create. + */ + if( argc>1 ){ + int i, n = (int)strlen(argv[1]); + for(i=0; i=0x80 ){ + sqlite3_free(t); + return SQLITE_ERROR; + } + t->delim[ch] = 1; + } + } else { + /* Mark non-alphanumeric ASCII characters as delimiters */ + int i; + for(i=1; i<0x80; i++){ + t->delim[i] = !fts3_isalnum(i) ? -1 : 0; + } + } + + *ppTokenizer = &t->base; + return SQLITE_OK; +} + +/* +** Destroy a tokenizer +*/ +static int simpleDestroy(sqlite3_tokenizer *pTokenizer){ + sqlite3_free(pTokenizer); + return SQLITE_OK; +} + +/* +** Prepare to begin tokenizing a particular string. The input +** string to be tokenized is pInput[0..nBytes-1]. A cursor +** used to incrementally tokenize this string is returned in +** *ppCursor. +*/ +static int simpleOpen( + sqlite3_tokenizer *pTokenizer, /* The tokenizer */ + const char *pInput, int nBytes, /* String to be tokenized */ + sqlite3_tokenizer_cursor **ppCursor /* OUT: Tokenization cursor */ +){ + simple_tokenizer_cursor *c; + + UNUSED_PARAMETER(pTokenizer); + + c = (simple_tokenizer_cursor *) sqlite3_malloc(sizeof(*c)); + if( c==NULL ) return SQLITE_NOMEM; + + c->pInput = pInput; + if( pInput==0 ){ + c->nBytes = 0; + }else if( nBytes<0 ){ + c->nBytes = (int)strlen(pInput); + }else{ + c->nBytes = nBytes; + } + c->iOffset = 0; /* start tokenizing at the beginning */ + c->iToken = 0; + c->pToken = NULL; /* no space allocated, yet. */ + c->nTokenAllocated = 0; + + *ppCursor = &c->base; + return SQLITE_OK; +} + +/* +** Close a tokenization cursor previously opened by a call to +** simpleOpen() above. +*/ +static int simpleClose(sqlite3_tokenizer_cursor *pCursor){ + simple_tokenizer_cursor *c = (simple_tokenizer_cursor *) pCursor; + sqlite3_free(c->pToken); + sqlite3_free(c); + return SQLITE_OK; +} + +/* +** Extract the next token from a tokenization cursor. The cursor must +** have been opened by a prior call to simpleOpen(). +*/ +static int simpleNext( + sqlite3_tokenizer_cursor *pCursor, /* Cursor returned by simpleOpen */ + const char **ppToken, /* OUT: *ppToken is the token text */ + int *pnBytes, /* OUT: Number of bytes in token */ + int *piStartOffset, /* OUT: Starting offset of token */ + int *piEndOffset, /* OUT: Ending offset of token */ + int *piPosition /* OUT: Position integer of token */ +){ + simple_tokenizer_cursor *c = (simple_tokenizer_cursor *) pCursor; + simple_tokenizer *t = (simple_tokenizer *) pCursor->pTokenizer; + unsigned char *p = (unsigned char *)c->pInput; + + while( c->iOffsetnBytes ){ + int iStartOffset; + + /* Scan past delimiter characters */ + while( c->iOffsetnBytes && simpleDelim(t, p[c->iOffset]) ){ + c->iOffset++; + } + + /* Count non-delimiter characters. */ + iStartOffset = c->iOffset; + while( c->iOffsetnBytes && !simpleDelim(t, p[c->iOffset]) ){ + c->iOffset++; + } + + if( c->iOffset>iStartOffset ){ + int i, n = c->iOffset-iStartOffset; + if( n>c->nTokenAllocated ){ + char *pNew; + c->nTokenAllocated = n+20; + pNew = sqlite3_realloc(c->pToken, c->nTokenAllocated); + if( !pNew ) return SQLITE_NOMEM; + c->pToken = pNew; + } + for(i=0; ipToken[i] = (char)((ch>='A' && ch<='Z') ? ch-'A'+'a' : ch); + } + *ppToken = c->pToken; + *pnBytes = n; + *piStartOffset = iStartOffset; + *piEndOffset = c->iOffset; + *piPosition = c->iToken++; + + return SQLITE_OK; + } + } + return SQLITE_DONE; +} + +/* +** The set of routines that implement the simple tokenizer +*/ +static const sqlite3_tokenizer_module simpleTokenizerModule = { + 0, + simpleCreate, + simpleDestroy, + simpleOpen, + simpleClose, + simpleNext, + 0, +}; + +/* +** Allocate a new simple tokenizer. Return a pointer to the new +** tokenizer in *ppModule +*/ +void sqlite3Fts3SimpleTokenizerModule( + sqlite3_tokenizer_module const**ppModule +){ + *ppModule = &simpleTokenizerModule; +} + +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ diff -Nru tracker-0.15.1/src/libtracker-fts/fts3_unicode.c tracker-0.15.2/src/libtracker-fts/fts3_unicode.c --- tracker-0.15.1/src/libtracker-fts/fts3_unicode.c 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/fts3_unicode.c 2013-02-14 19:30:47.000000000 +0000 @@ -0,0 +1,393 @@ +/* +** 2012 May 24 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +****************************************************************************** +** +** Implementation of the "unicode" full-text-search tokenizer. +*/ + +#ifdef SQLITE_ENABLE_FTS4_UNICODE61 + +#include "fts3Int.h" +#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) + +#include +#include +#include +#include + +#include "fts3_tokenizer.h" + +/* +** The following two macros - READ_UTF8 and WRITE_UTF8 - have been copied +** from the sqlite3 source file utf.c. If this file is compiled as part +** of the amalgamation, they are not required. +*/ +#ifndef SQLITE_AMALGAMATION + +static const unsigned char sqlite3Utf8Trans1[] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x00, 0x01, 0x02, 0x03, 0x00, 0x01, 0x00, 0x00, +}; + +#define READ_UTF8(zIn, zTerm, c) \ + c = *(zIn++); \ + if( c>=0xc0 ){ \ + c = sqlite3Utf8Trans1[c-0xc0]; \ + while( zIn!=zTerm && (*zIn & 0xc0)==0x80 ){ \ + c = (c<<6) + (0x3f & *(zIn++)); \ + } \ + if( c<0x80 \ + || (c&0xFFFFF800)==0xD800 \ + || (c&0xFFFFFFFE)==0xFFFE ){ c = 0xFFFD; } \ + } + +#define WRITE_UTF8(zOut, c) { \ + if( c<0x00080 ){ \ + *zOut++ = (u8)(c&0xFF); \ + } \ + else if( c<0x00800 ){ \ + *zOut++ = 0xC0 + (u8)((c>>6)&0x1F); \ + *zOut++ = 0x80 + (u8)(c & 0x3F); \ + } \ + else if( c<0x10000 ){ \ + *zOut++ = 0xE0 + (u8)((c>>12)&0x0F); \ + *zOut++ = 0x80 + (u8)((c>>6) & 0x3F); \ + *zOut++ = 0x80 + (u8)(c & 0x3F); \ + }else{ \ + *zOut++ = 0xF0 + (u8)((c>>18) & 0x07); \ + *zOut++ = 0x80 + (u8)((c>>12) & 0x3F); \ + *zOut++ = 0x80 + (u8)((c>>6) & 0x3F); \ + *zOut++ = 0x80 + (u8)(c & 0x3F); \ + } \ +} + +#endif /* ifndef SQLITE_AMALGAMATION */ + +typedef struct unicode_tokenizer unicode_tokenizer; +typedef struct unicode_cursor unicode_cursor; + +struct unicode_tokenizer { + sqlite3_tokenizer base; + int bRemoveDiacritic; + int nException; + int *aiException; +}; + +struct unicode_cursor { + sqlite3_tokenizer_cursor base; + const unsigned char *aInput; /* Input text being tokenized */ + int nInput; /* Size of aInput[] in bytes */ + int iOff; /* Current offset within aInput[] */ + int iToken; /* Index of next token to be returned */ + char *zToken; /* storage for current token */ + int nAlloc; /* space allocated at zToken */ +}; + + +/* +** Destroy a tokenizer allocated by unicodeCreate(). +*/ +static int unicodeDestroy(sqlite3_tokenizer *pTokenizer){ + if( pTokenizer ){ + unicode_tokenizer *p = (unicode_tokenizer *)pTokenizer; + sqlite3_free(p->aiException); + sqlite3_free(p); + } + return SQLITE_OK; +} + +/* +** As part of a tokenchars= or separators= option, the CREATE VIRTUAL TABLE +** statement has specified that the tokenizer for this table shall consider +** all characters in string zIn/nIn to be separators (if bAlnum==0) or +** token characters (if bAlnum==1). +** +** For each codepoint in the zIn/nIn string, this function checks if the +** sqlite3FtsUnicodeIsalnum() function already returns the desired result. +** If so, no action is taken. Otherwise, the codepoint is added to the +** unicode_tokenizer.aiException[] array. For the purposes of tokenization, +** the return value of sqlite3FtsUnicodeIsalnum() is inverted for all +** codepoints in the aiException[] array. +** +** If a standalone diacritic mark (one that sqlite3FtsUnicodeIsdiacritic() +** identifies as a diacritic) occurs in the zIn/nIn string it is ignored. +** It is not possible to change the behaviour of the tokenizer with respect +** to these codepoints. +*/ +static int unicodeAddExceptions( + unicode_tokenizer *p, /* Tokenizer to add exceptions to */ + int bAlnum, /* Replace Isalnum() return value with this */ + const char *zIn, /* Array of characters to make exceptions */ + int nIn /* Length of z in bytes */ +){ + const unsigned char *z = (const unsigned char *)zIn; + const unsigned char *zTerm = &z[nIn]; + int iCode; + int nEntry = 0; + + assert( bAlnum==0 || bAlnum==1 ); + + while( zaiException, (p->nException+nEntry)*sizeof(int)); + if( aNew==0 ) return SQLITE_NOMEM; + nNew = p->nException; + + z = (const unsigned char *)zIn; + while( zi; j--) aNew[j] = aNew[j-1]; + aNew[i] = iCode; + nNew++; + } + } + p->aiException = aNew; + p->nException = nNew; + } + + return SQLITE_OK; +} + +/* +** Return true if the p->aiException[] array contains the value iCode. +*/ +static int unicodeIsException(unicode_tokenizer *p, int iCode){ + if( p->nException>0 ){ + int *a = p->aiException; + int iLo = 0; + int iHi = p->nException-1; + + while( iHi>=iLo ){ + int iTest = (iHi + iLo) / 2; + if( iCode==a[iTest] ){ + return 1; + }else if( iCode>a[iTest] ){ + iLo = iTest+1; + }else{ + iHi = iTest-1; + } + } + } + + return 0; +} + +/* +** Return true if, for the purposes of tokenization, codepoint iCode is +** considered a token character (not a separator). +*/ +static int unicodeIsAlnum(unicode_tokenizer *p, int iCode){ + assert( (sqlite3FtsUnicodeIsalnum(iCode) & 0xFFFFFFFE)==0 ); + return sqlite3FtsUnicodeIsalnum(iCode) ^ unicodeIsException(p, iCode); +} + +/* +** Create a new tokenizer instance. +*/ +static int unicodeCreate( + int nArg, /* Size of array argv[] */ + const char * const *azArg, /* Tokenizer creation arguments */ + sqlite3_tokenizer **pp /* OUT: New tokenizer handle */ +){ + unicode_tokenizer *pNew; /* New tokenizer object */ + int i; + int rc = SQLITE_OK; + + pNew = (unicode_tokenizer *) sqlite3_malloc(sizeof(unicode_tokenizer)); + if( pNew==NULL ) return SQLITE_NOMEM; + memset(pNew, 0, sizeof(unicode_tokenizer)); + pNew->bRemoveDiacritic = 1; + + for(i=0; rc==SQLITE_OK && ibRemoveDiacritic = 1; + } + else if( n==19 && memcmp("remove_diacritics=0", z, 19)==0 ){ + pNew->bRemoveDiacritic = 0; + } + else if( n>=11 && memcmp("tokenchars=", z, 11)==0 ){ + rc = unicodeAddExceptions(pNew, 1, &z[11], n-11); + } + else if( n>=11 && memcmp("separators=", z, 11)==0 ){ + rc = unicodeAddExceptions(pNew, 0, &z[11], n-11); + } + else{ + /* Unrecognized argument */ + rc = SQLITE_ERROR; + } + } + + if( rc!=SQLITE_OK ){ + unicodeDestroy((sqlite3_tokenizer *)pNew); + pNew = 0; + } + *pp = (sqlite3_tokenizer *)pNew; + return rc; +} + +/* +** Prepare to begin tokenizing a particular string. The input +** string to be tokenized is pInput[0..nBytes-1]. A cursor +** used to incrementally tokenize this string is returned in +** *ppCursor. +*/ +static int unicodeOpen( + sqlite3_tokenizer *p, /* The tokenizer */ + const char *aInput, /* Input string */ + int nInput, /* Size of string aInput in bytes */ + sqlite3_tokenizer_cursor **pp /* OUT: New cursor object */ +){ + unicode_cursor *pCsr; + + pCsr = (unicode_cursor *)sqlite3_malloc(sizeof(unicode_cursor)); + if( pCsr==0 ){ + return SQLITE_NOMEM; + } + memset(pCsr, 0, sizeof(unicode_cursor)); + + pCsr->aInput = (const unsigned char *)aInput; + if( aInput==0 ){ + pCsr->nInput = 0; + }else if( nInput<0 ){ + pCsr->nInput = (int)strlen(aInput); + }else{ + pCsr->nInput = nInput; + } + + *pp = &pCsr->base; + UNUSED_PARAMETER(p); + return SQLITE_OK; +} + +/* +** Close a tokenization cursor previously opened by a call to +** simpleOpen() above. +*/ +static int unicodeClose(sqlite3_tokenizer_cursor *pCursor){ + unicode_cursor *pCsr = (unicode_cursor *) pCursor; + sqlite3_free(pCsr->zToken); + sqlite3_free(pCsr); + return SQLITE_OK; +} + +/* +** Extract the next token from a tokenization cursor. The cursor must +** have been opened by a prior call to simpleOpen(). +*/ +static int unicodeNext( + sqlite3_tokenizer_cursor *pC, /* Cursor returned by simpleOpen */ + const char **paToken, /* OUT: Token text */ + int *pnToken, /* OUT: Number of bytes at *paToken */ + int *piStart, /* OUT: Starting offset of token */ + int *piEnd, /* OUT: Ending offset of token */ + int *piPos /* OUT: Position integer of token */ +){ + unicode_cursor *pCsr = (unicode_cursor *)pC; + unicode_tokenizer *p = ((unicode_tokenizer *)pCsr->base.pTokenizer); + int iCode; + char *zOut; + const unsigned char *z = &pCsr->aInput[pCsr->iOff]; + const unsigned char *zStart = z; + const unsigned char *zEnd; + const unsigned char *zTerm = &pCsr->aInput[pCsr->nInput]; + + /* Scan past any delimiter characters before the start of the next token. + ** Return SQLITE_DONE early if this takes us all the way to the end of + ** the input. */ + while( z=zTerm ) return SQLITE_DONE; + + zOut = pCsr->zToken; + do { + int iOut; + + /* Grow the output buffer if required. */ + if( (zOut-pCsr->zToken)>=(pCsr->nAlloc-4) ){ + char *zNew = sqlite3_realloc(pCsr->zToken, pCsr->nAlloc+64); + if( !zNew ) return SQLITE_NOMEM; + zOut = &zNew[zOut - pCsr->zToken]; + pCsr->zToken = zNew; + pCsr->nAlloc += 64; + } + + /* Write the folded case of the last character read to the output */ + zEnd = z; + iOut = sqlite3FtsUnicodeFold(iCode, p->bRemoveDiacritic); + if( iOut ){ + WRITE_UTF8(zOut, iOut); + } + + /* If the cursor is not at EOF, read the next character */ + if( z>=zTerm ) break; + READ_UTF8(z, zTerm, iCode); + }while( unicodeIsAlnum(p, iCode) + || sqlite3FtsUnicodeIsdiacritic(iCode) + ); + + /* Set the output variables and return. */ + pCsr->iOff = (z - pCsr->aInput); + *paToken = pCsr->zToken; + *pnToken = zOut - pCsr->zToken; + *piStart = (zStart - pCsr->aInput); + *piEnd = (zEnd - pCsr->aInput); + *piPos = pCsr->iToken++; + return SQLITE_OK; +} + +/* +** Set *ppModule to a pointer to the sqlite3_tokenizer_module +** structure for the unicode tokenizer. +*/ +void sqlite3Fts3UnicodeTokenizer(sqlite3_tokenizer_module const **ppModule){ + static const sqlite3_tokenizer_module module = { + 0, + unicodeCreate, + unicodeDestroy, + unicodeOpen, + unicodeClose, + unicodeNext, + 0, + }; + *ppModule = &module; +} + +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ +#endif /* ifndef SQLITE_ENABLE_FTS4_UNICODE61 */ diff -Nru tracker-0.15.1/src/libtracker-fts/fts3_unicode2.c tracker-0.15.2/src/libtracker-fts/fts3_unicode2.c --- tracker-0.15.1/src/libtracker-fts/fts3_unicode2.c 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/fts3_unicode2.c 2013-02-14 19:30:47.000000000 +0000 @@ -0,0 +1,366 @@ +/* +** 2012 May 25 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +****************************************************************************** +*/ + +/* +** DO NOT EDIT THIS MACHINE GENERATED FILE. +*/ + +#if defined(SQLITE_ENABLE_FTS4_UNICODE61) +#if defined(SQLITE_ENABLE_FTS3) || defined(SQLITE_ENABLE_FTS4) + +#include + +/* +** Return true if the argument corresponds to a unicode codepoint +** classified as either a letter or a number. Otherwise false. +** +** The results are undefined if the value passed to this function +** is less than zero. +*/ +int sqlite3FtsUnicodeIsalnum(int c){ + /* Each unsigned integer in the following array corresponds to a contiguous + ** range of unicode codepoints that are not either letters or numbers (i.e. + ** codepoints for which this function should return 0). + ** + ** The most significant 22 bits in each 32-bit value contain the first + ** codepoint in the range. The least significant 10 bits are used to store + ** the size of the range (always at least 1). In other words, the value + ** ((C<<22) + N) represents a range of N codepoints starting with codepoint + ** C. It is not possible to represent a range larger than 1023 codepoints + ** using this format. + */ + const static unsigned int aEntry[] = { + 0x00000030, 0x0000E807, 0x00016C06, 0x0001EC2F, 0x0002AC07, + 0x0002D001, 0x0002D803, 0x0002EC01, 0x0002FC01, 0x00035C01, + 0x0003DC01, 0x000B0804, 0x000B480E, 0x000B9407, 0x000BB401, + 0x000BBC81, 0x000DD401, 0x000DF801, 0x000E1002, 0x000E1C01, + 0x000FD801, 0x00120808, 0x00156806, 0x00162402, 0x00163C01, + 0x00164437, 0x0017CC02, 0x00180005, 0x00181816, 0x00187802, + 0x00192C15, 0x0019A804, 0x0019C001, 0x001B5001, 0x001B580F, + 0x001B9C07, 0x001BF402, 0x001C000E, 0x001C3C01, 0x001C4401, + 0x001CC01B, 0x001E980B, 0x001FAC09, 0x001FD804, 0x00205804, + 0x00206C09, 0x00209403, 0x0020A405, 0x0020C00F, 0x00216403, + 0x00217801, 0x0023901B, 0x00240004, 0x0024E803, 0x0024F812, + 0x00254407, 0x00258804, 0x0025C001, 0x00260403, 0x0026F001, + 0x0026F807, 0x00271C02, 0x00272C03, 0x00275C01, 0x00278802, + 0x0027C802, 0x0027E802, 0x00280403, 0x0028F001, 0x0028F805, + 0x00291C02, 0x00292C03, 0x00294401, 0x0029C002, 0x0029D401, + 0x002A0403, 0x002AF001, 0x002AF808, 0x002B1C03, 0x002B2C03, + 0x002B8802, 0x002BC002, 0x002C0403, 0x002CF001, 0x002CF807, + 0x002D1C02, 0x002D2C03, 0x002D5802, 0x002D8802, 0x002DC001, + 0x002E0801, 0x002EF805, 0x002F1803, 0x002F2804, 0x002F5C01, + 0x002FCC08, 0x00300403, 0x0030F807, 0x00311803, 0x00312804, + 0x00315402, 0x00318802, 0x0031FC01, 0x00320802, 0x0032F001, + 0x0032F807, 0x00331803, 0x00332804, 0x00335402, 0x00338802, + 0x00340802, 0x0034F807, 0x00351803, 0x00352804, 0x00355C01, + 0x00358802, 0x0035E401, 0x00360802, 0x00372801, 0x00373C06, + 0x00375801, 0x00376008, 0x0037C803, 0x0038C401, 0x0038D007, + 0x0038FC01, 0x00391C09, 0x00396802, 0x003AC401, 0x003AD006, + 0x003AEC02, 0x003B2006, 0x003C041F, 0x003CD00C, 0x003DC417, + 0x003E340B, 0x003E6424, 0x003EF80F, 0x003F380D, 0x0040AC14, + 0x00412806, 0x00415804, 0x00417803, 0x00418803, 0x00419C07, + 0x0041C404, 0x0042080C, 0x00423C01, 0x00426806, 0x0043EC01, + 0x004D740C, 0x004E400A, 0x00500001, 0x0059B402, 0x005A0001, + 0x005A6C02, 0x005BAC03, 0x005C4803, 0x005CC805, 0x005D4802, + 0x005DC802, 0x005ED023, 0x005F6004, 0x005F7401, 0x0060000F, + 0x0062A401, 0x0064800C, 0x0064C00C, 0x00650001, 0x00651002, + 0x0066C011, 0x00672002, 0x00677822, 0x00685C05, 0x00687802, + 0x0069540A, 0x0069801D, 0x0069FC01, 0x006A8007, 0x006AA006, + 0x006C0005, 0x006CD011, 0x006D6823, 0x006E0003, 0x006E840D, + 0x006F980E, 0x006FF004, 0x00709014, 0x0070EC05, 0x0071F802, + 0x00730008, 0x00734019, 0x0073B401, 0x0073C803, 0x00770027, + 0x0077F004, 0x007EF401, 0x007EFC03, 0x007F3403, 0x007F7403, + 0x007FB403, 0x007FF402, 0x00800065, 0x0081A806, 0x0081E805, + 0x00822805, 0x0082801A, 0x00834021, 0x00840002, 0x00840C04, + 0x00842002, 0x00845001, 0x00845803, 0x00847806, 0x00849401, + 0x00849C01, 0x0084A401, 0x0084B801, 0x0084E802, 0x00850005, + 0x00852804, 0x00853C01, 0x00864264, 0x00900027, 0x0091000B, + 0x0092704E, 0x00940200, 0x009C0475, 0x009E53B9, 0x00AD400A, + 0x00B39406, 0x00B3BC03, 0x00B3E404, 0x00B3F802, 0x00B5C001, + 0x00B5FC01, 0x00B7804F, 0x00B8C00C, 0x00BA001A, 0x00BA6C59, + 0x00BC00D6, 0x00BFC00C, 0x00C00005, 0x00C02019, 0x00C0A807, + 0x00C0D802, 0x00C0F403, 0x00C26404, 0x00C28001, 0x00C3EC01, + 0x00C64002, 0x00C6580A, 0x00C70024, 0x00C8001F, 0x00C8A81E, + 0x00C94001, 0x00C98020, 0x00CA2827, 0x00CB003F, 0x00CC0100, + 0x01370040, 0x02924037, 0x0293F802, 0x02983403, 0x0299BC10, + 0x029A7C01, 0x029BC008, 0x029C0017, 0x029C8002, 0x029E2402, + 0x02A00801, 0x02A01801, 0x02A02C01, 0x02A08C09, 0x02A0D804, + 0x02A1D004, 0x02A20002, 0x02A2D011, 0x02A33802, 0x02A38012, + 0x02A3E003, 0x02A4980A, 0x02A51C0D, 0x02A57C01, 0x02A60004, + 0x02A6CC1B, 0x02A77802, 0x02A8A40E, 0x02A90C01, 0x02A93002, + 0x02A97004, 0x02A9DC03, 0x02A9EC01, 0x02AAC001, 0x02AAC803, + 0x02AADC02, 0x02AAF802, 0x02AB0401, 0x02AB7802, 0x02ABAC07, + 0x02ABD402, 0x02AF8C0B, 0x03600001, 0x036DFC02, 0x036FFC02, + 0x037FFC02, 0x03E3FC01, 0x03EC7801, 0x03ECA401, 0x03EEC810, + 0x03F4F802, 0x03F7F002, 0x03F8001A, 0x03F88007, 0x03F8C023, + 0x03F95013, 0x03F9A004, 0x03FBFC01, 0x03FC040F, 0x03FC6807, + 0x03FCEC06, 0x03FD6C0B, 0x03FF8007, 0x03FFA007, 0x03FFE405, + 0x04040003, 0x0404DC09, 0x0405E411, 0x0406400C, 0x0407402E, + 0x040E7C01, 0x040F4001, 0x04215C01, 0x04247C01, 0x0424FC01, + 0x04280403, 0x04281402, 0x04283004, 0x0428E003, 0x0428FC01, + 0x04294009, 0x0429FC01, 0x042CE407, 0x04400003, 0x0440E016, + 0x04420003, 0x0442C012, 0x04440003, 0x04449C0E, 0x04450004, + 0x04460003, 0x0446CC0E, 0x04471404, 0x045AAC0D, 0x0491C004, + 0x05BD442E, 0x05BE3C04, 0x074000F6, 0x07440027, 0x0744A4B5, + 0x07480046, 0x074C0057, 0x075B0401, 0x075B6C01, 0x075BEC01, + 0x075C5401, 0x075CD401, 0x075D3C01, 0x075DBC01, 0x075E2401, + 0x075EA401, 0x075F0C01, 0x07BBC002, 0x07C0002C, 0x07C0C064, + 0x07C2800F, 0x07C2C40E, 0x07C3040F, 0x07C3440F, 0x07C4401F, + 0x07C4C03C, 0x07C5C02B, 0x07C7981D, 0x07C8402B, 0x07C90009, + 0x07C94002, 0x07CC0021, 0x07CCC006, 0x07CCDC46, 0x07CE0014, + 0x07CE8025, 0x07CF1805, 0x07CF8011, 0x07D0003F, 0x07D10001, + 0x07D108B6, 0x07D3E404, 0x07D4003E, 0x07D50004, 0x07D54018, + 0x07D7EC46, 0x07D9140B, 0x07DA0046, 0x07DC0074, 0x38000401, + 0x38008060, 0x380400F0, 0x3C000001, 0x3FFFF401, 0x40000001, + 0x43FFF401, + }; + static const unsigned int aAscii[4] = { + 0xFFFFFFFF, 0xFC00FFFF, 0xF8000001, 0xF8000001, + }; + + if( c<128 ){ + return ( (aAscii[c >> 5] & (1 << (c & 0x001F)))==0 ); + }else if( c<(1<<22) ){ + unsigned int key = (((unsigned int)c)<<10) | 0x000003FF; + int iRes; + int iHi = sizeof(aEntry)/sizeof(aEntry[0]) - 1; + int iLo = 0; + while( iHi>=iLo ){ + int iTest = (iHi + iLo) / 2; + if( key >= aEntry[iTest] ){ + iRes = iTest; + iLo = iTest+1; + }else{ + iHi = iTest-1; + } + } + assert( aEntry[0]=aEntry[iRes] ); + return (((unsigned int)c) >= ((aEntry[iRes]>>10) + (aEntry[iRes]&0x3FF))); + } + return 1; +} + + +/* +** If the argument is a codepoint corresponding to a lowercase letter +** in the ASCII range with a diacritic added, return the codepoint +** of the ASCII letter only. For example, if passed 235 - "LATIN +** SMALL LETTER E WITH DIAERESIS" - return 65 ("LATIN SMALL LETTER +** E"). The resuls of passing a codepoint that corresponds to an +** uppercase letter are undefined. +*/ +static int remove_diacritic(int c){ + unsigned short aDia[] = { + 0, 1797, 1848, 1859, 1891, 1928, 1940, 1995, + 2024, 2040, 2060, 2110, 2168, 2206, 2264, 2286, + 2344, 2383, 2472, 2488, 2516, 2596, 2668, 2732, + 2782, 2842, 2894, 2954, 2984, 3000, 3028, 3336, + 3456, 3696, 3712, 3728, 3744, 3896, 3912, 3928, + 3968, 4008, 4040, 4106, 4138, 4170, 4202, 4234, + 4266, 4296, 4312, 4344, 4408, 4424, 4472, 4504, + 6148, 6198, 6264, 6280, 6360, 6429, 6505, 6529, + 61448, 61468, 61534, 61592, 61642, 61688, 61704, 61726, + 61784, 61800, 61836, 61880, 61914, 61948, 61998, 62122, + 62154, 62200, 62218, 62302, 62364, 62442, 62478, 62536, + 62554, 62584, 62604, 62640, 62648, 62656, 62664, 62730, + 62924, 63050, 63082, 63274, 63390, + }; + char aChar[] = { + '\0', 'a', 'c', 'e', 'i', 'n', 'o', 'u', 'y', 'y', 'a', 'c', + 'd', 'e', 'e', 'g', 'h', 'i', 'j', 'k', 'l', 'n', 'o', 'r', + 's', 't', 'u', 'u', 'w', 'y', 'z', 'o', 'u', 'a', 'i', 'o', + 'u', 'g', 'k', 'o', 'j', 'g', 'n', 'a', 'e', 'i', 'o', 'r', + 'u', 's', 't', 'h', 'a', 'e', 'o', 'y', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', 'a', 'b', 'd', 'd', 'e', 'f', 'g', 'h', + 'h', 'i', 'k', 'l', 'l', 'm', 'n', 'p', 'r', 'r', 's', 't', + 'u', 'v', 'w', 'w', 'x', 'y', 'z', 'h', 't', 'w', 'y', 'a', + 'e', 'i', 'o', 'u', 'y', + }; + + unsigned int key = (((unsigned int)c)<<3) | 0x00000007; + int iRes = 0; + int iHi = sizeof(aDia)/sizeof(aDia[0]) - 1; + int iLo = 0; + while( iHi>=iLo ){ + int iTest = (iHi + iLo) / 2; + if( key >= aDia[iTest] ){ + iRes = iTest; + iLo = iTest+1; + }else{ + iHi = iTest-1; + } + } + assert( key>=aDia[iRes] ); + return ((c > (aDia[iRes]>>3) + (aDia[iRes]&0x07)) ? c : (int)aChar[iRes]); +}; + + +/* +** Return true if the argument interpreted as a unicode codepoint +** is a diacritical modifier character. +*/ +int sqlite3FtsUnicodeIsdiacritic(int c){ + unsigned int mask0 = 0x08029FDF; + unsigned int mask1 = 0x000361F8; + if( c<768 || c>817 ) return 0; + return (c < 768+32) ? + (mask0 & (1 << (c-768))) : + (mask1 & (1 << (c-768-32))); +} + + +/* +** Interpret the argument as a unicode codepoint. If the codepoint +** is an upper case character that has a lower case equivalent, +** return the codepoint corresponding to the lower case version. +** Otherwise, return a copy of the argument. +** +** The results are undefined if the value passed to this function +** is less than zero. +*/ +int sqlite3FtsUnicodeFold(int c, int bRemoveDiacritic){ + /* Each entry in the following array defines a rule for folding a range + ** of codepoints to lower case. The rule applies to a range of nRange + ** codepoints starting at codepoint iCode. + ** + ** If the least significant bit in flags is clear, then the rule applies + ** to all nRange codepoints (i.e. all nRange codepoints are upper case and + ** need to be folded). Or, if it is set, then the rule only applies to + ** every second codepoint in the range, starting with codepoint C. + ** + ** The 7 most significant bits in flags are an index into the aiOff[] + ** array. If a specific codepoint C does require folding, then its lower + ** case equivalent is ((C + aiOff[flags>>1]) & 0xFFFF). + ** + ** The contents of this array are generated by parsing the CaseFolding.txt + ** file distributed as part of the "Unicode Character Database". See + ** http://www.unicode.org for details. + */ + static const struct TableEntry { + unsigned short iCode; + unsigned char flags; + unsigned char nRange; + } aEntry[] = { + {65, 14, 26}, {181, 64, 1}, {192, 14, 23}, + {216, 14, 7}, {256, 1, 48}, {306, 1, 6}, + {313, 1, 16}, {330, 1, 46}, {376, 116, 1}, + {377, 1, 6}, {383, 104, 1}, {385, 50, 1}, + {386, 1, 4}, {390, 44, 1}, {391, 0, 1}, + {393, 42, 2}, {395, 0, 1}, {398, 32, 1}, + {399, 38, 1}, {400, 40, 1}, {401, 0, 1}, + {403, 42, 1}, {404, 46, 1}, {406, 52, 1}, + {407, 48, 1}, {408, 0, 1}, {412, 52, 1}, + {413, 54, 1}, {415, 56, 1}, {416, 1, 6}, + {422, 60, 1}, {423, 0, 1}, {425, 60, 1}, + {428, 0, 1}, {430, 60, 1}, {431, 0, 1}, + {433, 58, 2}, {435, 1, 4}, {439, 62, 1}, + {440, 0, 1}, {444, 0, 1}, {452, 2, 1}, + {453, 0, 1}, {455, 2, 1}, {456, 0, 1}, + {458, 2, 1}, {459, 1, 18}, {478, 1, 18}, + {497, 2, 1}, {498, 1, 4}, {502, 122, 1}, + {503, 134, 1}, {504, 1, 40}, {544, 110, 1}, + {546, 1, 18}, {570, 70, 1}, {571, 0, 1}, + {573, 108, 1}, {574, 68, 1}, {577, 0, 1}, + {579, 106, 1}, {580, 28, 1}, {581, 30, 1}, + {582, 1, 10}, {837, 36, 1}, {880, 1, 4}, + {886, 0, 1}, {902, 18, 1}, {904, 16, 3}, + {908, 26, 1}, {910, 24, 2}, {913, 14, 17}, + {931, 14, 9}, {962, 0, 1}, {975, 4, 1}, + {976, 140, 1}, {977, 142, 1}, {981, 146, 1}, + {982, 144, 1}, {984, 1, 24}, {1008, 136, 1}, + {1009, 138, 1}, {1012, 130, 1}, {1013, 128, 1}, + {1015, 0, 1}, {1017, 152, 1}, {1018, 0, 1}, + {1021, 110, 3}, {1024, 34, 16}, {1040, 14, 32}, + {1120, 1, 34}, {1162, 1, 54}, {1216, 6, 1}, + {1217, 1, 14}, {1232, 1, 88}, {1329, 22, 38}, + {4256, 66, 38}, {4295, 66, 1}, {4301, 66, 1}, + {7680, 1, 150}, {7835, 132, 1}, {7838, 96, 1}, + {7840, 1, 96}, {7944, 150, 8}, {7960, 150, 6}, + {7976, 150, 8}, {7992, 150, 8}, {8008, 150, 6}, + {8025, 151, 8}, {8040, 150, 8}, {8072, 150, 8}, + {8088, 150, 8}, {8104, 150, 8}, {8120, 150, 2}, + {8122, 126, 2}, {8124, 148, 1}, {8126, 100, 1}, + {8136, 124, 4}, {8140, 148, 1}, {8152, 150, 2}, + {8154, 120, 2}, {8168, 150, 2}, {8170, 118, 2}, + {8172, 152, 1}, {8184, 112, 2}, {8186, 114, 2}, + {8188, 148, 1}, {8486, 98, 1}, {8490, 92, 1}, + {8491, 94, 1}, {8498, 12, 1}, {8544, 8, 16}, + {8579, 0, 1}, {9398, 10, 26}, {11264, 22, 47}, + {11360, 0, 1}, {11362, 88, 1}, {11363, 102, 1}, + {11364, 90, 1}, {11367, 1, 6}, {11373, 84, 1}, + {11374, 86, 1}, {11375, 80, 1}, {11376, 82, 1}, + {11378, 0, 1}, {11381, 0, 1}, {11390, 78, 2}, + {11392, 1, 100}, {11499, 1, 4}, {11506, 0, 1}, + {42560, 1, 46}, {42624, 1, 24}, {42786, 1, 14}, + {42802, 1, 62}, {42873, 1, 4}, {42877, 76, 1}, + {42878, 1, 10}, {42891, 0, 1}, {42893, 74, 1}, + {42896, 1, 4}, {42912, 1, 10}, {42922, 72, 1}, + {65313, 14, 26}, + }; + static const unsigned short aiOff[] = { + 1, 2, 8, 15, 16, 26, 28, 32, + 37, 38, 40, 48, 63, 64, 69, 71, + 79, 80, 116, 202, 203, 205, 206, 207, + 209, 210, 211, 213, 214, 217, 218, 219, + 775, 7264, 10792, 10795, 23228, 23256, 30204, 54721, + 54753, 54754, 54756, 54787, 54793, 54809, 57153, 57274, + 57921, 58019, 58363, 61722, 65268, 65341, 65373, 65406, + 65408, 65410, 65415, 65424, 65436, 65439, 65450, 65462, + 65472, 65476, 65478, 65480, 65482, 65488, 65506, 65511, + 65514, 65521, 65527, 65528, 65529, + }; + + int ret = c; + + assert( c>=0 ); + assert( sizeof(unsigned short)==2 && sizeof(unsigned char)==1 ); + + if( c<128 ){ + if( c>='A' && c<='Z' ) ret = c + ('a' - 'A'); + }else if( c<65536 ){ + int iHi = sizeof(aEntry)/sizeof(aEntry[0]) - 1; + int iLo = 0; + int iRes = -1; + + while( iHi>=iLo ){ + int iTest = (iHi + iLo) / 2; + int cmp = (c - aEntry[iTest].iCode); + if( cmp>=0 ){ + iRes = iTest; + iLo = iTest+1; + }else{ + iHi = iTest-1; + } + } + assert( iRes<0 || c>=aEntry[iRes].iCode ); + + if( iRes>=0 ){ + const struct TableEntry *p = &aEntry[iRes]; + if( c<(p->iCode + p->nRange) && 0==(0x01 & p->flags & (p->iCode ^ c)) ){ + ret = (c + (aiOff[p->flags>>1])) & 0x0000FFFF; + assert( ret>0 ); + } + } + + if( bRemoveDiacritic ) ret = remove_diacritic(ret); + } + + else if( c>=66560 && c<66600 ){ + ret = c + 40; + } + + return ret; +} +#endif /* defined(SQLITE_ENABLE_FTS3) || defined(SQLITE_ENABLE_FTS4) */ +#endif /* !defined(SQLITE_ENABLE_FTS4_UNICODE61) */ diff -Nru tracker-0.15.1/src/libtracker-fts/fts3_write.c tracker-0.15.2/src/libtracker-fts/fts3_write.c --- tracker-0.15.1/src/libtracker-fts/fts3_write.c 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/fts3_write.c 2013-02-14 19:30:47.000000000 +0000 @@ -0,0 +1,5402 @@ +/* +** 2009 Oct 23 +** +** The author disclaims copyright to this source code. In place of +** a legal notice, here is a blessing: +** +** May you do good and not evil. +** May you find forgiveness for yourself and forgive others. +** May you share freely, never taking more than you give. +** +****************************************************************************** +** +** This file is part of the SQLite FTS3 extension module. Specifically, +** this file contains code to insert, update and delete rows from FTS3 +** tables. It also contains code to merge FTS3 b-tree segments. Some +** of the sub-routines used to merge segments are also used by the query +** code in fts3.c. +*/ + +#include "fts3Int.h" +#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) + +#include +#include +#include + + +#define FTS_MAX_APPENDABLE_HEIGHT 16 + +/* +** When full-text index nodes are loaded from disk, the buffer that they +** are loaded into has the following number of bytes of padding at the end +** of it. i.e. if a full-text index node is 900 bytes in size, then a buffer +** of 920 bytes is allocated for it. +** +** This means that if we have a pointer into a buffer containing node data, +** it is always safe to read up to two varints from it without risking an +** overread, even if the node data is corrupted. +*/ +#define FTS3_NODE_PADDING (FTS3_VARINT_MAX*2) + +/* +** Under certain circumstances, b-tree nodes (doclists) can be loaded into +** memory incrementally instead of all at once. This can be a big performance +** win (reduced IO and CPU) if SQLite stops calling the virtual table xNext() +** method before retrieving all query results (as may happen, for example, +** if a query has a LIMIT clause). +** +** Incremental loading is used for b-tree nodes FTS3_NODE_CHUNK_THRESHOLD +** bytes and larger. Nodes are loaded in chunks of FTS3_NODE_CHUNKSIZE bytes. +** The code is written so that the hard lower-limit for each of these values +** is 1. Clearly such small values would be inefficient, but can be useful +** for testing purposes. +** +** If this module is built with SQLITE_TEST defined, these constants may +** be overridden at runtime for testing purposes. File fts3_test.c contains +** a Tcl interface to read and write the values. +*/ +#ifdef SQLITE_TEST +int test_fts3_node_chunksize = (4*1024); +int test_fts3_node_chunk_threshold = (4*1024)*4; +# define FTS3_NODE_CHUNKSIZE test_fts3_node_chunksize +# define FTS3_NODE_CHUNK_THRESHOLD test_fts3_node_chunk_threshold +#else +# define FTS3_NODE_CHUNKSIZE (4*1024) +# define FTS3_NODE_CHUNK_THRESHOLD (FTS3_NODE_CHUNKSIZE*4) +#endif + +/* +** The two values that may be meaningfully bound to the :1 parameter in +** statements SQL_REPLACE_STAT and SQL_SELECT_STAT. +*/ +#define FTS_STAT_DOCTOTAL 0 +#define FTS_STAT_INCRMERGEHINT 1 +#define FTS_STAT_AUTOINCRMERGE 2 + +/* +** If FTS_LOG_MERGES is defined, call sqlite3_log() to report each automatic +** and incremental merge operation that takes place. This is used for +** debugging FTS only, it should not usually be turned on in production +** systems. +*/ +#ifdef FTS3_LOG_MERGES +static void fts3LogMerge(int nMerge, sqlite3_int64 iAbsLevel){ + sqlite3_log(SQLITE_OK, "%d-way merge from level %d", nMerge, (int)iAbsLevel); +} +#else +#define fts3LogMerge(x, y) +#endif + + +typedef struct PendingList PendingList; +typedef struct SegmentNode SegmentNode; +typedef struct SegmentWriter SegmentWriter; + +/* +** An instance of the following data structure is used to build doclists +** incrementally. See function fts3PendingListAppend() for details. +*/ +struct PendingList { + int nData; + char *aData; + int nSpace; + sqlite3_int64 iLastDocid; + sqlite3_int64 iLastCol; + sqlite3_int64 iLastPos; +}; + + +/* +** Each cursor has a (possibly empty) linked list of the following objects. +*/ +struct Fts3DeferredToken { + Fts3PhraseToken *pToken; /* Pointer to corresponding expr token */ + int iCol; /* Column token must occur in */ + Fts3DeferredToken *pNext; /* Next in list of deferred tokens */ + PendingList *pList; /* Doclist is assembled here */ +}; + +/* +** An instance of this structure is used to iterate through the terms on +** a contiguous set of segment b-tree leaf nodes. Although the details of +** this structure are only manipulated by code in this file, opaque handles +** of type Fts3SegReader* are also used by code in fts3.c to iterate through +** terms when querying the full-text index. See functions: +** +** sqlite3Fts3SegReaderNew() +** sqlite3Fts3SegReaderFree() +** sqlite3Fts3SegReaderIterate() +** +** Methods used to manipulate Fts3SegReader structures: +** +** fts3SegReaderNext() +** fts3SegReaderFirstDocid() +** fts3SegReaderNextDocid() +*/ +struct Fts3SegReader { + int iIdx; /* Index within level, or 0x7FFFFFFF for PT */ + u8 bLookup; /* True for a lookup only */ + u8 rootOnly; /* True for a root-only reader */ + + sqlite3_int64 iStartBlock; /* Rowid of first leaf block to traverse */ + sqlite3_int64 iLeafEndBlock; /* Rowid of final leaf block to traverse */ + sqlite3_int64 iEndBlock; /* Rowid of final block in segment (or 0) */ + sqlite3_int64 iCurrentBlock; /* Current leaf block (or 0) */ + + char *aNode; /* Pointer to node data (or NULL) */ + int nNode; /* Size of buffer at aNode (or 0) */ + int nPopulate; /* If >0, bytes of buffer aNode[] loaded */ + sqlite3_blob *pBlob; /* If not NULL, blob handle to read node */ + + Fts3HashElem **ppNextElem; + + /* Variables set by fts3SegReaderNext(). These may be read directly + ** by the caller. They are valid from the time SegmentReaderNew() returns + ** until SegmentReaderNext() returns something other than SQLITE_OK + ** (i.e. SQLITE_DONE). + */ + int nTerm; /* Number of bytes in current term */ + char *zTerm; /* Pointer to current term */ + int nTermAlloc; /* Allocated size of zTerm buffer */ + char *aDoclist; /* Pointer to doclist of current entry */ + int nDoclist; /* Size of doclist in current entry */ + + /* The following variables are used by fts3SegReaderNextDocid() to iterate + ** through the current doclist (aDoclist/nDoclist). + */ + char *pOffsetList; + int nOffsetList; /* For descending pending seg-readers only */ + sqlite3_int64 iDocid; +}; + +#define fts3SegReaderIsPending(p) ((p)->ppNextElem!=0) +#define fts3SegReaderIsRootOnly(p) ((p)->rootOnly!=0) + +/* +** An instance of this structure is used to create a segment b-tree in the +** database. The internal details of this type are only accessed by the +** following functions: +** +** fts3SegWriterAdd() +** fts3SegWriterFlush() +** fts3SegWriterFree() +*/ +struct SegmentWriter { + SegmentNode *pTree; /* Pointer to interior tree structure */ + sqlite3_int64 iFirst; /* First slot in %_segments written */ + sqlite3_int64 iFree; /* Next free slot in %_segments */ + char *zTerm; /* Pointer to previous term buffer */ + int nTerm; /* Number of bytes in zTerm */ + int nMalloc; /* Size of malloc'd buffer at zMalloc */ + char *zMalloc; /* Malloc'd space (possibly) used for zTerm */ + int nSize; /* Size of allocation at aData */ + int nData; /* Bytes of data in aData */ + char *aData; /* Pointer to block from malloc() */ +}; + +/* +** Type SegmentNode is used by the following three functions to create +** the interior part of the segment b+-tree structures (everything except +** the leaf nodes). These functions and type are only ever used by code +** within the fts3SegWriterXXX() family of functions described above. +** +** fts3NodeAddTerm() +** fts3NodeWrite() +** fts3NodeFree() +** +** When a b+tree is written to the database (either as a result of a merge +** or the pending-terms table being flushed), leaves are written into the +** database file as soon as they are completely populated. The interior of +** the tree is assembled in memory and written out only once all leaves have +** been populated and stored. This is Ok, as the b+-tree fanout is usually +** very large, meaning that the interior of the tree consumes relatively +** little memory. +*/ +struct SegmentNode { + SegmentNode *pParent; /* Parent node (or NULL for root node) */ + SegmentNode *pRight; /* Pointer to right-sibling */ + SegmentNode *pLeftmost; /* Pointer to left-most node of this depth */ + int nEntry; /* Number of terms written to node so far */ + char *zTerm; /* Pointer to previous term buffer */ + int nTerm; /* Number of bytes in zTerm */ + int nMalloc; /* Size of malloc'd buffer at zMalloc */ + char *zMalloc; /* Malloc'd space (possibly) used for zTerm */ + int nData; /* Bytes of valid data so far */ + char *aData; /* Node data */ +}; + +/* +** Valid values for the second argument to fts3SqlStmt(). +*/ +#define SQL_DELETE_CONTENT 0 +#define SQL_IS_EMPTY 1 +#define SQL_DELETE_ALL_CONTENT 2 +#define SQL_DELETE_ALL_SEGMENTS 3 +#define SQL_DELETE_ALL_SEGDIR 4 +#define SQL_DELETE_ALL_DOCSIZE 5 +#define SQL_DELETE_ALL_STAT 6 +#define SQL_SELECT_CONTENT_BY_ROWID 7 +#define SQL_NEXT_SEGMENT_INDEX 8 +#define SQL_INSERT_SEGMENTS 9 +#define SQL_NEXT_SEGMENTS_ID 10 +#define SQL_INSERT_SEGDIR 11 +#define SQL_SELECT_LEVEL 12 +#define SQL_SELECT_LEVEL_RANGE 13 +#define SQL_SELECT_LEVEL_COUNT 14 +#define SQL_SELECT_SEGDIR_MAX_LEVEL 15 +#define SQL_DELETE_SEGDIR_LEVEL 16 +#define SQL_DELETE_SEGMENTS_RANGE 17 +#define SQL_CONTENT_INSERT 18 +#define SQL_DELETE_DOCSIZE 19 +#define SQL_REPLACE_DOCSIZE 20 +#define SQL_SELECT_DOCSIZE 21 +#define SQL_SELECT_STAT 22 +#define SQL_REPLACE_STAT 23 + +#define SQL_SELECT_ALL_PREFIX_LEVEL 24 +#define SQL_DELETE_ALL_TERMS_SEGDIR 25 +#define SQL_DELETE_SEGDIR_RANGE 26 +#define SQL_SELECT_ALL_LANGID 27 +#define SQL_FIND_MERGE_LEVEL 28 +#define SQL_MAX_LEAF_NODE_ESTIMATE 29 +#define SQL_DELETE_SEGDIR_ENTRY 30 +#define SQL_SHIFT_SEGDIR_ENTRY 31 +#define SQL_SELECT_SEGDIR 32 +#define SQL_CHOMP_SEGDIR 33 +#define SQL_SEGMENT_IS_APPENDABLE 34 +#define SQL_SELECT_INDEXES 35 +#define SQL_SELECT_MXLEVEL 36 + +/* +** This function is used to obtain an SQLite prepared statement handle +** for the statement identified by the second argument. If successful, +** *pp is set to the requested statement handle and SQLITE_OK returned. +** Otherwise, an SQLite error code is returned and *pp is set to 0. +** +** If argument apVal is not NULL, then it must point to an array with +** at least as many entries as the requested statement has bound +** parameters. The values are bound to the statements parameters before +** returning. +*/ +static int fts3SqlStmt( + Fts3Table *p, /* Virtual table handle */ + int eStmt, /* One of the SQL_XXX constants above */ + sqlite3_stmt **pp, /* OUT: Statement handle */ + sqlite3_value **apVal /* Values to bind to statement */ +){ + const char *azSql[] = { +/* 0 */ "DELETE FROM %Q.'%q_content' WHERE rowid = ?", +/* 1 */ "SELECT NOT EXISTS(SELECT docid FROM %Q.'%q_content' WHERE rowid!=?)", +/* 2 */ "DELETE FROM %Q.'%q_content'", +/* 3 */ "DELETE FROM %Q.'%q_segments'", +/* 4 */ "DELETE FROM %Q.'%q_segdir'", +/* 5 */ "DELETE FROM %Q.'%q_docsize'", +/* 6 */ "DELETE FROM %Q.'%q_stat'", +/* 7 */ "SELECT %s WHERE rowid=?", +/* 8 */ "SELECT (SELECT max(idx) FROM %Q.'%q_segdir' WHERE level = ?) + 1", +/* 9 */ "REPLACE INTO %Q.'%q_segments'(blockid, block) VALUES(?, ?)", +/* 10 */ "SELECT coalesce((SELECT max(blockid) FROM %Q.'%q_segments') + 1, 1)", +/* 11 */ "REPLACE INTO %Q.'%q_segdir' VALUES(?,?,?,?,?,?)", + + /* Return segments in order from oldest to newest.*/ +/* 12 */ "SELECT idx, start_block, leaves_end_block, end_block, root " + "FROM %Q.'%q_segdir' WHERE level = ? ORDER BY idx ASC", +/* 13 */ "SELECT idx, start_block, leaves_end_block, end_block, root " + "FROM %Q.'%q_segdir' WHERE level BETWEEN ? AND ?" + "ORDER BY level DESC, idx ASC", + +/* 14 */ "SELECT count(*) FROM %Q.'%q_segdir' WHERE level = ?", +/* 15 */ "SELECT max(level) FROM %Q.'%q_segdir' WHERE level BETWEEN ? AND ?", + +/* 16 */ "DELETE FROM %Q.'%q_segdir' WHERE level = ?", +/* 17 */ "DELETE FROM %Q.'%q_segments' WHERE blockid BETWEEN ? AND ?", +/* 18 */ "INSERT INTO %Q.'%q_content' VALUES(%s)", +/* 19 */ "DELETE FROM %Q.'%q_docsize' WHERE docid = ?", +/* 20 */ "REPLACE INTO %Q.'%q_docsize' VALUES(?,?)", +/* 21 */ "SELECT size FROM %Q.'%q_docsize' WHERE docid=?", +/* 22 */ "SELECT value FROM %Q.'%q_stat' WHERE id=?", +/* 23 */ "REPLACE INTO %Q.'%q_stat' VALUES(?,?)", +/* 24 */ "", +/* 25 */ "", + +/* 26 */ "DELETE FROM %Q.'%q_segdir' WHERE level BETWEEN ? AND ?", +/* 27 */ "SELECT DISTINCT level / (1024 * ?) FROM %Q.'%q_segdir'", + +/* This statement is used to determine which level to read the input from +** when performing an incremental merge. It returns the absolute level number +** of the oldest level in the db that contains at least ? segments. Or, +** if no level in the FTS index contains more than ? segments, the statement +** returns zero rows. */ +/* 28 */ "SELECT level FROM %Q.'%q_segdir' GROUP BY level HAVING count(*)>=?" + " ORDER BY (level %% 1024) ASC LIMIT 1", + +/* Estimate the upper limit on the number of leaf nodes in a new segment +** created by merging the oldest :2 segments from absolute level :1. See +** function sqlite3Fts3Incrmerge() for details. */ +/* 29 */ "SELECT 2 * total(1 + leaves_end_block - start_block) " + " FROM %Q.'%q_segdir' WHERE level = ? AND idx < ?", + +/* SQL_DELETE_SEGDIR_ENTRY +** Delete the %_segdir entry on absolute level :1 with index :2. */ +/* 30 */ "DELETE FROM %Q.'%q_segdir' WHERE level = ? AND idx = ?", + +/* SQL_SHIFT_SEGDIR_ENTRY +** Modify the idx value for the segment with idx=:3 on absolute level :2 +** to :1. */ +/* 31 */ "UPDATE %Q.'%q_segdir' SET idx = ? WHERE level=? AND idx=?", + +/* SQL_SELECT_SEGDIR +** Read a single entry from the %_segdir table. The entry from absolute +** level :1 with index value :2. */ +/* 32 */ "SELECT idx, start_block, leaves_end_block, end_block, root " + "FROM %Q.'%q_segdir' WHERE level = ? AND idx = ?", + +/* SQL_CHOMP_SEGDIR +** Update the start_block (:1) and root (:2) fields of the %_segdir +** entry located on absolute level :3 with index :4. */ +/* 33 */ "UPDATE %Q.'%q_segdir' SET start_block = ?, root = ?" + "WHERE level = ? AND idx = ?", + +/* SQL_SEGMENT_IS_APPENDABLE +** Return a single row if the segment with end_block=? is appendable. Or +** no rows otherwise. */ +/* 34 */ "SELECT 1 FROM %Q.'%q_segments' WHERE blockid=? AND block IS NULL", + +/* SQL_SELECT_INDEXES +** Return the list of valid segment indexes for absolute level ? */ +/* 35 */ "SELECT idx FROM %Q.'%q_segdir' WHERE level=? ORDER BY 1 ASC", + +/* SQL_SELECT_MXLEVEL +** Return the largest relative level in the FTS index or indexes. */ +/* 36 */ "SELECT max( level %% 1024 ) FROM %Q.'%q_segdir'" + }; + int rc = SQLITE_OK; + sqlite3_stmt *pStmt; + + assert( SizeofArray(azSql)==SizeofArray(p->aStmt) ); + assert( eStmt=0 ); + + pStmt = p->aStmt[eStmt]; + if( !pStmt ){ + char *zSql; + if( eStmt==SQL_CONTENT_INSERT ){ + zSql = sqlite3_mprintf(azSql[eStmt], p->zDb, p->zName, p->zWriteExprlist); + }else if( eStmt==SQL_SELECT_CONTENT_BY_ROWID ){ + zSql = sqlite3_mprintf(azSql[eStmt], p->zReadExprlist); + }else{ + zSql = sqlite3_mprintf(azSql[eStmt], p->zDb, p->zName); + } + if( !zSql ){ + rc = SQLITE_NOMEM; + }else{ + rc = sqlite3_prepare_v2(p->db, zSql, -1, &pStmt, NULL); + sqlite3_free(zSql); + assert( rc==SQLITE_OK || pStmt==0 ); + p->aStmt[eStmt] = pStmt; + } + } + if( apVal ){ + int i; + int nParam = sqlite3_bind_parameter_count(pStmt); + for(i=0; rc==SQLITE_OK && izContentTbl==0 ){ + rc = fts3SqlStmt(p, SQL_SELECT_CONTENT_BY_ROWID, &pStmt, 0); + if( rc==SQLITE_OK ){ + sqlite3_bind_null(pStmt, 1); + sqlite3_step(pStmt); + rc = sqlite3_reset(pStmt); + } + }else{ + rc = SQLITE_OK; + } + + return rc; +} + +/* +** FTS maintains a separate indexes for each language-id (a 32-bit integer). +** Within each language id, a separate index is maintained to store the +** document terms, and each configured prefix size (configured the FTS +** "prefix=" option). And each index consists of multiple levels ("relative +** levels"). +** +** All three of these values (the language id, the specific index and the +** level within the index) are encoded in 64-bit integer values stored +** in the %_segdir table on disk. This function is used to convert three +** separate component values into the single 64-bit integer value that +** can be used to query the %_segdir table. +** +** Specifically, each language-id/index combination is allocated 1024 +** 64-bit integer level values ("absolute levels"). The main terms index +** for language-id 0 is allocate values 0-1023. The first prefix index +** (if any) for language-id 0 is allocated values 1024-2047. And so on. +** Language 1 indexes are allocated immediately following language 0. +** +** So, for a system with nPrefix prefix indexes configured, the block of +** absolute levels that corresponds to language-id iLangid and index +** iIndex starts at absolute level ((iLangid * (nPrefix+1) + iIndex) * 1024). +*/ +static sqlite3_int64 getAbsoluteLevel( + Fts3Table *p, /* FTS3 table handle */ + int iLangid, /* Language id */ + int iIndex, /* Index in p->aIndex[] */ + int iLevel /* Level of segments */ +){ + sqlite3_int64 iBase; /* First absolute level for iLangid/iIndex */ + assert( iLangid>=0 ); + assert( p->nIndex>0 ); + assert( iIndex>=0 && iIndexnIndex ); + + iBase = ((sqlite3_int64)iLangid * p->nIndex + iIndex) * FTS3_SEGDIR_MAXLEVEL; + return iBase + iLevel; +} + +/* +** Set *ppStmt to a statement handle that may be used to iterate through +** all rows in the %_segdir table, from oldest to newest. If successful, +** return SQLITE_OK. If an error occurs while preparing the statement, +** return an SQLite error code. +** +** There is only ever one instance of this SQL statement compiled for +** each FTS3 table. +** +** The statement returns the following columns from the %_segdir table: +** +** 0: idx +** 1: start_block +** 2: leaves_end_block +** 3: end_block +** 4: root +*/ +int sqlite3Fts3AllSegdirs( + Fts3Table *p, /* FTS3 table */ + int iLangid, /* Language being queried */ + int iIndex, /* Index for p->aIndex[] */ + int iLevel, /* Level to select (relative level) */ + sqlite3_stmt **ppStmt /* OUT: Compiled statement */ +){ + int rc; + sqlite3_stmt *pStmt = 0; + + assert( iLevel==FTS3_SEGCURSOR_ALL || iLevel>=0 ); + assert( iLevel=0 && iIndexnIndex ); + + if( iLevel<0 ){ + /* "SELECT * FROM %_segdir WHERE level BETWEEN ? AND ? ORDER BY ..." */ + rc = fts3SqlStmt(p, SQL_SELECT_LEVEL_RANGE, &pStmt, 0); + if( rc==SQLITE_OK ){ + sqlite3_bind_int64(pStmt, 1, getAbsoluteLevel(p, iLangid, iIndex, 0)); + sqlite3_bind_int64(pStmt, 2, + getAbsoluteLevel(p, iLangid, iIndex, FTS3_SEGDIR_MAXLEVEL-1) + ); + } + }else{ + /* "SELECT * FROM %_segdir WHERE level = ? ORDER BY ..." */ + rc = fts3SqlStmt(p, SQL_SELECT_LEVEL, &pStmt, 0); + if( rc==SQLITE_OK ){ + sqlite3_bind_int64(pStmt, 1, getAbsoluteLevel(p, iLangid, iIndex,iLevel)); + } + } + *ppStmt = pStmt; + return rc; +} + + +/* +** Append a single varint to a PendingList buffer. SQLITE_OK is returned +** if successful, or an SQLite error code otherwise. +** +** This function also serves to allocate the PendingList structure itself. +** For example, to create a new PendingList structure containing two +** varints: +** +** PendingList *p = 0; +** fts3PendingListAppendVarint(&p, 1); +** fts3PendingListAppendVarint(&p, 2); +*/ +static int fts3PendingListAppendVarint( + PendingList **pp, /* IN/OUT: Pointer to PendingList struct */ + sqlite3_int64 i /* Value to append to data */ +){ + PendingList *p = *pp; + + /* Allocate or grow the PendingList as required. */ + if( !p ){ + p = sqlite3_malloc(sizeof(*p) + 100); + if( !p ){ + return SQLITE_NOMEM; + } + p->nSpace = 100; + p->aData = (char *)&p[1]; + p->nData = 0; + } + else if( p->nData+FTS3_VARINT_MAX+1>p->nSpace ){ + int nNew = p->nSpace * 2; + p = sqlite3_realloc(p, sizeof(*p) + nNew); + if( !p ){ + sqlite3_free(*pp); + *pp = 0; + return SQLITE_NOMEM; + } + p->nSpace = nNew; + p->aData = (char *)&p[1]; + } + + /* Append the new serialized varint to the end of the list. */ + p->nData += sqlite3Fts3PutVarint(&p->aData[p->nData], i); + p->aData[p->nData] = '\0'; + *pp = p; + return SQLITE_OK; +} + +/* +** Add a docid/column/position entry to a PendingList structure. Non-zero +** is returned if the structure is sqlite3_realloced as part of adding +** the entry. Otherwise, zero. +** +** If an OOM error occurs, *pRc is set to SQLITE_NOMEM before returning. +** Zero is always returned in this case. Otherwise, if no OOM error occurs, +** it is set to SQLITE_OK. +*/ +static int fts3PendingListAppend( + PendingList **pp, /* IN/OUT: PendingList structure */ + sqlite3_int64 iDocid, /* Docid for entry to add */ + sqlite3_int64 iCol, /* Column for entry to add */ + sqlite3_int64 iPos, /* Position of term for entry to add */ + int *pRc /* OUT: Return code */ +){ + PendingList *p = *pp; + int rc = SQLITE_OK; + + assert( !p || p->iLastDocid<=iDocid ); + + if( !p || p->iLastDocid!=iDocid ){ + sqlite3_int64 iDelta = iDocid - (p ? p->iLastDocid : 0); + if( p ){ + assert( p->nDatanSpace ); + assert( p->aData[p->nData]==0 ); + p->nData++; + } + if( SQLITE_OK!=(rc = fts3PendingListAppendVarint(&p, iDelta)) ){ + goto pendinglistappend_out; + } + p->iLastCol = -1; + p->iLastPos = 0; + p->iLastDocid = iDocid; + } + if( iCol>0 && p->iLastCol!=iCol ){ + if( SQLITE_OK!=(rc = fts3PendingListAppendVarint(&p, 1)) + || SQLITE_OK!=(rc = fts3PendingListAppendVarint(&p, iCol)) + ){ + goto pendinglistappend_out; + } + p->iLastCol = iCol; + p->iLastPos = 0; + } + if( iCol>=0 ){ + assert( iPos>p->iLastPos || (iPos==0 && p->iLastPos==0) ); + rc = fts3PendingListAppendVarint(&p, 2+iPos-p->iLastPos); + if( rc==SQLITE_OK ){ + p->iLastPos = iPos; + } + } + + pendinglistappend_out: + *pRc = rc; + if( p!=*pp ){ + *pp = p; + return 1; + } + return 0; +} + +/* +** Free a PendingList object allocated by fts3PendingListAppend(). +*/ +static void fts3PendingListDelete(PendingList *pList){ + sqlite3_free(pList); +} + +/* +** Add an entry to one of the pending-terms hash tables. +*/ +static int fts3PendingTermsAddOne( + Fts3Table *p, + int iCol, + int iPos, + Fts3Hash *pHash, /* Pending terms hash table to add entry to */ + const char *zToken, + int nToken +){ + PendingList *pList; + int rc = SQLITE_OK; + + pList = (PendingList *)fts3HashFind(pHash, zToken, nToken); + if( pList ){ + p->nPendingData -= (pList->nData + nToken + sizeof(Fts3HashElem)); + } + if( fts3PendingListAppend(&pList, p->iPrevDocid, iCol, iPos, &rc) ){ + if( pList==fts3HashInsert(pHash, zToken, nToken, pList) ){ + /* Malloc failed while inserting the new entry. This can only + ** happen if there was no previous entry for this token. + */ + assert( 0==fts3HashFind(pHash, zToken, nToken) ); + sqlite3_free(pList); + rc = SQLITE_NOMEM; + } + } + if( rc==SQLITE_OK ){ + p->nPendingData += (pList->nData + nToken + sizeof(Fts3HashElem)); + } + return rc; +} + +/* +** Tokenize the nul-terminated string zText and add all tokens to the +** pending-terms hash-table. The docid used is that currently stored in +** p->iPrevDocid, and the column is specified by argument iCol. +** +** If successful, SQLITE_OK is returned. Otherwise, an SQLite error code. +*/ +static int fts3PendingTermsAdd( + Fts3Table *p, /* Table into which text will be inserted */ + int iLangid, /* Language id to use */ + const char *zText, /* Text of document to be inserted */ + int iCol, /* Column into which text is being inserted */ + u32 *pnWord /* IN/OUT: Incr. by number tokens inserted */ +){ + int rc; + int iStart = 0; + int iEnd = 0; + int iPos = 0; + int nWord = 0; + + char const *zToken; + int nToken = 0; + + sqlite3_tokenizer *pTokenizer = p->pTokenizer; + sqlite3_tokenizer_module const *pModule = pTokenizer->pModule; + sqlite3_tokenizer_cursor *pCsr; + int (*xNext)(sqlite3_tokenizer_cursor *pCursor, + const char**,int*,int*,int*,int*); + + assert( pTokenizer && pModule ); + + /* If the user has inserted a NULL value, this function may be called with + ** zText==0. In this case, add zero token entries to the hash table and + ** return early. */ + if( zText==0 ){ + *pnWord = 0; + return SQLITE_OK; + } + + rc = sqlite3Fts3OpenTokenizer(pTokenizer, iLangid, zText, -1, &pCsr); + if( rc!=SQLITE_OK ){ + return rc; + } + + xNext = pModule->xNext; + while( SQLITE_OK==rc + && SQLITE_OK==(rc = xNext(pCsr, &zToken, &nToken, &iStart, &iEnd, &iPos)) + ){ + int i; + if( iPos>=nWord ) nWord = iPos+1; + + /* Positions cannot be negative; we use -1 as a terminator internally. + ** Tokens must have a non-zero length. + */ + if( iPos<0 || !zToken || nToken<=0 ){ + rc = SQLITE_ERROR; + break; + } + + /* Add the term to the terms index */ + rc = fts3PendingTermsAddOne( + p, iCol, iPos, &p->aIndex[0].hPending, zToken, nToken + ); + + /* Add the term to each of the prefix indexes that it is not too + ** short for. */ + for(i=1; rc==SQLITE_OK && inIndex; i++){ + struct Fts3Index *pIndex = &p->aIndex[i]; + if( nTokennPrefix ) continue; + rc = fts3PendingTermsAddOne( + p, iCol, iPos, &pIndex->hPending, zToken, pIndex->nPrefix + ); + } + } + + pModule->xClose(pCsr); + *pnWord += nWord; + return (rc==SQLITE_DONE ? SQLITE_OK : rc); +} + +/* +** Calling this function indicates that subsequent calls to +** fts3PendingTermsAdd() are to add term/position-list pairs for the +** contents of the document with docid iDocid. +*/ +static int fts3PendingTermsDocid( + Fts3Table *p, /* Full-text table handle */ + int iLangid, /* Language id of row being written */ + sqlite_int64 iDocid /* Docid of row being written */ +){ + assert( iLangid>=0 ); + + /* TODO(shess) Explore whether partially flushing the buffer on + ** forced-flush would provide better performance. I suspect that if + ** we ordered the doclists by size and flushed the largest until the + ** buffer was half empty, that would let the less frequent terms + ** generate longer doclists. + */ + if( iDocid<=p->iPrevDocid + || p->iPrevLangid!=iLangid + || p->nPendingData>p->nMaxPendingData + ){ + int rc = sqlite3Fts3PendingTermsFlush(p); + if( rc!=SQLITE_OK ) return rc; + } + p->iPrevDocid = iDocid; + p->iPrevLangid = iLangid; + return SQLITE_OK; +} + +/* +** Discard the contents of the pending-terms hash tables. +*/ +void sqlite3Fts3PendingTermsClear(Fts3Table *p){ + int i; + for(i=0; inIndex; i++){ + Fts3HashElem *pElem; + Fts3Hash *pHash = &p->aIndex[i].hPending; + for(pElem=fts3HashFirst(pHash); pElem; pElem=fts3HashNext(pElem)){ + PendingList *pList = (PendingList *)fts3HashData(pElem); + fts3PendingListDelete(pList); + } + fts3HashClear(pHash); + } + p->nPendingData = 0; +} + +/* +** This function is called by the xUpdate() method as part of an INSERT +** operation. It adds entries for each term in the new record to the +** pendingTerms hash table. +** +** Argument apVal is the same as the similarly named argument passed to +** fts3InsertData(). Parameter iDocid is the docid of the new row. +*/ +static int fts3InsertTerms( + Fts3Table *p, + int iLangid, + sqlite3_value **apVal, + u32 *aSz +){ + int i; /* Iterator variable */ + for(i=2; inColumn+2; i++){ + const char *zText = (const char *)sqlite3_value_text(apVal[i]); + int rc = fts3PendingTermsAdd(p, iLangid, zText, i-2, &aSz[i-2]); + if( rc!=SQLITE_OK ){ + return rc; + } + aSz[p->nColumn] += sqlite3_value_bytes(apVal[i]); + } + return SQLITE_OK; +} + +/* +** This function is called by the xUpdate() method for an INSERT operation. +** The apVal parameter is passed a copy of the apVal argument passed by +** SQLite to the xUpdate() method. i.e: +** +** apVal[0] Not used for INSERT. +** apVal[1] rowid +** apVal[2] Left-most user-defined column +** ... +** apVal[p->nColumn+1] Right-most user-defined column +** apVal[p->nColumn+2] Hidden column with same name as table +** apVal[p->nColumn+3] Hidden "docid" column (alias for rowid) +** apVal[p->nColumn+4] Hidden languageid column +*/ +static int fts3InsertData( + Fts3Table *p, /* Full-text table */ + sqlite3_value **apVal, /* Array of values to insert */ + sqlite3_int64 *piDocid /* OUT: Docid for row just inserted */ +){ + int rc; /* Return code */ + sqlite3_stmt *pContentInsert; /* INSERT INTO %_content VALUES(...) */ + + if( p->zContentTbl ){ + sqlite3_value *pRowid = apVal[p->nColumn+3]; + if( sqlite3_value_type(pRowid)==SQLITE_NULL ){ + pRowid = apVal[1]; + } + if( sqlite3_value_type(pRowid)!=SQLITE_INTEGER ){ + return SQLITE_CONSTRAINT; + } + *piDocid = sqlite3_value_int64(pRowid); + return SQLITE_OK; + } + + /* Locate the statement handle used to insert data into the %_content + ** table. The SQL for this statement is: + ** + ** INSERT INTO %_content VALUES(?, ?, ?, ...) + ** + ** The statement features N '?' variables, where N is the number of user + ** defined columns in the FTS3 table, plus one for the docid field. + */ + rc = fts3SqlStmt(p, SQL_CONTENT_INSERT, &pContentInsert, &apVal[1]); + if( rc==SQLITE_OK && p->zLanguageid ){ + rc = sqlite3_bind_int( + pContentInsert, p->nColumn+2, + sqlite3_value_int(apVal[p->nColumn+4]) + ); + } + if( rc!=SQLITE_OK ) return rc; + + /* There is a quirk here. The users INSERT statement may have specified + ** a value for the "rowid" field, for the "docid" field, or for both. + ** Which is a problem, since "rowid" and "docid" are aliases for the + ** same value. For example: + ** + ** INSERT INTO fts3tbl(rowid, docid) VALUES(1, 2); + ** + ** In FTS3, this is an error. It is an error to specify non-NULL values + ** for both docid and some other rowid alias. + */ + if( SQLITE_NULL!=sqlite3_value_type(apVal[3+p->nColumn]) ){ + if( SQLITE_NULL==sqlite3_value_type(apVal[0]) + && SQLITE_NULL!=sqlite3_value_type(apVal[1]) + ){ + /* A rowid/docid conflict. */ + return SQLITE_ERROR; + } + rc = sqlite3_bind_value(pContentInsert, 1, apVal[3+p->nColumn]); + if( rc!=SQLITE_OK ) return rc; + } + + /* Execute the statement to insert the record. Set *piDocid to the + ** new docid value. + */ + sqlite3_step(pContentInsert); + rc = sqlite3_reset(pContentInsert); + + *piDocid = sqlite3_last_insert_rowid(p->db); + return rc; +} + + + +/* +** Remove all data from the FTS3 table. Clear the hash table containing +** pending terms. +*/ +static int fts3DeleteAll(Fts3Table *p, int bContent){ + int rc = SQLITE_OK; /* Return code */ + + /* Discard the contents of the pending-terms hash table. */ + sqlite3Fts3PendingTermsClear(p); + + /* Delete everything from the shadow tables. Except, leave %_content as + ** is if bContent is false. */ + assert( p->zContentTbl==0 || bContent==0 ); + if( bContent ) fts3SqlExec(&rc, p, SQL_DELETE_ALL_CONTENT, 0); + fts3SqlExec(&rc, p, SQL_DELETE_ALL_SEGMENTS, 0); + fts3SqlExec(&rc, p, SQL_DELETE_ALL_SEGDIR, 0); + if( p->bHasDocsize ){ + fts3SqlExec(&rc, p, SQL_DELETE_ALL_DOCSIZE, 0); + } + if( p->bHasStat ){ + fts3SqlExec(&rc, p, SQL_DELETE_ALL_STAT, 0); + } + return rc; +} + +/* +** +*/ +static int langidFromSelect(Fts3Table *p, sqlite3_stmt *pSelect){ + int iLangid = 0; + if( p->zLanguageid ) iLangid = sqlite3_column_int(pSelect, p->nColumn+1); + return iLangid; +} + +/* +** The first element in the apVal[] array is assumed to contain the docid +** (an integer) of a row about to be deleted. Remove all terms from the +** full-text index. +*/ +static void fts3DeleteTerms( + int *pRC, /* Result code */ + Fts3Table *p, /* The FTS table to delete from */ + sqlite3_value *pRowid, /* The docid to be deleted */ + u32 *aSz, /* Sizes of deleted document written here */ + int *pbFound /* OUT: Set to true if row really does exist */ +){ + int rc; + sqlite3_stmt *pSelect; + + assert( *pbFound==0 ); + if( *pRC ) return; + rc = fts3SqlStmt(p, SQL_SELECT_CONTENT_BY_ROWID, &pSelect, &pRowid); + if( rc==SQLITE_OK ){ + if( SQLITE_ROW==sqlite3_step(pSelect) ){ + int i; + int iLangid = langidFromSelect(p, pSelect); + rc = fts3PendingTermsDocid(p, iLangid, sqlite3_column_int64(pSelect, 0)); + for(i=1; rc==SQLITE_OK && i<=p->nColumn; i++){ + const char *zText = (const char *)sqlite3_column_text(pSelect, i); + rc = fts3PendingTermsAdd(p, iLangid, zText, -1, &aSz[i-1]); + aSz[p->nColumn] += sqlite3_column_bytes(pSelect, i); + } + if( rc!=SQLITE_OK ){ + sqlite3_reset(pSelect); + *pRC = rc; + return; + } + *pbFound = 1; + } + rc = sqlite3_reset(pSelect); + }else{ + sqlite3_reset(pSelect); + } + *pRC = rc; +} + +/* +** Forward declaration to account for the circular dependency between +** functions fts3SegmentMerge() and fts3AllocateSegdirIdx(). +*/ +static int fts3SegmentMerge(Fts3Table *, int, int, int); + +/* +** This function allocates a new level iLevel index in the segdir table. +** Usually, indexes are allocated within a level sequentially starting +** with 0, so the allocated index is one greater than the value returned +** by: +** +** SELECT max(idx) FROM %_segdir WHERE level = :iLevel +** +** However, if there are already FTS3_MERGE_COUNT indexes at the requested +** level, they are merged into a single level (iLevel+1) segment and the +** allocated index is 0. +** +** If successful, *piIdx is set to the allocated index slot and SQLITE_OK +** returned. Otherwise, an SQLite error code is returned. +*/ +static int fts3AllocateSegdirIdx( + Fts3Table *p, + int iLangid, /* Language id */ + int iIndex, /* Index for p->aIndex */ + int iLevel, + int *piIdx +){ + int rc; /* Return Code */ + sqlite3_stmt *pNextIdx; /* Query for next idx at level iLevel */ + int iNext = 0; /* Result of query pNextIdx */ + + assert( iLangid>=0 ); + assert( p->nIndex>=1 ); + + /* Set variable iNext to the next available segdir index at level iLevel. */ + rc = fts3SqlStmt(p, SQL_NEXT_SEGMENT_INDEX, &pNextIdx, 0); + if( rc==SQLITE_OK ){ + sqlite3_bind_int64( + pNextIdx, 1, getAbsoluteLevel(p, iLangid, iIndex, iLevel) + ); + if( SQLITE_ROW==sqlite3_step(pNextIdx) ){ + iNext = sqlite3_column_int(pNextIdx, 0); + } + rc = sqlite3_reset(pNextIdx); + } + + if( rc==SQLITE_OK ){ + /* If iNext is FTS3_MERGE_COUNT, indicating that level iLevel is already + ** full, merge all segments in level iLevel into a single iLevel+1 + ** segment and allocate (newly freed) index 0 at level iLevel. Otherwise, + ** if iNext is less than FTS3_MERGE_COUNT, allocate index iNext. + */ + if( iNext>=FTS3_MERGE_COUNT ){ + fts3LogMerge(16, getAbsoluteLevel(p, iLangid, iIndex, iLevel)); + rc = fts3SegmentMerge(p, iLangid, iIndex, iLevel); + *piIdx = 0; + }else{ + *piIdx = iNext; + } + } + + return rc; +} + +/* +** The %_segments table is declared as follows: +** +** CREATE TABLE %_segments(blockid INTEGER PRIMARY KEY, block BLOB) +** +** This function reads data from a single row of the %_segments table. The +** specific row is identified by the iBlockid parameter. If paBlob is not +** NULL, then a buffer is allocated using sqlite3_malloc() and populated +** with the contents of the blob stored in the "block" column of the +** identified table row is. Whether or not paBlob is NULL, *pnBlob is set +** to the size of the blob in bytes before returning. +** +** If an error occurs, or the table does not contain the specified row, +** an SQLite error code is returned. Otherwise, SQLITE_OK is returned. If +** paBlob is non-NULL, then it is the responsibility of the caller to +** eventually free the returned buffer. +** +** This function may leave an open sqlite3_blob* handle in the +** Fts3Table.pSegments variable. This handle is reused by subsequent calls +** to this function. The handle may be closed by calling the +** sqlite3Fts3SegmentsClose() function. Reusing a blob handle is a handy +** performance improvement, but the blob handle should always be closed +** before control is returned to the user (to prevent a lock being held +** on the database file for longer than necessary). Thus, any virtual table +** method (xFilter etc.) that may directly or indirectly call this function +** must call sqlite3Fts3SegmentsClose() before returning. +*/ +int sqlite3Fts3ReadBlock( + Fts3Table *p, /* FTS3 table handle */ + sqlite3_int64 iBlockid, /* Access the row with blockid=$iBlockid */ + char **paBlob, /* OUT: Blob data in malloc'd buffer */ + int *pnBlob, /* OUT: Size of blob data */ + int *pnLoad /* OUT: Bytes actually loaded */ +){ + int rc; /* Return code */ + + /* pnBlob must be non-NULL. paBlob may be NULL or non-NULL. */ + assert( pnBlob ); + + if( p->pSegments ){ + rc = sqlite3_blob_reopen(p->pSegments, iBlockid); + }else{ + if( 0==p->zSegmentsTbl ){ + p->zSegmentsTbl = sqlite3_mprintf("%s_segments", p->zName); + if( 0==p->zSegmentsTbl ) return SQLITE_NOMEM; + } + rc = sqlite3_blob_open( + p->db, p->zDb, p->zSegmentsTbl, "block", iBlockid, 0, &p->pSegments + ); + } + + if( rc==SQLITE_OK ){ + int nByte = sqlite3_blob_bytes(p->pSegments); + *pnBlob = nByte; + if( paBlob ){ + char *aByte = sqlite3_malloc(nByte + FTS3_NODE_PADDING); + if( !aByte ){ + rc = SQLITE_NOMEM; + }else{ + if( pnLoad && nByte>(FTS3_NODE_CHUNK_THRESHOLD) ){ + nByte = FTS3_NODE_CHUNKSIZE; + *pnLoad = nByte; + } + rc = sqlite3_blob_read(p->pSegments, aByte, nByte, 0); + memset(&aByte[nByte], 0, FTS3_NODE_PADDING); + if( rc!=SQLITE_OK ){ + sqlite3_free(aByte); + aByte = 0; + } + } + *paBlob = aByte; + } + } + + return rc; +} + +/* +** Close the blob handle at p->pSegments, if it is open. See comments above +** the sqlite3Fts3ReadBlock() function for details. +*/ +void sqlite3Fts3SegmentsClose(Fts3Table *p){ + sqlite3_blob_close(p->pSegments); + p->pSegments = 0; +} + +static int fts3SegReaderIncrRead(Fts3SegReader *pReader){ + int nRead; /* Number of bytes to read */ + int rc; /* Return code */ + + nRead = MIN(pReader->nNode - pReader->nPopulate, FTS3_NODE_CHUNKSIZE); + rc = sqlite3_blob_read( + pReader->pBlob, + &pReader->aNode[pReader->nPopulate], + nRead, + pReader->nPopulate + ); + + if( rc==SQLITE_OK ){ + pReader->nPopulate += nRead; + memset(&pReader->aNode[pReader->nPopulate], 0, FTS3_NODE_PADDING); + if( pReader->nPopulate==pReader->nNode ){ + sqlite3_blob_close(pReader->pBlob); + pReader->pBlob = 0; + pReader->nPopulate = 0; + } + } + return rc; +} + +static int fts3SegReaderRequire(Fts3SegReader *pReader, char *pFrom, int nByte){ + int rc = SQLITE_OK; + assert( !pReader->pBlob + || (pFrom>=pReader->aNode && pFrom<&pReader->aNode[pReader->nNode]) + ); + while( pReader->pBlob && rc==SQLITE_OK + && (pFrom - pReader->aNode + nByte)>pReader->nPopulate + ){ + rc = fts3SegReaderIncrRead(pReader); + } + return rc; +} + +/* +** Set an Fts3SegReader cursor to point at EOF. +*/ +static void fts3SegReaderSetEof(Fts3SegReader *pSeg){ + if( !fts3SegReaderIsRootOnly(pSeg) ){ + sqlite3_free(pSeg->aNode); + sqlite3_blob_close(pSeg->pBlob); + pSeg->pBlob = 0; + } + pSeg->aNode = 0; +} + +/* +** Move the iterator passed as the first argument to the next term in the +** segment. If successful, SQLITE_OK is returned. If there is no next term, +** SQLITE_DONE. Otherwise, an SQLite error code. +*/ +static int fts3SegReaderNext( + Fts3Table *p, + Fts3SegReader *pReader, + int bIncr +){ + int rc; /* Return code of various sub-routines */ + char *pNext; /* Cursor variable */ + int nPrefix; /* Number of bytes in term prefix */ + int nSuffix; /* Number of bytes in term suffix */ + + if( !pReader->aDoclist ){ + pNext = pReader->aNode; + }else{ + pNext = &pReader->aDoclist[pReader->nDoclist]; + } + + if( !pNext || pNext>=&pReader->aNode[pReader->nNode] ){ + + if( fts3SegReaderIsPending(pReader) ){ + Fts3HashElem *pElem = *(pReader->ppNextElem); + if( pElem==0 ){ + pReader->aNode = 0; + }else{ + PendingList *pList = (PendingList *)fts3HashData(pElem); + pReader->zTerm = (char *)fts3HashKey(pElem); + pReader->nTerm = fts3HashKeysize(pElem); + pReader->nNode = pReader->nDoclist = pList->nData + 1; + pReader->aNode = pReader->aDoclist = pList->aData; + pReader->ppNextElem++; + assert( pReader->aNode ); + } + return SQLITE_OK; + } + + fts3SegReaderSetEof(pReader); + + /* If iCurrentBlock>=iLeafEndBlock, this is an EOF condition. All leaf + ** blocks have already been traversed. */ + assert( pReader->iCurrentBlock<=pReader->iLeafEndBlock ); + if( pReader->iCurrentBlock>=pReader->iLeafEndBlock ){ + return SQLITE_OK; + } + + rc = sqlite3Fts3ReadBlock( + p, ++pReader->iCurrentBlock, &pReader->aNode, &pReader->nNode, + (bIncr ? &pReader->nPopulate : 0) + ); + if( rc!=SQLITE_OK ) return rc; + assert( pReader->pBlob==0 ); + if( bIncr && pReader->nPopulatenNode ){ + pReader->pBlob = p->pSegments; + p->pSegments = 0; + } + pNext = pReader->aNode; + } + + assert( !fts3SegReaderIsPending(pReader) ); + + rc = fts3SegReaderRequire(pReader, pNext, FTS3_VARINT_MAX*2); + if( rc!=SQLITE_OK ) return rc; + + /* Because of the FTS3_NODE_PADDING bytes of padding, the following is + ** safe (no risk of overread) even if the node data is corrupted. */ + pNext += sqlite3Fts3GetVarint32(pNext, &nPrefix); + pNext += sqlite3Fts3GetVarint32(pNext, &nSuffix); + if( nPrefix<0 || nSuffix<=0 + || &pNext[nSuffix]>&pReader->aNode[pReader->nNode] + ){ + return FTS_CORRUPT_VTAB; + } + + if( nPrefix+nSuffix>pReader->nTermAlloc ){ + int nNew = (nPrefix+nSuffix)*2; + char *zNew = sqlite3_realloc(pReader->zTerm, nNew); + if( !zNew ){ + return SQLITE_NOMEM; + } + pReader->zTerm = zNew; + pReader->nTermAlloc = nNew; + } + + rc = fts3SegReaderRequire(pReader, pNext, nSuffix+FTS3_VARINT_MAX); + if( rc!=SQLITE_OK ) return rc; + + memcpy(&pReader->zTerm[nPrefix], pNext, nSuffix); + pReader->nTerm = nPrefix+nSuffix; + pNext += nSuffix; + pNext += sqlite3Fts3GetVarint32(pNext, &pReader->nDoclist); + pReader->aDoclist = pNext; + pReader->pOffsetList = 0; + + /* Check that the doclist does not appear to extend past the end of the + ** b-tree node. And that the final byte of the doclist is 0x00. If either + ** of these statements is untrue, then the data structure is corrupt. + */ + if( &pReader->aDoclist[pReader->nDoclist]>&pReader->aNode[pReader->nNode] + || (pReader->nPopulate==0 && pReader->aDoclist[pReader->nDoclist-1]) + ){ + return FTS_CORRUPT_VTAB; + } + return SQLITE_OK; +} + +/* +** Set the SegReader to point to the first docid in the doclist associated +** with the current term. +*/ +static int fts3SegReaderFirstDocid(Fts3Table *pTab, Fts3SegReader *pReader){ + int rc = SQLITE_OK; + assert( pReader->aDoclist ); + assert( !pReader->pOffsetList ); + if( pTab->bDescIdx && fts3SegReaderIsPending(pReader) ){ + u8 bEof = 0; + pReader->iDocid = 0; + pReader->nOffsetList = 0; + sqlite3Fts3DoclistPrev(0, + pReader->aDoclist, pReader->nDoclist, &pReader->pOffsetList, + &pReader->iDocid, &pReader->nOffsetList, &bEof + ); + }else{ + rc = fts3SegReaderRequire(pReader, pReader->aDoclist, FTS3_VARINT_MAX); + if( rc==SQLITE_OK ){ + int n = sqlite3Fts3GetVarint(pReader->aDoclist, &pReader->iDocid); + pReader->pOffsetList = &pReader->aDoclist[n]; + } + } + return rc; +} + +/* +** Advance the SegReader to point to the next docid in the doclist +** associated with the current term. +** +** If arguments ppOffsetList and pnOffsetList are not NULL, then +** *ppOffsetList is set to point to the first column-offset list +** in the doclist entry (i.e. immediately past the docid varint). +** *pnOffsetList is set to the length of the set of column-offset +** lists, not including the nul-terminator byte. For example: +*/ +static int fts3SegReaderNextDocid( + Fts3Table *pTab, + Fts3SegReader *pReader, /* Reader to advance to next docid */ + char **ppOffsetList, /* OUT: Pointer to current position-list */ + int *pnOffsetList /* OUT: Length of *ppOffsetList in bytes */ +){ + int rc = SQLITE_OK; + char *p = pReader->pOffsetList; + char c = 0; + + assert( p ); + + if( pTab->bDescIdx && fts3SegReaderIsPending(pReader) ){ + /* A pending-terms seg-reader for an FTS4 table that uses order=desc. + ** Pending-terms doclists are always built up in ascending order, so + ** we have to iterate through them backwards here. */ + u8 bEof = 0; + if( ppOffsetList ){ + *ppOffsetList = pReader->pOffsetList; + *pnOffsetList = pReader->nOffsetList - 1; + } + sqlite3Fts3DoclistPrev(0, + pReader->aDoclist, pReader->nDoclist, &p, &pReader->iDocid, + &pReader->nOffsetList, &bEof + ); + if( bEof ){ + pReader->pOffsetList = 0; + }else{ + pReader->pOffsetList = p; + } + }else{ + char *pEnd = &pReader->aDoclist[pReader->nDoclist]; + + /* Pointer p currently points at the first byte of an offset list. The + ** following block advances it to point one byte past the end of + ** the same offset list. */ + while( 1 ){ + + /* The following line of code (and the "p++" below the while() loop) is + ** normally all that is required to move pointer p to the desired + ** position. The exception is if this node is being loaded from disk + ** incrementally and pointer "p" now points to the first byte passed + ** the populated part of pReader->aNode[]. + */ + while( *p | c ) c = *p++ & 0x80; + assert( *p==0 ); + + if( pReader->pBlob==0 || p<&pReader->aNode[pReader->nPopulate] ) break; + rc = fts3SegReaderIncrRead(pReader); + if( rc!=SQLITE_OK ) return rc; + } + p++; + + /* If required, populate the output variables with a pointer to and the + ** size of the previous offset-list. + */ + if( ppOffsetList ){ + *ppOffsetList = pReader->pOffsetList; + *pnOffsetList = (int)(p - pReader->pOffsetList - 1); + } + + while( p=pEnd ){ + pReader->pOffsetList = 0; + }else{ + rc = fts3SegReaderRequire(pReader, p, FTS3_VARINT_MAX); + if( rc==SQLITE_OK ){ + sqlite3_int64 iDelta; + pReader->pOffsetList = p + sqlite3Fts3GetVarint(p, &iDelta); + if( pTab->bDescIdx ){ + pReader->iDocid -= iDelta; + }else{ + pReader->iDocid += iDelta; + } + } + } + } + + return SQLITE_OK; +} + + +int sqlite3Fts3MsrOvfl( + Fts3Cursor *pCsr, + Fts3MultiSegReader *pMsr, + int *pnOvfl +){ + Fts3Table *p = (Fts3Table*)pCsr->base.pVtab; + int nOvfl = 0; + int ii; + int rc = SQLITE_OK; + int pgsz = p->nPgsz; + + assert( p->bFts4 ); + assert( pgsz>0 ); + + for(ii=0; rc==SQLITE_OK && iinSegment; ii++){ + Fts3SegReader *pReader = pMsr->apSegment[ii]; + if( !fts3SegReaderIsPending(pReader) + && !fts3SegReaderIsRootOnly(pReader) + ){ + sqlite3_int64 jj; + for(jj=pReader->iStartBlock; jj<=pReader->iLeafEndBlock; jj++){ + int nBlob; + rc = sqlite3Fts3ReadBlock(p, jj, 0, &nBlob, 0); + if( rc!=SQLITE_OK ) break; + if( (nBlob+35)>pgsz ){ + nOvfl += (nBlob + 34)/pgsz; + } + } + } + } + *pnOvfl = nOvfl; + return rc; +} + +/* +** Free all allocations associated with the iterator passed as the +** second argument. +*/ +void sqlite3Fts3SegReaderFree(Fts3SegReader *pReader){ + if( pReader && !fts3SegReaderIsPending(pReader) ){ + sqlite3_free(pReader->zTerm); + if( !fts3SegReaderIsRootOnly(pReader) ){ + sqlite3_free(pReader->aNode); + sqlite3_blob_close(pReader->pBlob); + } + } + sqlite3_free(pReader); +} + +/* +** Allocate a new SegReader object. +*/ +int sqlite3Fts3SegReaderNew( + int iAge, /* Segment "age". */ + int bLookup, /* True for a lookup only */ + sqlite3_int64 iStartLeaf, /* First leaf to traverse */ + sqlite3_int64 iEndLeaf, /* Final leaf to traverse */ + sqlite3_int64 iEndBlock, /* Final block of segment */ + const char *zRoot, /* Buffer containing root node */ + int nRoot, /* Size of buffer containing root node */ + Fts3SegReader **ppReader /* OUT: Allocated Fts3SegReader */ +){ + Fts3SegReader *pReader; /* Newly allocated SegReader object */ + int nExtra = 0; /* Bytes to allocate segment root node */ + + assert( iStartLeaf<=iEndLeaf ); + if( iStartLeaf==0 ){ + nExtra = nRoot + FTS3_NODE_PADDING; + } + + pReader = (Fts3SegReader *)sqlite3_malloc(sizeof(Fts3SegReader) + nExtra); + if( !pReader ){ + return SQLITE_NOMEM; + } + memset(pReader, 0, sizeof(Fts3SegReader)); + pReader->iIdx = iAge; + pReader->bLookup = bLookup!=0; + pReader->iStartBlock = iStartLeaf; + pReader->iLeafEndBlock = iEndLeaf; + pReader->iEndBlock = iEndBlock; + + if( nExtra ){ + /* The entire segment is stored in the root node. */ + pReader->aNode = (char *)&pReader[1]; + pReader->rootOnly = 1; + pReader->nNode = nRoot; + memcpy(pReader->aNode, zRoot, nRoot); + memset(&pReader->aNode[nRoot], 0, FTS3_NODE_PADDING); + }else{ + pReader->iCurrentBlock = iStartLeaf-1; + } + *ppReader = pReader; + return SQLITE_OK; +} + +/* +** This is a comparison function used as a qsort() callback when sorting +** an array of pending terms by term. This occurs as part of flushing +** the contents of the pending-terms hash table to the database. +*/ +static int fts3CompareElemByTerm(const void *lhs, const void *rhs){ + char *z1 = fts3HashKey(*(Fts3HashElem **)lhs); + char *z2 = fts3HashKey(*(Fts3HashElem **)rhs); + int n1 = fts3HashKeysize(*(Fts3HashElem **)lhs); + int n2 = fts3HashKeysize(*(Fts3HashElem **)rhs); + + int n = (n1aIndex */ + const char *zTerm, /* Term to search for */ + int nTerm, /* Size of buffer zTerm */ + int bPrefix, /* True for a prefix iterator */ + Fts3SegReader **ppReader /* OUT: SegReader for pending-terms */ +){ + Fts3SegReader *pReader = 0; /* Fts3SegReader object to return */ + Fts3HashElem *pE; /* Iterator variable */ + Fts3HashElem **aElem = 0; /* Array of term hash entries to scan */ + int nElem = 0; /* Size of array at aElem */ + int rc = SQLITE_OK; /* Return Code */ + Fts3Hash *pHash; + + pHash = &p->aIndex[iIndex].hPending; + if( bPrefix ){ + int nAlloc = 0; /* Size of allocated array at aElem */ + + for(pE=fts3HashFirst(pHash); pE; pE=fts3HashNext(pE)){ + char *zKey = (char *)fts3HashKey(pE); + int nKey = fts3HashKeysize(pE); + if( nTerm==0 || (nKey>=nTerm && 0==memcmp(zKey, zTerm, nTerm)) ){ + if( nElem==nAlloc ){ + Fts3HashElem **aElem2; + nAlloc += 16; + aElem2 = (Fts3HashElem **)sqlite3_realloc( + aElem, nAlloc*sizeof(Fts3HashElem *) + ); + if( !aElem2 ){ + rc = SQLITE_NOMEM; + nElem = 0; + break; + } + aElem = aElem2; + } + + aElem[nElem++] = pE; + } + } + + /* If more than one term matches the prefix, sort the Fts3HashElem + ** objects in term order using qsort(). This uses the same comparison + ** callback as is used when flushing terms to disk. + */ + if( nElem>1 ){ + qsort(aElem, nElem, sizeof(Fts3HashElem *), fts3CompareElemByTerm); + } + + }else{ + /* The query is a simple term lookup that matches at most one term in + ** the index. All that is required is a straight hash-lookup. + ** + ** Because the stack address of pE may be accessed via the aElem pointer + ** below, the "Fts3HashElem *pE" must be declared so that it is valid + ** within this entire function, not just this "else{...}" block. + */ + pE = fts3HashFindElem(pHash, zTerm, nTerm); + if( pE ){ + aElem = &pE; + nElem = 1; + } + } + + if( nElem>0 ){ + int nByte = sizeof(Fts3SegReader) + (nElem+1)*sizeof(Fts3HashElem *); + pReader = (Fts3SegReader *)sqlite3_malloc(nByte); + if( !pReader ){ + rc = SQLITE_NOMEM; + }else{ + memset(pReader, 0, nByte); + pReader->iIdx = 0x7FFFFFFF; + pReader->ppNextElem = (Fts3HashElem **)&pReader[1]; + memcpy(pReader->ppNextElem, aElem, nElem*sizeof(Fts3HashElem *)); + } + } + + if( bPrefix ){ + sqlite3_free(aElem); + } + *ppReader = pReader; + return rc; +} + +/* +** Compare the entries pointed to by two Fts3SegReader structures. +** Comparison is as follows: +** +** 1) EOF is greater than not EOF. +** +** 2) The current terms (if any) are compared using memcmp(). If one +** term is a prefix of another, the longer term is considered the +** larger. +** +** 3) By segment age. An older segment is considered larger. +*/ +static int fts3SegReaderCmp(Fts3SegReader *pLhs, Fts3SegReader *pRhs){ + int rc; + if( pLhs->aNode && pRhs->aNode ){ + int rc2 = pLhs->nTerm - pRhs->nTerm; + if( rc2<0 ){ + rc = memcmp(pLhs->zTerm, pRhs->zTerm, pLhs->nTerm); + }else{ + rc = memcmp(pLhs->zTerm, pRhs->zTerm, pRhs->nTerm); + } + if( rc==0 ){ + rc = rc2; + } + }else{ + rc = (pLhs->aNode==0) - (pRhs->aNode==0); + } + if( rc==0 ){ + rc = pRhs->iIdx - pLhs->iIdx; + } + assert( rc!=0 ); + return rc; +} + +/* +** A different comparison function for SegReader structures. In this +** version, it is assumed that each SegReader points to an entry in +** a doclist for identical terms. Comparison is made as follows: +** +** 1) EOF (end of doclist in this case) is greater than not EOF. +** +** 2) By current docid. +** +** 3) By segment age. An older segment is considered larger. +*/ +static int fts3SegReaderDoclistCmp(Fts3SegReader *pLhs, Fts3SegReader *pRhs){ + int rc = (pLhs->pOffsetList==0)-(pRhs->pOffsetList==0); + if( rc==0 ){ + if( pLhs->iDocid==pRhs->iDocid ){ + rc = pRhs->iIdx - pLhs->iIdx; + }else{ + rc = (pLhs->iDocid > pRhs->iDocid) ? 1 : -1; + } + } + assert( pLhs->aNode && pRhs->aNode ); + return rc; +} +static int fts3SegReaderDoclistCmpRev(Fts3SegReader *pLhs, Fts3SegReader *pRhs){ + int rc = (pLhs->pOffsetList==0)-(pRhs->pOffsetList==0); + if( rc==0 ){ + if( pLhs->iDocid==pRhs->iDocid ){ + rc = pRhs->iIdx - pLhs->iIdx; + }else{ + rc = (pLhs->iDocid < pRhs->iDocid) ? 1 : -1; + } + } + assert( pLhs->aNode && pRhs->aNode ); + return rc; +} + +/* +** Compare the term that the Fts3SegReader object passed as the first argument +** points to with the term specified by arguments zTerm and nTerm. +** +** If the pSeg iterator is already at EOF, return 0. Otherwise, return +** -ve if the pSeg term is less than zTerm/nTerm, 0 if the two terms are +** equal, or +ve if the pSeg term is greater than zTerm/nTerm. +*/ +static int fts3SegReaderTermCmp( + Fts3SegReader *pSeg, /* Segment reader object */ + const char *zTerm, /* Term to compare to */ + int nTerm /* Size of term zTerm in bytes */ +){ + int res = 0; + if( pSeg->aNode ){ + if( pSeg->nTerm>nTerm ){ + res = memcmp(pSeg->zTerm, zTerm, nTerm); + }else{ + res = memcmp(pSeg->zTerm, zTerm, pSeg->nTerm); + } + if( res==0 ){ + res = pSeg->nTerm-nTerm; + } + } + return res; +} + +/* +** Argument apSegment is an array of nSegment elements. It is known that +** the final (nSegment-nSuspect) members are already in sorted order +** (according to the comparison function provided). This function shuffles +** the array around until all entries are in sorted order. +*/ +static void fts3SegReaderSort( + Fts3SegReader **apSegment, /* Array to sort entries of */ + int nSegment, /* Size of apSegment array */ + int nSuspect, /* Unsorted entry count */ + int (*xCmp)(Fts3SegReader *, Fts3SegReader *) /* Comparison function */ +){ + int i; /* Iterator variable */ + + assert( nSuspect<=nSegment ); + + if( nSuspect==nSegment ) nSuspect--; + for(i=nSuspect-1; i>=0; i--){ + int j; + for(j=i; j<(nSegment-1); j++){ + Fts3SegReader *pTmp; + if( xCmp(apSegment[j], apSegment[j+1])<0 ) break; + pTmp = apSegment[j+1]; + apSegment[j+1] = apSegment[j]; + apSegment[j] = pTmp; + } + } + +#ifndef NDEBUG + /* Check that the list really is sorted now. */ + for(i=0; i<(nSuspect-1); i++){ + assert( xCmp(apSegment[i], apSegment[i+1])<0 ); + } +#endif +} + +/* +** Insert a record into the %_segments table. +*/ +static int fts3WriteSegment( + Fts3Table *p, /* Virtual table handle */ + sqlite3_int64 iBlock, /* Block id for new block */ + char *z, /* Pointer to buffer containing block data */ + int n /* Size of buffer z in bytes */ +){ + sqlite3_stmt *pStmt; + int rc = fts3SqlStmt(p, SQL_INSERT_SEGMENTS, &pStmt, 0); + if( rc==SQLITE_OK ){ + sqlite3_bind_int64(pStmt, 1, iBlock); + sqlite3_bind_blob(pStmt, 2, z, n, SQLITE_STATIC); + sqlite3_step(pStmt); + rc = sqlite3_reset(pStmt); + } + return rc; +} + +/* +** Find the largest relative level number in the table. If successful, set +** *pnMax to this value and return SQLITE_OK. Otherwise, if an error occurs, +** set *pnMax to zero and return an SQLite error code. +*/ +int sqlite3Fts3MaxLevel(Fts3Table *p, int *pnMax){ + int rc; + int mxLevel = 0; + sqlite3_stmt *pStmt = 0; + + rc = fts3SqlStmt(p, SQL_SELECT_MXLEVEL, &pStmt, 0); + if( rc==SQLITE_OK ){ + if( SQLITE_ROW==sqlite3_step(pStmt) ){ + mxLevel = sqlite3_column_int(pStmt, 0); + } + rc = sqlite3_reset(pStmt); + } + *pnMax = mxLevel; + return rc; +} + +/* +** Insert a record into the %_segdir table. +*/ +static int fts3WriteSegdir( + Fts3Table *p, /* Virtual table handle */ + sqlite3_int64 iLevel, /* Value for "level" field (absolute level) */ + int iIdx, /* Value for "idx" field */ + sqlite3_int64 iStartBlock, /* Value for "start_block" field */ + sqlite3_int64 iLeafEndBlock, /* Value for "leaves_end_block" field */ + sqlite3_int64 iEndBlock, /* Value for "end_block" field */ + char *zRoot, /* Blob value for "root" field */ + int nRoot /* Number of bytes in buffer zRoot */ +){ + sqlite3_stmt *pStmt; + int rc = fts3SqlStmt(p, SQL_INSERT_SEGDIR, &pStmt, 0); + if( rc==SQLITE_OK ){ + sqlite3_bind_int64(pStmt, 1, iLevel); + sqlite3_bind_int(pStmt, 2, iIdx); + sqlite3_bind_int64(pStmt, 3, iStartBlock); + sqlite3_bind_int64(pStmt, 4, iLeafEndBlock); + sqlite3_bind_int64(pStmt, 5, iEndBlock); + sqlite3_bind_blob(pStmt, 6, zRoot, nRoot, SQLITE_STATIC); + sqlite3_step(pStmt); + rc = sqlite3_reset(pStmt); + } + return rc; +} + +/* +** Return the size of the common prefix (if any) shared by zPrev and +** zNext, in bytes. For example, +** +** fts3PrefixCompress("abc", 3, "abcdef", 6) // returns 3 +** fts3PrefixCompress("abX", 3, "abcdef", 6) // returns 2 +** fts3PrefixCompress("abX", 3, "Xbcdef", 6) // returns 0 +*/ +static int fts3PrefixCompress( + const char *zPrev, /* Buffer containing previous term */ + int nPrev, /* Size of buffer zPrev in bytes */ + const char *zNext, /* Buffer containing next term */ + int nNext /* Size of buffer zNext in bytes */ +){ + int n; + UNUSED_PARAMETER(nNext); + for(n=0; nnData; /* Current size of node in bytes */ + int nReq = nData; /* Required space after adding zTerm */ + int nPrefix; /* Number of bytes of prefix compression */ + int nSuffix; /* Suffix length */ + + nPrefix = fts3PrefixCompress(pTree->zTerm, pTree->nTerm, zTerm, nTerm); + nSuffix = nTerm-nPrefix; + + nReq += sqlite3Fts3VarintLen(nPrefix)+sqlite3Fts3VarintLen(nSuffix)+nSuffix; + if( nReq<=p->nNodeSize || !pTree->zTerm ){ + + if( nReq>p->nNodeSize ){ + /* An unusual case: this is the first term to be added to the node + ** and the static node buffer (p->nNodeSize bytes) is not large + ** enough. Use a separately malloced buffer instead This wastes + ** p->nNodeSize bytes, but since this scenario only comes about when + ** the database contain two terms that share a prefix of almost 2KB, + ** this is not expected to be a serious problem. + */ + assert( pTree->aData==(char *)&pTree[1] ); + pTree->aData = (char *)sqlite3_malloc(nReq); + if( !pTree->aData ){ + return SQLITE_NOMEM; + } + } + + if( pTree->zTerm ){ + /* There is no prefix-length field for first term in a node */ + nData += sqlite3Fts3PutVarint(&pTree->aData[nData], nPrefix); + } + + nData += sqlite3Fts3PutVarint(&pTree->aData[nData], nSuffix); + memcpy(&pTree->aData[nData], &zTerm[nPrefix], nSuffix); + pTree->nData = nData + nSuffix; + pTree->nEntry++; + + if( isCopyTerm ){ + if( pTree->nMalloczMalloc, nTerm*2); + if( !zNew ){ + return SQLITE_NOMEM; + } + pTree->nMalloc = nTerm*2; + pTree->zMalloc = zNew; + } + pTree->zTerm = pTree->zMalloc; + memcpy(pTree->zTerm, zTerm, nTerm); + pTree->nTerm = nTerm; + }else{ + pTree->zTerm = (char *)zTerm; + pTree->nTerm = nTerm; + } + return SQLITE_OK; + } + } + + /* If control flows to here, it was not possible to append zTerm to the + ** current node. Create a new node (a right-sibling of the current node). + ** If this is the first node in the tree, the term is added to it. + ** + ** Otherwise, the term is not added to the new node, it is left empty for + ** now. Instead, the term is inserted into the parent of pTree. If pTree + ** has no parent, one is created here. + */ + pNew = (SegmentNode *)sqlite3_malloc(sizeof(SegmentNode) + p->nNodeSize); + if( !pNew ){ + return SQLITE_NOMEM; + } + memset(pNew, 0, sizeof(SegmentNode)); + pNew->nData = 1 + FTS3_VARINT_MAX; + pNew->aData = (char *)&pNew[1]; + + if( pTree ){ + SegmentNode *pParent = pTree->pParent; + rc = fts3NodeAddTerm(p, &pParent, isCopyTerm, zTerm, nTerm); + if( pTree->pParent==0 ){ + pTree->pParent = pParent; + } + pTree->pRight = pNew; + pNew->pLeftmost = pTree->pLeftmost; + pNew->pParent = pParent; + pNew->zMalloc = pTree->zMalloc; + pNew->nMalloc = pTree->nMalloc; + pTree->zMalloc = 0; + }else{ + pNew->pLeftmost = pNew; + rc = fts3NodeAddTerm(p, &pNew, isCopyTerm, zTerm, nTerm); + } + + *ppTree = pNew; + return rc; +} + +/* +** Helper function for fts3NodeWrite(). +*/ +static int fts3TreeFinishNode( + SegmentNode *pTree, + int iHeight, + sqlite3_int64 iLeftChild +){ + int nStart; + assert( iHeight>=1 && iHeight<128 ); + nStart = FTS3_VARINT_MAX - sqlite3Fts3VarintLen(iLeftChild); + pTree->aData[nStart] = (char)iHeight; + sqlite3Fts3PutVarint(&pTree->aData[nStart+1], iLeftChild); + return nStart; +} + +/* +** Write the buffer for the segment node pTree and all of its peers to the +** database. Then call this function recursively to write the parent of +** pTree and its peers to the database. +** +** Except, if pTree is a root node, do not write it to the database. Instead, +** set output variables *paRoot and *pnRoot to contain the root node. +** +** If successful, SQLITE_OK is returned and output variable *piLast is +** set to the largest blockid written to the database (or zero if no +** blocks were written to the db). Otherwise, an SQLite error code is +** returned. +*/ +static int fts3NodeWrite( + Fts3Table *p, /* Virtual table handle */ + SegmentNode *pTree, /* SegmentNode handle */ + int iHeight, /* Height of this node in tree */ + sqlite3_int64 iLeaf, /* Block id of first leaf node */ + sqlite3_int64 iFree, /* Block id of next free slot in %_segments */ + sqlite3_int64 *piLast, /* OUT: Block id of last entry written */ + char **paRoot, /* OUT: Data for root node */ + int *pnRoot /* OUT: Size of root node in bytes */ +){ + int rc = SQLITE_OK; + + if( !pTree->pParent ){ + /* Root node of the tree. */ + int nStart = fts3TreeFinishNode(pTree, iHeight, iLeaf); + *piLast = iFree-1; + *pnRoot = pTree->nData - nStart; + *paRoot = &pTree->aData[nStart]; + }else{ + SegmentNode *pIter; + sqlite3_int64 iNextFree = iFree; + sqlite3_int64 iNextLeaf = iLeaf; + for(pIter=pTree->pLeftmost; pIter && rc==SQLITE_OK; pIter=pIter->pRight){ + int nStart = fts3TreeFinishNode(pIter, iHeight, iNextLeaf); + int nWrite = pIter->nData - nStart; + + rc = fts3WriteSegment(p, iNextFree, &pIter->aData[nStart], nWrite); + iNextFree++; + iNextLeaf += (pIter->nEntry+1); + } + if( rc==SQLITE_OK ){ + assert( iNextLeaf==iFree ); + rc = fts3NodeWrite( + p, pTree->pParent, iHeight+1, iFree, iNextFree, piLast, paRoot, pnRoot + ); + } + } + + return rc; +} + +/* +** Free all memory allocations associated with the tree pTree. +*/ +static void fts3NodeFree(SegmentNode *pTree){ + if( pTree ){ + SegmentNode *p = pTree->pLeftmost; + fts3NodeFree(p->pParent); + while( p ){ + SegmentNode *pRight = p->pRight; + if( p->aData!=(char *)&p[1] ){ + sqlite3_free(p->aData); + } + assert( pRight==0 || p->zMalloc==0 ); + sqlite3_free(p->zMalloc); + sqlite3_free(p); + p = pRight; + } + } +} + +/* +** Add a term to the segment being constructed by the SegmentWriter object +** *ppWriter. When adding the first term to a segment, *ppWriter should +** be passed NULL. This function will allocate a new SegmentWriter object +** and return it via the input/output variable *ppWriter in this case. +** +** If successful, SQLITE_OK is returned. Otherwise, an SQLite error code. +*/ +static int fts3SegWriterAdd( + Fts3Table *p, /* Virtual table handle */ + SegmentWriter **ppWriter, /* IN/OUT: SegmentWriter handle */ + int isCopyTerm, /* True if buffer zTerm must be copied */ + const char *zTerm, /* Pointer to buffer containing term */ + int nTerm, /* Size of term in bytes */ + const char *aDoclist, /* Pointer to buffer containing doclist */ + int nDoclist /* Size of doclist in bytes */ +){ + int nPrefix; /* Size of term prefix in bytes */ + int nSuffix; /* Size of term suffix in bytes */ + int nReq; /* Number of bytes required on leaf page */ + int nData; + SegmentWriter *pWriter = *ppWriter; + + if( !pWriter ){ + int rc; + sqlite3_stmt *pStmt; + + /* Allocate the SegmentWriter structure */ + pWriter = (SegmentWriter *)sqlite3_malloc(sizeof(SegmentWriter)); + if( !pWriter ) return SQLITE_NOMEM; + memset(pWriter, 0, sizeof(SegmentWriter)); + *ppWriter = pWriter; + + /* Allocate a buffer in which to accumulate data */ + pWriter->aData = (char *)sqlite3_malloc(p->nNodeSize); + if( !pWriter->aData ) return SQLITE_NOMEM; + pWriter->nSize = p->nNodeSize; + + /* Find the next free blockid in the %_segments table */ + rc = fts3SqlStmt(p, SQL_NEXT_SEGMENTS_ID, &pStmt, 0); + if( rc!=SQLITE_OK ) return rc; + if( SQLITE_ROW==sqlite3_step(pStmt) ){ + pWriter->iFree = sqlite3_column_int64(pStmt, 0); + pWriter->iFirst = pWriter->iFree; + } + rc = sqlite3_reset(pStmt); + if( rc!=SQLITE_OK ) return rc; + } + nData = pWriter->nData; + + nPrefix = fts3PrefixCompress(pWriter->zTerm, pWriter->nTerm, zTerm, nTerm); + nSuffix = nTerm-nPrefix; + + /* Figure out how many bytes are required by this new entry */ + nReq = sqlite3Fts3VarintLen(nPrefix) + /* varint containing prefix size */ + sqlite3Fts3VarintLen(nSuffix) + /* varint containing suffix size */ + nSuffix + /* Term suffix */ + sqlite3Fts3VarintLen(nDoclist) + /* Size of doclist */ + nDoclist; /* Doclist data */ + + if( nData>0 && nData+nReq>p->nNodeSize ){ + int rc; + + /* The current leaf node is full. Write it out to the database. */ + rc = fts3WriteSegment(p, pWriter->iFree++, pWriter->aData, nData); + if( rc!=SQLITE_OK ) return rc; + p->nLeafAdd++; + + /* Add the current term to the interior node tree. The term added to + ** the interior tree must: + ** + ** a) be greater than the largest term on the leaf node just written + ** to the database (still available in pWriter->zTerm), and + ** + ** b) be less than or equal to the term about to be added to the new + ** leaf node (zTerm/nTerm). + ** + ** In other words, it must be the prefix of zTerm 1 byte longer than + ** the common prefix (if any) of zTerm and pWriter->zTerm. + */ + assert( nPrefixpTree, isCopyTerm, zTerm, nPrefix+1); + if( rc!=SQLITE_OK ) return rc; + + nData = 0; + pWriter->nTerm = 0; + + nPrefix = 0; + nSuffix = nTerm; + nReq = 1 + /* varint containing prefix size */ + sqlite3Fts3VarintLen(nTerm) + /* varint containing suffix size */ + nTerm + /* Term suffix */ + sqlite3Fts3VarintLen(nDoclist) + /* Size of doclist */ + nDoclist; /* Doclist data */ + } + + /* If the buffer currently allocated is too small for this entry, realloc + ** the buffer to make it large enough. + */ + if( nReq>pWriter->nSize ){ + char *aNew = sqlite3_realloc(pWriter->aData, nReq); + if( !aNew ) return SQLITE_NOMEM; + pWriter->aData = aNew; + pWriter->nSize = nReq; + } + assert( nData+nReq<=pWriter->nSize ); + + /* Append the prefix-compressed term and doclist to the buffer. */ + nData += sqlite3Fts3PutVarint(&pWriter->aData[nData], nPrefix); + nData += sqlite3Fts3PutVarint(&pWriter->aData[nData], nSuffix); + memcpy(&pWriter->aData[nData], &zTerm[nPrefix], nSuffix); + nData += nSuffix; + nData += sqlite3Fts3PutVarint(&pWriter->aData[nData], nDoclist); + memcpy(&pWriter->aData[nData], aDoclist, nDoclist); + pWriter->nData = nData + nDoclist; + + /* Save the current term so that it can be used to prefix-compress the next. + ** If the isCopyTerm parameter is true, then the buffer pointed to by + ** zTerm is transient, so take a copy of the term data. Otherwise, just + ** store a copy of the pointer. + */ + if( isCopyTerm ){ + if( nTerm>pWriter->nMalloc ){ + char *zNew = sqlite3_realloc(pWriter->zMalloc, nTerm*2); + if( !zNew ){ + return SQLITE_NOMEM; + } + pWriter->nMalloc = nTerm*2; + pWriter->zMalloc = zNew; + pWriter->zTerm = zNew; + } + assert( pWriter->zTerm==pWriter->zMalloc ); + memcpy(pWriter->zTerm, zTerm, nTerm); + }else{ + pWriter->zTerm = (char *)zTerm; + } + pWriter->nTerm = nTerm; + + return SQLITE_OK; +} + +/* +** Flush all data associated with the SegmentWriter object pWriter to the +** database. This function must be called after all terms have been added +** to the segment using fts3SegWriterAdd(). If successful, SQLITE_OK is +** returned. Otherwise, an SQLite error code. +*/ +static int fts3SegWriterFlush( + Fts3Table *p, /* Virtual table handle */ + SegmentWriter *pWriter, /* SegmentWriter to flush to the db */ + sqlite3_int64 iLevel, /* Value for 'level' column of %_segdir */ + int iIdx /* Value for 'idx' column of %_segdir */ +){ + int rc; /* Return code */ + if( pWriter->pTree ){ + sqlite3_int64 iLast = 0; /* Largest block id written to database */ + sqlite3_int64 iLastLeaf; /* Largest leaf block id written to db */ + char *zRoot = NULL; /* Pointer to buffer containing root node */ + int nRoot = 0; /* Size of buffer zRoot */ + + iLastLeaf = pWriter->iFree; + rc = fts3WriteSegment(p, pWriter->iFree++, pWriter->aData, pWriter->nData); + if( rc==SQLITE_OK ){ + rc = fts3NodeWrite(p, pWriter->pTree, 1, + pWriter->iFirst, pWriter->iFree, &iLast, &zRoot, &nRoot); + } + if( rc==SQLITE_OK ){ + rc = fts3WriteSegdir( + p, iLevel, iIdx, pWriter->iFirst, iLastLeaf, iLast, zRoot, nRoot); + } + }else{ + /* The entire tree fits on the root node. Write it to the segdir table. */ + rc = fts3WriteSegdir( + p, iLevel, iIdx, 0, 0, 0, pWriter->aData, pWriter->nData); + } + p->nLeafAdd++; + return rc; +} + +/* +** Release all memory held by the SegmentWriter object passed as the +** first argument. +*/ +static void fts3SegWriterFree(SegmentWriter *pWriter){ + if( pWriter ){ + sqlite3_free(pWriter->aData); + sqlite3_free(pWriter->zMalloc); + fts3NodeFree(pWriter->pTree); + sqlite3_free(pWriter); + } +} + +/* +** The first value in the apVal[] array is assumed to contain an integer. +** This function tests if there exist any documents with docid values that +** are different from that integer. i.e. if deleting the document with docid +** pRowid would mean the FTS3 table were empty. +** +** If successful, *pisEmpty is set to true if the table is empty except for +** document pRowid, or false otherwise, and SQLITE_OK is returned. If an +** error occurs, an SQLite error code is returned. +*/ +static int fts3IsEmpty(Fts3Table *p, sqlite3_value *pRowid, int *pisEmpty){ + sqlite3_stmt *pStmt; + int rc; + if( p->zContentTbl ){ + /* If using the content=xxx option, assume the table is never empty */ + *pisEmpty = 0; + rc = SQLITE_OK; + }else{ + rc = fts3SqlStmt(p, SQL_IS_EMPTY, &pStmt, &pRowid); + if( rc==SQLITE_OK ){ + if( SQLITE_ROW==sqlite3_step(pStmt) ){ + *pisEmpty = sqlite3_column_int(pStmt, 0); + } + rc = sqlite3_reset(pStmt); + } + } + return rc; +} + +/* +** Set *pnMax to the largest segment level in the database for the index +** iIndex. +** +** Segment levels are stored in the 'level' column of the %_segdir table. +** +** Return SQLITE_OK if successful, or an SQLite error code if not. +*/ +static int fts3SegmentMaxLevel( + Fts3Table *p, + int iLangid, + int iIndex, + sqlite3_int64 *pnMax +){ + sqlite3_stmt *pStmt; + int rc; + assert( iIndex>=0 && iIndexnIndex ); + + /* Set pStmt to the compiled version of: + ** + ** SELECT max(level) FROM %Q.'%q_segdir' WHERE level BETWEEN ? AND ? + ** + ** (1024 is actually the value of macro FTS3_SEGDIR_PREFIXLEVEL_STR). + */ + rc = fts3SqlStmt(p, SQL_SELECT_SEGDIR_MAX_LEVEL, &pStmt, 0); + if( rc!=SQLITE_OK ) return rc; + sqlite3_bind_int64(pStmt, 1, getAbsoluteLevel(p, iLangid, iIndex, 0)); + sqlite3_bind_int64(pStmt, 2, + getAbsoluteLevel(p, iLangid, iIndex, FTS3_SEGDIR_MAXLEVEL-1) + ); + if( SQLITE_ROW==sqlite3_step(pStmt) ){ + *pnMax = sqlite3_column_int64(pStmt, 0); + } + return sqlite3_reset(pStmt); +} + +/* +** Delete all entries in the %_segments table associated with the segment +** opened with seg-reader pSeg. This function does not affect the contents +** of the %_segdir table. +*/ +static int fts3DeleteSegment( + Fts3Table *p, /* FTS table handle */ + Fts3SegReader *pSeg /* Segment to delete */ +){ + int rc = SQLITE_OK; /* Return code */ + if( pSeg->iStartBlock ){ + sqlite3_stmt *pDelete; /* SQL statement to delete rows */ + rc = fts3SqlStmt(p, SQL_DELETE_SEGMENTS_RANGE, &pDelete, 0); + if( rc==SQLITE_OK ){ + sqlite3_bind_int64(pDelete, 1, pSeg->iStartBlock); + sqlite3_bind_int64(pDelete, 2, pSeg->iEndBlock); + sqlite3_step(pDelete); + rc = sqlite3_reset(pDelete); + } + } + return rc; +} + +/* +** This function is used after merging multiple segments into a single large +** segment to delete the old, now redundant, segment b-trees. Specifically, +** it: +** +** 1) Deletes all %_segments entries for the segments associated with +** each of the SegReader objects in the array passed as the third +** argument, and +** +** 2) deletes all %_segdir entries with level iLevel, or all %_segdir +** entries regardless of level if (iLevel<0). +** +** SQLITE_OK is returned if successful, otherwise an SQLite error code. +*/ +static int fts3DeleteSegdir( + Fts3Table *p, /* Virtual table handle */ + int iLangid, /* Language id */ + int iIndex, /* Index for p->aIndex */ + int iLevel, /* Level of %_segdir entries to delete */ + Fts3SegReader **apSegment, /* Array of SegReader objects */ + int nReader /* Size of array apSegment */ +){ + int rc = SQLITE_OK; /* Return Code */ + int i; /* Iterator variable */ + sqlite3_stmt *pDelete = 0; /* SQL statement to delete rows */ + + for(i=0; rc==SQLITE_OK && i=0 || iLevel==FTS3_SEGCURSOR_ALL ); + if( iLevel==FTS3_SEGCURSOR_ALL ){ + rc = fts3SqlStmt(p, SQL_DELETE_SEGDIR_RANGE, &pDelete, 0); + if( rc==SQLITE_OK ){ + sqlite3_bind_int64(pDelete, 1, getAbsoluteLevel(p, iLangid, iIndex, 0)); + sqlite3_bind_int64(pDelete, 2, + getAbsoluteLevel(p, iLangid, iIndex, FTS3_SEGDIR_MAXLEVEL-1) + ); + } + }else{ + rc = fts3SqlStmt(p, SQL_DELETE_SEGDIR_LEVEL, &pDelete, 0); + if( rc==SQLITE_OK ){ + sqlite3_bind_int64( + pDelete, 1, getAbsoluteLevel(p, iLangid, iIndex, iLevel) + ); + } + } + + if( rc==SQLITE_OK ){ + sqlite3_step(pDelete); + rc = sqlite3_reset(pDelete); + } + + return rc; +} + +/* +** When this function is called, buffer *ppList (size *pnList bytes) contains +** a position list that may (or may not) feature multiple columns. This +** function adjusts the pointer *ppList and the length *pnList so that they +** identify the subset of the position list that corresponds to column iCol. +** +** If there are no entries in the input position list for column iCol, then +** *pnList is set to zero before returning. +*/ +static void fts3ColumnFilter( + int iCol, /* Column to filter on */ + char **ppList, /* IN/OUT: Pointer to position list */ + int *pnList /* IN/OUT: Size of buffer *ppList in bytes */ +){ + char *pList = *ppList; + int nList = *pnList; + char *pEnd = &pList[nList]; + int iCurrent = 0; + char *p = pList; + + assert( iCol>=0 ); + while( 1 ){ + char c = 0; + while( ppMsr->nBuffer ){ + char *pNew; + pMsr->nBuffer = nList*2; + pNew = (char *)sqlite3_realloc(pMsr->aBuffer, pMsr->nBuffer); + if( !pNew ) return SQLITE_NOMEM; + pMsr->aBuffer = pNew; + } + + memcpy(pMsr->aBuffer, pList, nList); + return SQLITE_OK; +} + +int sqlite3Fts3MsrIncrNext( + Fts3Table *p, /* Virtual table handle */ + Fts3MultiSegReader *pMsr, /* Multi-segment-reader handle */ + sqlite3_int64 *piDocid, /* OUT: Docid value */ + char **paPoslist, /* OUT: Pointer to position list */ + int *pnPoslist /* OUT: Size of position list in bytes */ +){ + int nMerge = pMsr->nAdvance; + Fts3SegReader **apSegment = pMsr->apSegment; + int (*xCmp)(Fts3SegReader *, Fts3SegReader *) = ( + p->bDescIdx ? fts3SegReaderDoclistCmpRev : fts3SegReaderDoclistCmp + ); + + if( nMerge==0 ){ + *paPoslist = 0; + return SQLITE_OK; + } + + while( 1 ){ + Fts3SegReader *pSeg; + pSeg = pMsr->apSegment[0]; + + if( pSeg->pOffsetList==0 ){ + *paPoslist = 0; + break; + }else{ + int rc; + char *pList; + int nList; + int j; + sqlite3_int64 iDocid = apSegment[0]->iDocid; + + rc = fts3SegReaderNextDocid(p, apSegment[0], &pList, &nList); + j = 1; + while( rc==SQLITE_OK + && jpOffsetList + && apSegment[j]->iDocid==iDocid + ){ + rc = fts3SegReaderNextDocid(p, apSegment[j], 0, 0); + j++; + } + if( rc!=SQLITE_OK ) return rc; + fts3SegReaderSort(pMsr->apSegment, nMerge, j, xCmp); + + if( pMsr->iColFilter>=0 ){ + fts3ColumnFilter(pMsr->iColFilter, &pList, &nList); + } + + if( nList>0 ){ + if( fts3SegReaderIsPending(apSegment[0]) ){ + rc = fts3MsrBufferData(pMsr, pList, nList+1); + if( rc!=SQLITE_OK ) return rc; + *paPoslist = pMsr->aBuffer; + assert( (pMsr->aBuffer[nList] & 0xFE)==0x00 ); + }else{ + *paPoslist = pList; + } + *piDocid = iDocid; + *pnPoslist = nList; + break; + } + } + } + + return SQLITE_OK; +} + +static int fts3SegReaderStart( + Fts3Table *p, /* Virtual table handle */ + Fts3MultiSegReader *pCsr, /* Cursor object */ + const char *zTerm, /* Term searched for (or NULL) */ + int nTerm /* Length of zTerm in bytes */ +){ + int i; + int nSeg = pCsr->nSegment; + + /* If the Fts3SegFilter defines a specific term (or term prefix) to search + ** for, then advance each segment iterator until it points to a term of + ** equal or greater value than the specified term. This prevents many + ** unnecessary merge/sort operations for the case where single segment + ** b-tree leaf nodes contain more than one term. + */ + for(i=0; pCsr->bRestart==0 && inSegment; i++){ + int res = 0; + Fts3SegReader *pSeg = pCsr->apSegment[i]; + do { + int rc = fts3SegReaderNext(p, pSeg, 0); + if( rc!=SQLITE_OK ) return rc; + }while( zTerm && (res = fts3SegReaderTermCmp(pSeg, zTerm, nTerm))<0 ); + + if( pSeg->bLookup && res!=0 ){ + fts3SegReaderSetEof(pSeg); + } + } + fts3SegReaderSort(pCsr->apSegment, nSeg, nSeg, fts3SegReaderCmp); + + return SQLITE_OK; +} + +int sqlite3Fts3SegReaderStart( + Fts3Table *p, /* Virtual table handle */ + Fts3MultiSegReader *pCsr, /* Cursor object */ + Fts3SegFilter *pFilter /* Restrictions on range of iteration */ +){ + pCsr->pFilter = pFilter; + return fts3SegReaderStart(p, pCsr, pFilter->zTerm, pFilter->nTerm); +} + +int sqlite3Fts3MsrIncrStart( + Fts3Table *p, /* Virtual table handle */ + Fts3MultiSegReader *pCsr, /* Cursor object */ + int iCol, /* Column to match on. */ + const char *zTerm, /* Term to iterate through a doclist for */ + int nTerm /* Number of bytes in zTerm */ +){ + int i; + int rc; + int nSegment = pCsr->nSegment; + int (*xCmp)(Fts3SegReader *, Fts3SegReader *) = ( + p->bDescIdx ? fts3SegReaderDoclistCmpRev : fts3SegReaderDoclistCmp + ); + + assert( pCsr->pFilter==0 ); + assert( zTerm && nTerm>0 ); + + /* Advance each segment iterator until it points to the term zTerm/nTerm. */ + rc = fts3SegReaderStart(p, pCsr, zTerm, nTerm); + if( rc!=SQLITE_OK ) return rc; + + /* Determine how many of the segments actually point to zTerm/nTerm. */ + for(i=0; iapSegment[i]; + if( !pSeg->aNode || fts3SegReaderTermCmp(pSeg, zTerm, nTerm) ){ + break; + } + } + pCsr->nAdvance = i; + + /* Advance each of the segments to point to the first docid. */ + for(i=0; inAdvance; i++){ + rc = fts3SegReaderFirstDocid(p, pCsr->apSegment[i]); + if( rc!=SQLITE_OK ) return rc; + } + fts3SegReaderSort(pCsr->apSegment, i, i, xCmp); + + assert( iCol<0 || iColnColumn ); + pCsr->iColFilter = iCol; + + return SQLITE_OK; +} + +/* +** This function is called on a MultiSegReader that has been started using +** sqlite3Fts3MsrIncrStart(). One or more calls to MsrIncrNext() may also +** have been made. Calling this function puts the MultiSegReader in such +** a state that if the next two calls are: +** +** sqlite3Fts3SegReaderStart() +** sqlite3Fts3SegReaderStep() +** +** then the entire doclist for the term is available in +** MultiSegReader.aDoclist/nDoclist. +*/ +int sqlite3Fts3MsrIncrRestart(Fts3MultiSegReader *pCsr){ + int i; /* Used to iterate through segment-readers */ + + assert( pCsr->zTerm==0 ); + assert( pCsr->nTerm==0 ); + assert( pCsr->aDoclist==0 ); + assert( pCsr->nDoclist==0 ); + + pCsr->nAdvance = 0; + pCsr->bRestart = 1; + for(i=0; inSegment; i++){ + pCsr->apSegment[i]->pOffsetList = 0; + pCsr->apSegment[i]->nOffsetList = 0; + pCsr->apSegment[i]->iDocid = 0; + } + + return SQLITE_OK; +} + + +int sqlite3Fts3SegReaderStep( + Fts3Table *p, /* Virtual table handle */ + Fts3MultiSegReader *pCsr /* Cursor object */ +){ + int rc = SQLITE_OK; + + int isIgnoreEmpty = (pCsr->pFilter->flags & FTS3_SEGMENT_IGNORE_EMPTY); + int isRequirePos = (pCsr->pFilter->flags & FTS3_SEGMENT_REQUIRE_POS); + int isColFilter = (pCsr->pFilter->flags & FTS3_SEGMENT_COLUMN_FILTER); + int isPrefix = (pCsr->pFilter->flags & FTS3_SEGMENT_PREFIX); + int isScan = (pCsr->pFilter->flags & FTS3_SEGMENT_SCAN); + int isFirst = (pCsr->pFilter->flags & FTS3_SEGMENT_FIRST); + + Fts3SegReader **apSegment = pCsr->apSegment; + int nSegment = pCsr->nSegment; + Fts3SegFilter *pFilter = pCsr->pFilter; + int (*xCmp)(Fts3SegReader *, Fts3SegReader *) = ( + p->bDescIdx ? fts3SegReaderDoclistCmpRev : fts3SegReaderDoclistCmp + ); + + if( pCsr->nSegment==0 ) return SQLITE_OK; + + do { + int nMerge; + int i; + + /* Advance the first pCsr->nAdvance entries in the apSegment[] array + ** forward. Then sort the list in order of current term again. + */ + for(i=0; inAdvance; i++){ + Fts3SegReader *pSeg = apSegment[i]; + if( pSeg->bLookup ){ + fts3SegReaderSetEof(pSeg); + }else{ + rc = fts3SegReaderNext(p, pSeg, 0); + } + if( rc!=SQLITE_OK ) return rc; + } + fts3SegReaderSort(apSegment, nSegment, pCsr->nAdvance, fts3SegReaderCmp); + pCsr->nAdvance = 0; + + /* If all the seg-readers are at EOF, we're finished. return SQLITE_OK. */ + assert( rc==SQLITE_OK ); + if( apSegment[0]->aNode==0 ) break; + + pCsr->nTerm = apSegment[0]->nTerm; + pCsr->zTerm = apSegment[0]->zTerm; + + /* If this is a prefix-search, and if the term that apSegment[0] points + ** to does not share a suffix with pFilter->zTerm/nTerm, then all + ** required callbacks have been made. In this case exit early. + ** + ** Similarly, if this is a search for an exact match, and the first term + ** of segment apSegment[0] is not a match, exit early. + */ + if( pFilter->zTerm && !isScan ){ + if( pCsr->nTermnTerm + || (!isPrefix && pCsr->nTerm>pFilter->nTerm) + || memcmp(pCsr->zTerm, pFilter->zTerm, pFilter->nTerm) + ){ + break; + } + } + + nMerge = 1; + while( nMergeaNode + && apSegment[nMerge]->nTerm==pCsr->nTerm + && 0==memcmp(pCsr->zTerm, apSegment[nMerge]->zTerm, pCsr->nTerm) + ){ + nMerge++; + } + + assert( isIgnoreEmpty || (isRequirePos && !isColFilter) ); + if( nMerge==1 + && !isIgnoreEmpty + && !isFirst + && (p->bDescIdx==0 || fts3SegReaderIsPending(apSegment[0])==0) + ){ + pCsr->nDoclist = apSegment[0]->nDoclist; + if( fts3SegReaderIsPending(apSegment[0]) ){ + rc = fts3MsrBufferData(pCsr, apSegment[0]->aDoclist, pCsr->nDoclist); + pCsr->aDoclist = pCsr->aBuffer; + }else{ + pCsr->aDoclist = apSegment[0]->aDoclist; + } + if( rc==SQLITE_OK ) rc = SQLITE_ROW; + }else{ + int nDoclist = 0; /* Size of doclist */ + sqlite3_int64 iPrev = 0; /* Previous docid stored in doclist */ + + /* The current term of the first nMerge entries in the array + ** of Fts3SegReader objects is the same. The doclists must be merged + ** and a single term returned with the merged doclist. + */ + for(i=0; ipOffsetList ){ + int j; /* Number of segments that share a docid */ + char *pList; + int nList; + int nByte; + sqlite3_int64 iDocid = apSegment[0]->iDocid; + fts3SegReaderNextDocid(p, apSegment[0], &pList, &nList); + j = 1; + while( jpOffsetList + && apSegment[j]->iDocid==iDocid + ){ + fts3SegReaderNextDocid(p, apSegment[j], 0, 0); + j++; + } + + if( isColFilter ){ + fts3ColumnFilter(pFilter->iCol, &pList, &nList); + } + + if( !isIgnoreEmpty || nList>0 ){ + + /* Calculate the 'docid' delta value to write into the merged + ** doclist. */ + sqlite3_int64 iDelta; + if( p->bDescIdx && nDoclist>0 ){ + iDelta = iPrev - iDocid; + }else{ + iDelta = iDocid - iPrev; + } + assert( iDelta>0 || (nDoclist==0 && iDelta==iDocid) ); + assert( nDoclist>0 || iDelta==iDocid ); + + nByte = sqlite3Fts3VarintLen(iDelta) + (isRequirePos?nList+1:0); + if( nDoclist+nByte>pCsr->nBuffer ){ + char *aNew; + pCsr->nBuffer = (nDoclist+nByte)*2; + aNew = sqlite3_realloc(pCsr->aBuffer, pCsr->nBuffer); + if( !aNew ){ + return SQLITE_NOMEM; + } + pCsr->aBuffer = aNew; + } + + if( isFirst ){ + char *a = &pCsr->aBuffer[nDoclist]; + int nWrite; + + nWrite = sqlite3Fts3FirstFilter(iDelta, pList, nList, a); + if( nWrite ){ + iPrev = iDocid; + nDoclist += nWrite; + } + }else{ + nDoclist += sqlite3Fts3PutVarint(&pCsr->aBuffer[nDoclist], iDelta); + iPrev = iDocid; + if( isRequirePos ){ + memcpy(&pCsr->aBuffer[nDoclist], pList, nList); + nDoclist += nList; + pCsr->aBuffer[nDoclist++] = '\0'; + } + } + } + + fts3SegReaderSort(apSegment, nMerge, j, xCmp); + } + if( nDoclist>0 ){ + pCsr->aDoclist = pCsr->aBuffer; + pCsr->nDoclist = nDoclist; + rc = SQLITE_ROW; + } + } + pCsr->nAdvance = nMerge; + }while( rc==SQLITE_OK ); + + return rc; +} + + +void sqlite3Fts3SegReaderFinish( + Fts3MultiSegReader *pCsr /* Cursor object */ +){ + if( pCsr ){ + int i; + for(i=0; inSegment; i++){ + sqlite3Fts3SegReaderFree(pCsr->apSegment[i]); + } + sqlite3_free(pCsr->apSegment); + sqlite3_free(pCsr->aBuffer); + + pCsr->nSegment = 0; + pCsr->apSegment = 0; + pCsr->aBuffer = 0; + } +} + +/* +** Merge all level iLevel segments in the database into a single +** iLevel+1 segment. Or, if iLevel<0, merge all segments into a +** single segment with a level equal to the numerically largest level +** currently present in the database. +** +** If this function is called with iLevel<0, but there is only one +** segment in the database, SQLITE_DONE is returned immediately. +** Otherwise, if successful, SQLITE_OK is returned. If an error occurs, +** an SQLite error code is returned. +*/ +static int fts3SegmentMerge( + Fts3Table *p, + int iLangid, /* Language id to merge */ + int iIndex, /* Index in p->aIndex[] to merge */ + int iLevel /* Level to merge */ +){ + int rc; /* Return code */ + int iIdx = 0; /* Index of new segment */ + sqlite3_int64 iNewLevel = 0; /* Level/index to create new segment at */ + SegmentWriter *pWriter = 0; /* Used to write the new, merged, segment */ + Fts3SegFilter filter; /* Segment term filter condition */ + Fts3MultiSegReader csr; /* Cursor to iterate through level(s) */ + int bIgnoreEmpty = 0; /* True to ignore empty segments */ + + assert( iLevel==FTS3_SEGCURSOR_ALL + || iLevel==FTS3_SEGCURSOR_PENDING + || iLevel>=0 + ); + assert( iLevel=0 && iIndexnIndex ); + + rc = sqlite3Fts3SegReaderCursor(p, iLangid, iIndex, iLevel, 0, 0, 1, 0, &csr); + if( rc!=SQLITE_OK || csr.nSegment==0 ) goto finished; + + if( iLevel==FTS3_SEGCURSOR_ALL ){ + /* This call is to merge all segments in the database to a single + ** segment. The level of the new segment is equal to the numerically + ** greatest segment level currently present in the database for this + ** index. The idx of the new segment is always 0. */ + if( csr.nSegment==1 ){ + rc = SQLITE_DONE; + goto finished; + } + rc = fts3SegmentMaxLevel(p, iLangid, iIndex, &iNewLevel); + bIgnoreEmpty = 1; + + }else if( iLevel==FTS3_SEGCURSOR_PENDING ){ + iNewLevel = getAbsoluteLevel(p, iLangid, iIndex, 0); + rc = fts3AllocateSegdirIdx(p, iLangid, iIndex, 0, &iIdx); + }else{ + /* This call is to merge all segments at level iLevel. find the next + ** available segment index at level iLevel+1. The call to + ** fts3AllocateSegdirIdx() will merge the segments at level iLevel+1 to + ** a single iLevel+2 segment if necessary. */ + rc = fts3AllocateSegdirIdx(p, iLangid, iIndex, iLevel+1, &iIdx); + iNewLevel = getAbsoluteLevel(p, iLangid, iIndex, iLevel+1); + } + if( rc!=SQLITE_OK ) goto finished; + assert( csr.nSegment>0 ); + assert( iNewLevel>=getAbsoluteLevel(p, iLangid, iIndex, 0) ); + assert( iNewLevelnIndex; i++){ + rc = fts3SegmentMerge(p, p->iPrevLangid, i, FTS3_SEGCURSOR_PENDING); + if( rc==SQLITE_DONE ) rc = SQLITE_OK; + } + sqlite3Fts3PendingTermsClear(p); + + /* Determine the auto-incr-merge setting if unknown. If enabled, + ** estimate the number of leaf blocks of content to be written + */ + if( rc==SQLITE_OK && p->bHasStat + && p->bAutoincrmerge==0xff && p->nLeafAdd>0 + ){ + sqlite3_stmt *pStmt = 0; + rc = fts3SqlStmt(p, SQL_SELECT_STAT, &pStmt, 0); + if( rc==SQLITE_OK ){ + sqlite3_bind_int(pStmt, 1, FTS_STAT_AUTOINCRMERGE); + rc = sqlite3_step(pStmt); + p->bAutoincrmerge = (rc==SQLITE_ROW && sqlite3_column_int(pStmt, 0)); + rc = sqlite3_reset(pStmt); + } + } + return rc; +} + +/* +** Encode N integers as varints into a blob. +*/ +static void fts3EncodeIntArray( + int N, /* The number of integers to encode */ + u32 *a, /* The integer values */ + char *zBuf, /* Write the BLOB here */ + int *pNBuf /* Write number of bytes if zBuf[] used here */ +){ + int i, j; + for(i=j=0; iiPrevDocid. The sizes are encoded as +** a blob of varints. +*/ +static void fts3InsertDocsize( + int *pRC, /* Result code */ + Fts3Table *p, /* Table into which to insert */ + u32 *aSz /* Sizes of each column, in tokens */ +){ + char *pBlob; /* The BLOB encoding of the document size */ + int nBlob; /* Number of bytes in the BLOB */ + sqlite3_stmt *pStmt; /* Statement used to insert the encoding */ + int rc; /* Result code from subfunctions */ + + if( *pRC ) return; + pBlob = sqlite3_malloc( 10*p->nColumn ); + if( pBlob==0 ){ + *pRC = SQLITE_NOMEM; + return; + } + fts3EncodeIntArray(p->nColumn, aSz, pBlob, &nBlob); + rc = fts3SqlStmt(p, SQL_REPLACE_DOCSIZE, &pStmt, 0); + if( rc ){ + sqlite3_free(pBlob); + *pRC = rc; + return; + } + sqlite3_bind_int64(pStmt, 1, p->iPrevDocid); + sqlite3_bind_blob(pStmt, 2, pBlob, nBlob, sqlite3_free); + sqlite3_step(pStmt); + *pRC = sqlite3_reset(pStmt); +} + +/* +** Record 0 of the %_stat table contains a blob consisting of N varints, +** where N is the number of user defined columns in the fts3 table plus +** two. If nCol is the number of user defined columns, then values of the +** varints are set as follows: +** +** Varint 0: Total number of rows in the table. +** +** Varint 1..nCol: For each column, the total number of tokens stored in +** the column for all rows of the table. +** +** Varint 1+nCol: The total size, in bytes, of all text values in all +** columns of all rows of the table. +** +*/ +static void fts3UpdateDocTotals( + int *pRC, /* The result code */ + Fts3Table *p, /* Table being updated */ + u32 *aSzIns, /* Size increases */ + u32 *aSzDel, /* Size decreases */ + int nChng /* Change in the number of documents */ +){ + char *pBlob; /* Storage for BLOB written into %_stat */ + int nBlob; /* Size of BLOB written into %_stat */ + u32 *a; /* Array of integers that becomes the BLOB */ + sqlite3_stmt *pStmt; /* Statement for reading and writing */ + int i; /* Loop counter */ + int rc; /* Result code from subfunctions */ + + const int nStat = p->nColumn+2; + + if( *pRC ) return; + a = sqlite3_malloc( (sizeof(u32)+10)*nStat ); + if( a==0 ){ + *pRC = SQLITE_NOMEM; + return; + } + pBlob = (char*)&a[nStat]; + rc = fts3SqlStmt(p, SQL_SELECT_STAT, &pStmt, 0); + if( rc ){ + sqlite3_free(a); + *pRC = rc; + return; + } + sqlite3_bind_int(pStmt, 1, FTS_STAT_DOCTOTAL); + if( sqlite3_step(pStmt)==SQLITE_ROW ){ + fts3DecodeIntArray(nStat, a, + sqlite3_column_blob(pStmt, 0), + sqlite3_column_bytes(pStmt, 0)); + }else{ + memset(a, 0, sizeof(u32)*(nStat) ); + } + rc = sqlite3_reset(pStmt); + if( rc!=SQLITE_OK ){ + sqlite3_free(a); + *pRC = rc; + return; + } + if( nChng<0 && a[0]<(u32)(-nChng) ){ + a[0] = 0; + }else{ + a[0] += nChng; + } + for(i=0; inColumn+1; i++){ + u32 x = a[i+1]; + if( x+aSzIns[i] < aSzDel[i] ){ + x = 0; + }else{ + x = x + aSzIns[i] - aSzDel[i]; + } + a[i+1] = x; + } + fts3EncodeIntArray(nStat, a, pBlob, &nBlob); + rc = fts3SqlStmt(p, SQL_REPLACE_STAT, &pStmt, 0); + if( rc ){ + sqlite3_free(a); + *pRC = rc; + return; + } + sqlite3_bind_int(pStmt, 1, FTS_STAT_DOCTOTAL); + sqlite3_bind_blob(pStmt, 2, pBlob, nBlob, SQLITE_STATIC); + sqlite3_step(pStmt); + *pRC = sqlite3_reset(pStmt); + sqlite3_free(a); +} + +/* +** Merge the entire database so that there is one segment for each +** iIndex/iLangid combination. +*/ +static int fts3DoOptimize(Fts3Table *p, int bReturnDone){ + int bSeenDone = 0; + int rc; + sqlite3_stmt *pAllLangid = 0; + + rc = fts3SqlStmt(p, SQL_SELECT_ALL_LANGID, &pAllLangid, 0); + if( rc==SQLITE_OK ){ + int rc2; + sqlite3_bind_int(pAllLangid, 1, p->nIndex); + while( sqlite3_step(pAllLangid)==SQLITE_ROW ){ + int i; + int iLangid = sqlite3_column_int(pAllLangid, 0); + for(i=0; rc==SQLITE_OK && inIndex; i++){ + rc = fts3SegmentMerge(p, iLangid, i, FTS3_SEGCURSOR_ALL); + if( rc==SQLITE_DONE ){ + bSeenDone = 1; + rc = SQLITE_OK; + } + } + } + rc2 = sqlite3_reset(pAllLangid); + if( rc==SQLITE_OK ) rc = rc2; + } + + sqlite3Fts3SegmentsClose(p); + sqlite3Fts3PendingTermsClear(p); + + return (rc==SQLITE_OK && bReturnDone && bSeenDone) ? SQLITE_DONE : rc; +} + +/* +** This function is called when the user executes the following statement: +** +** INSERT INTO () VALUES('rebuild'); +** +** The entire FTS index is discarded and rebuilt. If the table is one +** created using the content=xxx option, then the new index is based on +** the current contents of the xxx table. Otherwise, it is rebuilt based +** on the contents of the %_content table. +*/ +static int fts3DoRebuild(Fts3Table *p){ + int rc; /* Return Code */ + + rc = fts3DeleteAll(p, 0); + if( rc==SQLITE_OK ){ + u32 *aSz = 0; + u32 *aSzIns = 0; + u32 *aSzDel = 0; + sqlite3_stmt *pStmt = 0; + int nEntry = 0; + + /* Compose and prepare an SQL statement to loop through the content table */ + char *zSql = sqlite3_mprintf("SELECT %s" , p->zReadExprlist); + if( !zSql ){ + rc = SQLITE_NOMEM; + }else{ + rc = sqlite3_prepare_v2(p->db, zSql, -1, &pStmt, 0); + sqlite3_free(zSql); + } + + if( rc==SQLITE_OK ){ + int nByte = sizeof(u32) * (p->nColumn+1)*3; + aSz = (u32 *)sqlite3_malloc(nByte); + if( aSz==0 ){ + rc = SQLITE_NOMEM; + }else{ + memset(aSz, 0, nByte); + aSzIns = &aSz[p->nColumn+1]; + aSzDel = &aSzIns[p->nColumn+1]; + } + } + + while( rc==SQLITE_OK && SQLITE_ROW==sqlite3_step(pStmt) ){ + int iCol; + int iLangid = langidFromSelect(p, pStmt); + rc = fts3PendingTermsDocid(p, iLangid, sqlite3_column_int64(pStmt, 0)); + memset(aSz, 0, sizeof(aSz[0]) * (p->nColumn+1)); + for(iCol=0; rc==SQLITE_OK && iColnColumn; iCol++){ + const char *z = (const char *) sqlite3_column_text(pStmt, iCol+1); + rc = fts3PendingTermsAdd(p, iLangid, z, iCol, &aSz[iCol]); + aSz[p->nColumn] += sqlite3_column_bytes(pStmt, iCol+1); + } + if( p->bHasDocsize ){ + fts3InsertDocsize(&rc, p, aSz); + } + if( rc!=SQLITE_OK ){ + sqlite3_finalize(pStmt); + pStmt = 0; + }else{ + nEntry++; + for(iCol=0; iCol<=p->nColumn; iCol++){ + aSzIns[iCol] += aSz[iCol]; + } + } + } + if( p->bFts4 ){ + fts3UpdateDocTotals(&rc, p, aSzIns, aSzDel, nEntry); + } + sqlite3_free(aSz); + + if( pStmt ){ + int rc2 = sqlite3_finalize(pStmt); + if( rc==SQLITE_OK ){ + rc = rc2; + } + } + } + + return rc; +} + + +/* +** This function opens a cursor used to read the input data for an +** incremental merge operation. Specifically, it opens a cursor to scan +** the oldest nSeg segments (idx=0 through idx=(nSeg-1)) in absolute +** level iAbsLevel. +*/ +static int fts3IncrmergeCsr( + Fts3Table *p, /* FTS3 table handle */ + sqlite3_int64 iAbsLevel, /* Absolute level to open */ + int nSeg, /* Number of segments to merge */ + Fts3MultiSegReader *pCsr /* Cursor object to populate */ +){ + int rc; /* Return Code */ + sqlite3_stmt *pStmt = 0; /* Statement used to read %_segdir entry */ + int nByte; /* Bytes allocated at pCsr->apSegment[] */ + + /* Allocate space for the Fts3MultiSegReader.aCsr[] array */ + memset(pCsr, 0, sizeof(*pCsr)); + nByte = sizeof(Fts3SegReader *) * nSeg; + pCsr->apSegment = (Fts3SegReader **)sqlite3_malloc(nByte); + + if( pCsr->apSegment==0 ){ + rc = SQLITE_NOMEM; + }else{ + memset(pCsr->apSegment, 0, nByte); + rc = fts3SqlStmt(p, SQL_SELECT_LEVEL, &pStmt, 0); + } + if( rc==SQLITE_OK ){ + int i; + int rc2; + sqlite3_bind_int64(pStmt, 1, iAbsLevel); + assert( pCsr->nSegment==0 ); + for(i=0; rc==SQLITE_OK && sqlite3_step(pStmt)==SQLITE_ROW && iapSegment[i] + ); + pCsr->nSegment++; + } + rc2 = sqlite3_reset(pStmt); + if( rc==SQLITE_OK ) rc = rc2; + } + + return rc; +} + +typedef struct IncrmergeWriter IncrmergeWriter; +typedef struct NodeWriter NodeWriter; +typedef struct Blob Blob; +typedef struct NodeReader NodeReader; + +/* +** An instance of the following structure is used as a dynamic buffer +** to build up nodes or other blobs of data in. +** +** The function blobGrowBuffer() is used to extend the allocation. +*/ +struct Blob { + char *a; /* Pointer to allocation */ + int n; /* Number of valid bytes of data in a[] */ + int nAlloc; /* Allocated size of a[] (nAlloc>=n) */ +}; + +/* +** This structure is used to build up buffers containing segment b-tree +** nodes (blocks). +*/ +struct NodeWriter { + sqlite3_int64 iBlock; /* Current block id */ + Blob key; /* Last key written to the current block */ + Blob block; /* Current block image */ +}; + +/* +** An object of this type contains the state required to create or append +** to an appendable b-tree segment. +*/ +struct IncrmergeWriter { + int nLeafEst; /* Space allocated for leaf blocks */ + int nWork; /* Number of leaf pages flushed */ + sqlite3_int64 iAbsLevel; /* Absolute level of input segments */ + int iIdx; /* Index of *output* segment in iAbsLevel+1 */ + sqlite3_int64 iStart; /* Block number of first allocated block */ + sqlite3_int64 iEnd; /* Block number of last allocated block */ + NodeWriter aNodeWriter[FTS_MAX_APPENDABLE_HEIGHT]; +}; + +/* +** An object of the following type is used to read data from a single +** FTS segment node. See the following functions: +** +** nodeReaderInit() +** nodeReaderNext() +** nodeReaderRelease() +*/ +struct NodeReader { + const char *aNode; + int nNode; + int iOff; /* Current offset within aNode[] */ + + /* Output variables. Containing the current node entry. */ + sqlite3_int64 iChild; /* Pointer to child node */ + Blob term; /* Current term */ + const char *aDoclist; /* Pointer to doclist */ + int nDoclist; /* Size of doclist in bytes */ +}; + +/* +** If *pRc is not SQLITE_OK when this function is called, it is a no-op. +** Otherwise, if the allocation at pBlob->a is not already at least nMin +** bytes in size, extend (realloc) it to be so. +** +** If an OOM error occurs, set *pRc to SQLITE_NOMEM and leave pBlob->a +** unmodified. Otherwise, if the allocation succeeds, update pBlob->nAlloc +** to reflect the new size of the pBlob->a[] buffer. +*/ +static void blobGrowBuffer(Blob *pBlob, int nMin, int *pRc){ + if( *pRc==SQLITE_OK && nMin>pBlob->nAlloc ){ + int nAlloc = nMin; + char *a = (char *)sqlite3_realloc(pBlob->a, nAlloc); + if( a ){ + pBlob->nAlloc = nAlloc; + pBlob->a = a; + }else{ + *pRc = SQLITE_NOMEM; + } + } +} + +/* +** Attempt to advance the node-reader object passed as the first argument to +** the next entry on the node. +** +** Return an error code if an error occurs (SQLITE_NOMEM is possible). +** Otherwise return SQLITE_OK. If there is no next entry on the node +** (e.g. because the current entry is the last) set NodeReader->aNode to +** NULL to indicate EOF. Otherwise, populate the NodeReader structure output +** variables for the new entry. +*/ +static int nodeReaderNext(NodeReader *p){ + int bFirst = (p->term.n==0); /* True for first term on the node */ + int nPrefix = 0; /* Bytes to copy from previous term */ + int nSuffix = 0; /* Bytes to append to the prefix */ + int rc = SQLITE_OK; /* Return code */ + + assert( p->aNode ); + if( p->iChild && bFirst==0 ) p->iChild++; + if( p->iOff>=p->nNode ){ + /* EOF */ + p->aNode = 0; + }else{ + if( bFirst==0 ){ + p->iOff += sqlite3Fts3GetVarint32(&p->aNode[p->iOff], &nPrefix); + } + p->iOff += sqlite3Fts3GetVarint32(&p->aNode[p->iOff], &nSuffix); + + blobGrowBuffer(&p->term, nPrefix+nSuffix, &rc); + if( rc==SQLITE_OK ){ + memcpy(&p->term.a[nPrefix], &p->aNode[p->iOff], nSuffix); + p->term.n = nPrefix+nSuffix; + p->iOff += nSuffix; + if( p->iChild==0 ){ + p->iOff += sqlite3Fts3GetVarint32(&p->aNode[p->iOff], &p->nDoclist); + p->aDoclist = &p->aNode[p->iOff]; + p->iOff += p->nDoclist; + } + } + } + + assert( p->iOff<=p->nNode ); + + return rc; +} + +/* +** Release all dynamic resources held by node-reader object *p. +*/ +static void nodeReaderRelease(NodeReader *p){ + sqlite3_free(p->term.a); +} + +/* +** Initialize a node-reader object to read the node in buffer aNode/nNode. +** +** If successful, SQLITE_OK is returned and the NodeReader object set to +** point to the first entry on the node (if any). Otherwise, an SQLite +** error code is returned. +*/ +static int nodeReaderInit(NodeReader *p, const char *aNode, int nNode){ + memset(p, 0, sizeof(NodeReader)); + p->aNode = aNode; + p->nNode = nNode; + + /* Figure out if this is a leaf or an internal node. */ + if( p->aNode[0] ){ + /* An internal node. */ + p->iOff = 1 + sqlite3Fts3GetVarint(&p->aNode[1], &p->iChild); + }else{ + p->iOff = 1; + } + + return nodeReaderNext(p); +} + +/* +** This function is called while writing an FTS segment each time a leaf o +** node is finished and written to disk. The key (zTerm/nTerm) is guaranteed +** to be greater than the largest key on the node just written, but smaller +** than or equal to the first key that will be written to the next leaf +** node. +** +** The block id of the leaf node just written to disk may be found in +** (pWriter->aNodeWriter[0].iBlock) when this function is called. +*/ +static int fts3IncrmergePush( + Fts3Table *p, /* Fts3 table handle */ + IncrmergeWriter *pWriter, /* Writer object */ + const char *zTerm, /* Term to write to internal node */ + int nTerm /* Bytes at zTerm */ +){ + sqlite3_int64 iPtr = pWriter->aNodeWriter[0].iBlock; + int iLayer; + + assert( nTerm>0 ); + for(iLayer=1; ALWAYS(iLayeraNodeWriter[iLayer]; + int rc = SQLITE_OK; + int nPrefix; + int nSuffix; + int nSpace; + + /* Figure out how much space the key will consume if it is written to + ** the current node of layer iLayer. Due to the prefix compression, + ** the space required changes depending on which node the key is to + ** be added to. */ + nPrefix = fts3PrefixCompress(pNode->key.a, pNode->key.n, zTerm, nTerm); + nSuffix = nTerm - nPrefix; + nSpace = sqlite3Fts3VarintLen(nPrefix); + nSpace += sqlite3Fts3VarintLen(nSuffix) + nSuffix; + + if( pNode->key.n==0 || (pNode->block.n + nSpace)<=p->nNodeSize ){ + /* If the current node of layer iLayer contains zero keys, or if adding + ** the key to it will not cause it to grow to larger than nNodeSize + ** bytes in size, write the key here. */ + + Blob *pBlk = &pNode->block; + if( pBlk->n==0 ){ + blobGrowBuffer(pBlk, p->nNodeSize, &rc); + if( rc==SQLITE_OK ){ + pBlk->a[0] = (char)iLayer; + pBlk->n = 1 + sqlite3Fts3PutVarint(&pBlk->a[1], iPtr); + } + } + blobGrowBuffer(pBlk, pBlk->n + nSpace, &rc); + blobGrowBuffer(&pNode->key, nTerm, &rc); + + if( rc==SQLITE_OK ){ + if( pNode->key.n ){ + pBlk->n += sqlite3Fts3PutVarint(&pBlk->a[pBlk->n], nPrefix); + } + pBlk->n += sqlite3Fts3PutVarint(&pBlk->a[pBlk->n], nSuffix); + memcpy(&pBlk->a[pBlk->n], &zTerm[nPrefix], nSuffix); + pBlk->n += nSuffix; + + memcpy(pNode->key.a, zTerm, nTerm); + pNode->key.n = nTerm; + } + }else{ + /* Otherwise, flush the current node of layer iLayer to disk. + ** Then allocate a new, empty sibling node. The key will be written + ** into the parent of this node. */ + rc = fts3WriteSegment(p, pNode->iBlock, pNode->block.a, pNode->block.n); + + assert( pNode->block.nAlloc>=p->nNodeSize ); + pNode->block.a[0] = (char)iLayer; + pNode->block.n = 1 + sqlite3Fts3PutVarint(&pNode->block.a[1], iPtr+1); + + iNextPtr = pNode->iBlock; + pNode->iBlock++; + pNode->key.n = 0; + } + + if( rc!=SQLITE_OK || iNextPtr==0 ) return rc; + iPtr = iNextPtr; + } + + assert( 0 ); + return 0; +} + +/* +** Append a term and (optionally) doclist to the FTS segment node currently +** stored in blob *pNode. The node need not contain any terms, but the +** header must be written before this function is called. +** +** A node header is a single 0x00 byte for a leaf node, or a height varint +** followed by the left-hand-child varint for an internal node. +** +** The term to be appended is passed via arguments zTerm/nTerm. For a +** leaf node, the doclist is passed as aDoclist/nDoclist. For an internal +** node, both aDoclist and nDoclist must be passed 0. +** +** If the size of the value in blob pPrev is zero, then this is the first +** term written to the node. Otherwise, pPrev contains a copy of the +** previous term. Before this function returns, it is updated to contain a +** copy of zTerm/nTerm. +** +** It is assumed that the buffer associated with pNode is already large +** enough to accommodate the new entry. The buffer associated with pPrev +** is extended by this function if requrired. +** +** If an error (i.e. OOM condition) occurs, an SQLite error code is +** returned. Otherwise, SQLITE_OK. +*/ +static int fts3AppendToNode( + Blob *pNode, /* Current node image to append to */ + Blob *pPrev, /* Buffer containing previous term written */ + const char *zTerm, /* New term to write */ + int nTerm, /* Size of zTerm in bytes */ + const char *aDoclist, /* Doclist (or NULL) to write */ + int nDoclist /* Size of aDoclist in bytes */ +){ + int rc = SQLITE_OK; /* Return code */ + int bFirst = (pPrev->n==0); /* True if this is the first term written */ + int nPrefix; /* Size of term prefix in bytes */ + int nSuffix; /* Size of term suffix in bytes */ + + /* Node must have already been started. There must be a doclist for a + ** leaf node, and there must not be a doclist for an internal node. */ + assert( pNode->n>0 ); + assert( (pNode->a[0]=='\0')==(aDoclist!=0) ); + + blobGrowBuffer(pPrev, nTerm, &rc); + if( rc!=SQLITE_OK ) return rc; + + nPrefix = fts3PrefixCompress(pPrev->a, pPrev->n, zTerm, nTerm); + nSuffix = nTerm - nPrefix; + memcpy(pPrev->a, zTerm, nTerm); + pPrev->n = nTerm; + + if( bFirst==0 ){ + pNode->n += sqlite3Fts3PutVarint(&pNode->a[pNode->n], nPrefix); + } + pNode->n += sqlite3Fts3PutVarint(&pNode->a[pNode->n], nSuffix); + memcpy(&pNode->a[pNode->n], &zTerm[nPrefix], nSuffix); + pNode->n += nSuffix; + + if( aDoclist ){ + pNode->n += sqlite3Fts3PutVarint(&pNode->a[pNode->n], nDoclist); + memcpy(&pNode->a[pNode->n], aDoclist, nDoclist); + pNode->n += nDoclist; + } + + assert( pNode->n<=pNode->nAlloc ); + + return SQLITE_OK; +} + +/* +** Append the current term and doclist pointed to by cursor pCsr to the +** appendable b-tree segment opened for writing by pWriter. +** +** Return SQLITE_OK if successful, or an SQLite error code otherwise. +*/ +static int fts3IncrmergeAppend( + Fts3Table *p, /* Fts3 table handle */ + IncrmergeWriter *pWriter, /* Writer object */ + Fts3MultiSegReader *pCsr /* Cursor containing term and doclist */ +){ + const char *zTerm = pCsr->zTerm; + int nTerm = pCsr->nTerm; + const char *aDoclist = pCsr->aDoclist; + int nDoclist = pCsr->nDoclist; + int rc = SQLITE_OK; /* Return code */ + int nSpace; /* Total space in bytes required on leaf */ + int nPrefix; /* Size of prefix shared with previous term */ + int nSuffix; /* Size of suffix (nTerm - nPrefix) */ + NodeWriter *pLeaf; /* Object used to write leaf nodes */ + + pLeaf = &pWriter->aNodeWriter[0]; + nPrefix = fts3PrefixCompress(pLeaf->key.a, pLeaf->key.n, zTerm, nTerm); + nSuffix = nTerm - nPrefix; + + nSpace = sqlite3Fts3VarintLen(nPrefix); + nSpace += sqlite3Fts3VarintLen(nSuffix) + nSuffix; + nSpace += sqlite3Fts3VarintLen(nDoclist) + nDoclist; + + /* If the current block is not empty, and if adding this term/doclist + ** to the current block would make it larger than Fts3Table.nNodeSize + ** bytes, write this block out to the database. */ + if( pLeaf->block.n>0 && (pLeaf->block.n + nSpace)>p->nNodeSize ){ + rc = fts3WriteSegment(p, pLeaf->iBlock, pLeaf->block.a, pLeaf->block.n); + pWriter->nWork++; + + /* Add the current term to the parent node. The term added to the + ** parent must: + ** + ** a) be greater than the largest term on the leaf node just written + ** to the database (still available in pLeaf->key), and + ** + ** b) be less than or equal to the term about to be added to the new + ** leaf node (zTerm/nTerm). + ** + ** In other words, it must be the prefix of zTerm 1 byte longer than + ** the common prefix (if any) of zTerm and pWriter->zTerm. + */ + if( rc==SQLITE_OK ){ + rc = fts3IncrmergePush(p, pWriter, zTerm, nPrefix+1); + } + + /* Advance to the next output block */ + pLeaf->iBlock++; + pLeaf->key.n = 0; + pLeaf->block.n = 0; + + nSuffix = nTerm; + nSpace = 1; + nSpace += sqlite3Fts3VarintLen(nSuffix) + nSuffix; + nSpace += sqlite3Fts3VarintLen(nDoclist) + nDoclist; + } + + blobGrowBuffer(&pLeaf->block, pLeaf->block.n + nSpace, &rc); + + if( rc==SQLITE_OK ){ + if( pLeaf->block.n==0 ){ + pLeaf->block.n = 1; + pLeaf->block.a[0] = '\0'; + } + rc = fts3AppendToNode( + &pLeaf->block, &pLeaf->key, zTerm, nTerm, aDoclist, nDoclist + ); + } + + return rc; +} + +/* +** This function is called to release all dynamic resources held by the +** merge-writer object pWriter, and if no error has occurred, to flush +** all outstanding node buffers held by pWriter to disk. +** +** If *pRc is not SQLITE_OK when this function is called, then no attempt +** is made to write any data to disk. Instead, this function serves only +** to release outstanding resources. +** +** Otherwise, if *pRc is initially SQLITE_OK and an error occurs while +** flushing buffers to disk, *pRc is set to an SQLite error code before +** returning. +*/ +static void fts3IncrmergeRelease( + Fts3Table *p, /* FTS3 table handle */ + IncrmergeWriter *pWriter, /* Merge-writer object */ + int *pRc /* IN/OUT: Error code */ +){ + int i; /* Used to iterate through non-root layers */ + int iRoot; /* Index of root in pWriter->aNodeWriter */ + NodeWriter *pRoot; /* NodeWriter for root node */ + int rc = *pRc; /* Error code */ + + /* Set iRoot to the index in pWriter->aNodeWriter[] of the output segment + ** root node. If the segment fits entirely on a single leaf node, iRoot + ** will be set to 0. If the root node is the parent of the leaves, iRoot + ** will be 1. And so on. */ + for(iRoot=FTS_MAX_APPENDABLE_HEIGHT-1; iRoot>=0; iRoot--){ + NodeWriter *pNode = &pWriter->aNodeWriter[iRoot]; + if( pNode->block.n>0 ) break; + assert( *pRc || pNode->block.nAlloc==0 ); + assert( *pRc || pNode->key.nAlloc==0 ); + sqlite3_free(pNode->block.a); + sqlite3_free(pNode->key.a); + } + + /* Empty output segment. This is a no-op. */ + if( iRoot<0 ) return; + + /* The entire output segment fits on a single node. Normally, this means + ** the node would be stored as a blob in the "root" column of the %_segdir + ** table. However, this is not permitted in this case. The problem is that + ** space has already been reserved in the %_segments table, and so the + ** start_block and end_block fields of the %_segdir table must be populated. + ** And, by design or by accident, released versions of FTS cannot handle + ** segments that fit entirely on the root node with start_block!=0. + ** + ** Instead, create a synthetic root node that contains nothing but a + ** pointer to the single content node. So that the segment consists of a + ** single leaf and a single interior (root) node. + ** + ** Todo: Better might be to defer allocating space in the %_segments + ** table until we are sure it is needed. + */ + if( iRoot==0 ){ + Blob *pBlock = &pWriter->aNodeWriter[1].block; + blobGrowBuffer(pBlock, 1 + FTS3_VARINT_MAX, &rc); + if( rc==SQLITE_OK ){ + pBlock->a[0] = 0x01; + pBlock->n = 1 + sqlite3Fts3PutVarint( + &pBlock->a[1], pWriter->aNodeWriter[0].iBlock + ); + } + iRoot = 1; + } + pRoot = &pWriter->aNodeWriter[iRoot]; + + /* Flush all currently outstanding nodes to disk. */ + for(i=0; iaNodeWriter[i]; + if( pNode->block.n>0 && rc==SQLITE_OK ){ + rc = fts3WriteSegment(p, pNode->iBlock, pNode->block.a, pNode->block.n); + } + sqlite3_free(pNode->block.a); + sqlite3_free(pNode->key.a); + } + + /* Write the %_segdir record. */ + if( rc==SQLITE_OK ){ + rc = fts3WriteSegdir(p, + pWriter->iAbsLevel+1, /* level */ + pWriter->iIdx, /* idx */ + pWriter->iStart, /* start_block */ + pWriter->aNodeWriter[0].iBlock, /* leaves_end_block */ + pWriter->iEnd, /* end_block */ + pRoot->block.a, pRoot->block.n /* root */ + ); + } + sqlite3_free(pRoot->block.a); + sqlite3_free(pRoot->key.a); + + *pRc = rc; +} + +/* +** Compare the term in buffer zLhs (size in bytes nLhs) with that in +** zRhs (size in bytes nRhs) using memcmp. If one term is a prefix of +** the other, it is considered to be smaller than the other. +** +** Return -ve if zLhs is smaller than zRhs, 0 if it is equal, or +ve +** if it is greater. +*/ +static int fts3TermCmp( + const char *zLhs, int nLhs, /* LHS of comparison */ + const char *zRhs, int nRhs /* RHS of comparison */ +){ + int nCmp = MIN(nLhs, nRhs); + int res; + + res = memcmp(zLhs, zRhs, nCmp); + if( res==0 ) res = nLhs - nRhs; + + return res; +} + + +/* +** Query to see if the entry in the %_segments table with blockid iEnd is +** NULL. If no error occurs and the entry is NULL, set *pbRes 1 before +** returning. Otherwise, set *pbRes to 0. +** +** Or, if an error occurs while querying the database, return an SQLite +** error code. The final value of *pbRes is undefined in this case. +** +** This is used to test if a segment is an "appendable" segment. If it +** is, then a NULL entry has been inserted into the %_segments table +** with blockid %_segdir.end_block. +*/ +static int fts3IsAppendable(Fts3Table *p, sqlite3_int64 iEnd, int *pbRes){ + int bRes = 0; /* Result to set *pbRes to */ + sqlite3_stmt *pCheck = 0; /* Statement to query database with */ + int rc; /* Return code */ + + rc = fts3SqlStmt(p, SQL_SEGMENT_IS_APPENDABLE, &pCheck, 0); + if( rc==SQLITE_OK ){ + sqlite3_bind_int64(pCheck, 1, iEnd); + if( SQLITE_ROW==sqlite3_step(pCheck) ) bRes = 1; + rc = sqlite3_reset(pCheck); + } + + *pbRes = bRes; + return rc; +} + +/* +** This function is called when initializing an incremental-merge operation. +** It checks if the existing segment with index value iIdx at absolute level +** (iAbsLevel+1) can be appended to by the incremental merge. If it can, the +** merge-writer object *pWriter is initialized to write to it. +** +** An existing segment can be appended to by an incremental merge if: +** +** * It was initially created as an appendable segment (with all required +** space pre-allocated), and +** +** * The first key read from the input (arguments zKey and nKey) is +** greater than the largest key currently stored in the potential +** output segment. +*/ +static int fts3IncrmergeLoad( + Fts3Table *p, /* Fts3 table handle */ + sqlite3_int64 iAbsLevel, /* Absolute level of input segments */ + int iIdx, /* Index of candidate output segment */ + const char *zKey, /* First key to write */ + int nKey, /* Number of bytes in nKey */ + IncrmergeWriter *pWriter /* Populate this object */ +){ + int rc; /* Return code */ + sqlite3_stmt *pSelect = 0; /* SELECT to read %_segdir entry */ + + rc = fts3SqlStmt(p, SQL_SELECT_SEGDIR, &pSelect, 0); + if( rc==SQLITE_OK ){ + sqlite3_int64 iStart = 0; /* Value of %_segdir.start_block */ + sqlite3_int64 iLeafEnd = 0; /* Value of %_segdir.leaves_end_block */ + sqlite3_int64 iEnd = 0; /* Value of %_segdir.end_block */ + const char *aRoot = 0; /* Pointer to %_segdir.root buffer */ + int nRoot = 0; /* Size of aRoot[] in bytes */ + int rc2; /* Return code from sqlite3_reset() */ + int bAppendable = 0; /* Set to true if segment is appendable */ + + /* Read the %_segdir entry for index iIdx absolute level (iAbsLevel+1) */ + sqlite3_bind_int64(pSelect, 1, iAbsLevel+1); + sqlite3_bind_int(pSelect, 2, iIdx); + if( sqlite3_step(pSelect)==SQLITE_ROW ){ + iStart = sqlite3_column_int64(pSelect, 1); + iLeafEnd = sqlite3_column_int64(pSelect, 2); + iEnd = sqlite3_column_int64(pSelect, 3); + nRoot = sqlite3_column_bytes(pSelect, 4); + aRoot = sqlite3_column_blob(pSelect, 4); + }else{ + return sqlite3_reset(pSelect); + } + + /* Check for the zero-length marker in the %_segments table */ + rc = fts3IsAppendable(p, iEnd, &bAppendable); + + /* Check that zKey/nKey is larger than the largest key the candidate */ + if( rc==SQLITE_OK && bAppendable ){ + char *aLeaf = 0; + int nLeaf = 0; + + rc = sqlite3Fts3ReadBlock(p, iLeafEnd, &aLeaf, &nLeaf, 0); + if( rc==SQLITE_OK ){ + NodeReader reader; + for(rc = nodeReaderInit(&reader, aLeaf, nLeaf); + rc==SQLITE_OK && reader.aNode; + rc = nodeReaderNext(&reader) + ){ + assert( reader.aNode ); + } + if( fts3TermCmp(zKey, nKey, reader.term.a, reader.term.n)<=0 ){ + bAppendable = 0; + } + nodeReaderRelease(&reader); + } + sqlite3_free(aLeaf); + } + + if( rc==SQLITE_OK && bAppendable ){ + /* It is possible to append to this segment. Set up the IncrmergeWriter + ** object to do so. */ + int i; + int nHeight = (int)aRoot[0]; + NodeWriter *pNode; + + pWriter->nLeafEst = (int)((iEnd - iStart) + 1)/FTS_MAX_APPENDABLE_HEIGHT; + pWriter->iStart = iStart; + pWriter->iEnd = iEnd; + pWriter->iAbsLevel = iAbsLevel; + pWriter->iIdx = iIdx; + + for(i=nHeight+1; iaNodeWriter[i].iBlock = pWriter->iStart + i*pWriter->nLeafEst; + } + + pNode = &pWriter->aNodeWriter[nHeight]; + pNode->iBlock = pWriter->iStart + pWriter->nLeafEst*nHeight; + blobGrowBuffer(&pNode->block, MAX(nRoot, p->nNodeSize), &rc); + if( rc==SQLITE_OK ){ + memcpy(pNode->block.a, aRoot, nRoot); + pNode->block.n = nRoot; + } + + for(i=nHeight; i>=0 && rc==SQLITE_OK; i--){ + NodeReader reader; + pNode = &pWriter->aNodeWriter[i]; + + rc = nodeReaderInit(&reader, pNode->block.a, pNode->block.n); + while( reader.aNode && rc==SQLITE_OK ) rc = nodeReaderNext(&reader); + blobGrowBuffer(&pNode->key, reader.term.n, &rc); + if( rc==SQLITE_OK ){ + memcpy(pNode->key.a, reader.term.a, reader.term.n); + pNode->key.n = reader.term.n; + if( i>0 ){ + char *aBlock = 0; + int nBlock = 0; + pNode = &pWriter->aNodeWriter[i-1]; + pNode->iBlock = reader.iChild; + rc = sqlite3Fts3ReadBlock(p, reader.iChild, &aBlock, &nBlock, 0); + blobGrowBuffer(&pNode->block, MAX(nBlock, p->nNodeSize), &rc); + if( rc==SQLITE_OK ){ + memcpy(pNode->block.a, aBlock, nBlock); + pNode->block.n = nBlock; + } + sqlite3_free(aBlock); + } + } + nodeReaderRelease(&reader); + } + } + + rc2 = sqlite3_reset(pSelect); + if( rc==SQLITE_OK ) rc = rc2; + } + + return rc; +} + +/* +** Determine the largest segment index value that exists within absolute +** level iAbsLevel+1. If no error occurs, set *piIdx to this value plus +** one before returning SQLITE_OK. Or, if there are no segments at all +** within level iAbsLevel, set *piIdx to zero. +** +** If an error occurs, return an SQLite error code. The final value of +** *piIdx is undefined in this case. +*/ +static int fts3IncrmergeOutputIdx( + Fts3Table *p, /* FTS Table handle */ + sqlite3_int64 iAbsLevel, /* Absolute index of input segments */ + int *piIdx /* OUT: Next free index at iAbsLevel+1 */ +){ + int rc; + sqlite3_stmt *pOutputIdx = 0; /* SQL used to find output index */ + + rc = fts3SqlStmt(p, SQL_NEXT_SEGMENT_INDEX, &pOutputIdx, 0); + if( rc==SQLITE_OK ){ + sqlite3_bind_int64(pOutputIdx, 1, iAbsLevel+1); + sqlite3_step(pOutputIdx); + *piIdx = sqlite3_column_int(pOutputIdx, 0); + rc = sqlite3_reset(pOutputIdx); + } + + return rc; +} + +/* +** Allocate an appendable output segment on absolute level iAbsLevel+1 +** with idx value iIdx. +** +** In the %_segdir table, a segment is defined by the values in three +** columns: +** +** start_block +** leaves_end_block +** end_block +** +** When an appendable segment is allocated, it is estimated that the +** maximum number of leaf blocks that may be required is the sum of the +** number of leaf blocks consumed by the input segments, plus the number +** of input segments, multiplied by two. This value is stored in stack +** variable nLeafEst. +** +** A total of 16*nLeafEst blocks are allocated when an appendable segment +** is created ((1 + end_block - start_block)==16*nLeafEst). The contiguous +** array of leaf nodes starts at the first block allocated. The array +** of interior nodes that are parents of the leaf nodes start at block +** (start_block + (1 + end_block - start_block) / 16). And so on. +** +** In the actual code below, the value "16" is replaced with the +** pre-processor macro FTS_MAX_APPENDABLE_HEIGHT. +*/ +static int fts3IncrmergeWriter( + Fts3Table *p, /* Fts3 table handle */ + sqlite3_int64 iAbsLevel, /* Absolute level of input segments */ + int iIdx, /* Index of new output segment */ + Fts3MultiSegReader *pCsr, /* Cursor that data will be read from */ + IncrmergeWriter *pWriter /* Populate this object */ +){ + int rc; /* Return Code */ + int i; /* Iterator variable */ + int nLeafEst = 0; /* Blocks allocated for leaf nodes */ + sqlite3_stmt *pLeafEst = 0; /* SQL used to determine nLeafEst */ + sqlite3_stmt *pFirstBlock = 0; /* SQL used to determine first block */ + + /* Calculate nLeafEst. */ + rc = fts3SqlStmt(p, SQL_MAX_LEAF_NODE_ESTIMATE, &pLeafEst, 0); + if( rc==SQLITE_OK ){ + sqlite3_bind_int64(pLeafEst, 1, iAbsLevel); + sqlite3_bind_int64(pLeafEst, 2, pCsr->nSegment); + if( SQLITE_ROW==sqlite3_step(pLeafEst) ){ + nLeafEst = sqlite3_column_int(pLeafEst, 0); + } + rc = sqlite3_reset(pLeafEst); + } + if( rc!=SQLITE_OK ) return rc; + + /* Calculate the first block to use in the output segment */ + rc = fts3SqlStmt(p, SQL_NEXT_SEGMENTS_ID, &pFirstBlock, 0); + if( rc==SQLITE_OK ){ + if( SQLITE_ROW==sqlite3_step(pFirstBlock) ){ + pWriter->iStart = sqlite3_column_int64(pFirstBlock, 0); + pWriter->iEnd = pWriter->iStart - 1; + pWriter->iEnd += nLeafEst * FTS_MAX_APPENDABLE_HEIGHT; + } + rc = sqlite3_reset(pFirstBlock); + } + if( rc!=SQLITE_OK ) return rc; + + /* Insert the marker in the %_segments table to make sure nobody tries + ** to steal the space just allocated. This is also used to identify + ** appendable segments. */ + rc = fts3WriteSegment(p, pWriter->iEnd, 0, 0); + if( rc!=SQLITE_OK ) return rc; + + pWriter->iAbsLevel = iAbsLevel; + pWriter->nLeafEst = nLeafEst; + pWriter->iIdx = iIdx; + + /* Set up the array of NodeWriter objects */ + for(i=0; iaNodeWriter[i].iBlock = pWriter->iStart + i*pWriter->nLeafEst; + } + return SQLITE_OK; +} + +/* +** Remove an entry from the %_segdir table. This involves running the +** following two statements: +** +** DELETE FROM %_segdir WHERE level = :iAbsLevel AND idx = :iIdx +** UPDATE %_segdir SET idx = idx - 1 WHERE level = :iAbsLevel AND idx > :iIdx +** +** The DELETE statement removes the specific %_segdir level. The UPDATE +** statement ensures that the remaining segments have contiguously allocated +** idx values. +*/ +static int fts3RemoveSegdirEntry( + Fts3Table *p, /* FTS3 table handle */ + sqlite3_int64 iAbsLevel, /* Absolute level to delete from */ + int iIdx /* Index of %_segdir entry to delete */ +){ + int rc; /* Return code */ + sqlite3_stmt *pDelete = 0; /* DELETE statement */ + + rc = fts3SqlStmt(p, SQL_DELETE_SEGDIR_ENTRY, &pDelete, 0); + if( rc==SQLITE_OK ){ + sqlite3_bind_int64(pDelete, 1, iAbsLevel); + sqlite3_bind_int(pDelete, 2, iIdx); + sqlite3_step(pDelete); + rc = sqlite3_reset(pDelete); + } + + return rc; +} + +/* +** One or more segments have just been removed from absolute level iAbsLevel. +** Update the 'idx' values of the remaining segments in the level so that +** the idx values are a contiguous sequence starting from 0. +*/ +static int fts3RepackSegdirLevel( + Fts3Table *p, /* FTS3 table handle */ + sqlite3_int64 iAbsLevel /* Absolute level to repack */ +){ + int rc; /* Return code */ + int *aIdx = 0; /* Array of remaining idx values */ + int nIdx = 0; /* Valid entries in aIdx[] */ + int nAlloc = 0; /* Allocated size of aIdx[] */ + int i; /* Iterator variable */ + sqlite3_stmt *pSelect = 0; /* Select statement to read idx values */ + sqlite3_stmt *pUpdate = 0; /* Update statement to modify idx values */ + + rc = fts3SqlStmt(p, SQL_SELECT_INDEXES, &pSelect, 0); + if( rc==SQLITE_OK ){ + int rc2; + sqlite3_bind_int64(pSelect, 1, iAbsLevel); + while( SQLITE_ROW==sqlite3_step(pSelect) ){ + if( nIdx>=nAlloc ){ + int *aNew; + nAlloc += 16; + aNew = sqlite3_realloc(aIdx, nAlloc*sizeof(int)); + if( !aNew ){ + rc = SQLITE_NOMEM; + break; + } + aIdx = aNew; + } + aIdx[nIdx++] = sqlite3_column_int(pSelect, 0); + } + rc2 = sqlite3_reset(pSelect); + if( rc==SQLITE_OK ) rc = rc2; + } + + if( rc==SQLITE_OK ){ + rc = fts3SqlStmt(p, SQL_SHIFT_SEGDIR_ENTRY, &pUpdate, 0); + } + if( rc==SQLITE_OK ){ + sqlite3_bind_int64(pUpdate, 2, iAbsLevel); + } + + assert( p->bIgnoreSavepoint==0 ); + p->bIgnoreSavepoint = 1; + for(i=0; rc==SQLITE_OK && ibIgnoreSavepoint = 0; + + sqlite3_free(aIdx); + return rc; +} + +static void fts3StartNode(Blob *pNode, int iHeight, sqlite3_int64 iChild){ + pNode->a[0] = (char)iHeight; + if( iChild ){ + assert( pNode->nAlloc>=1+sqlite3Fts3VarintLen(iChild) ); + pNode->n = 1 + sqlite3Fts3PutVarint(&pNode->a[1], iChild); + }else{ + assert( pNode->nAlloc>=1 ); + pNode->n = 1; + } +} + +/* +** The first two arguments are a pointer to and the size of a segment b-tree +** node. The node may be a leaf or an internal node. +** +** This function creates a new node image in blob object *pNew by copying +** all terms that are greater than or equal to zTerm/nTerm (for leaf nodes) +** or greater than zTerm/nTerm (for internal nodes) from aNode/nNode. +*/ +static int fts3TruncateNode( + const char *aNode, /* Current node image */ + int nNode, /* Size of aNode in bytes */ + Blob *pNew, /* OUT: Write new node image here */ + const char *zTerm, /* Omit all terms smaller than this */ + int nTerm, /* Size of zTerm in bytes */ + sqlite3_int64 *piBlock /* OUT: Block number in next layer down */ +){ + NodeReader reader; /* Reader object */ + Blob prev = {0, 0, 0}; /* Previous term written to new node */ + int rc = SQLITE_OK; /* Return code */ + int bLeaf = aNode[0]=='\0'; /* True for a leaf node */ + + /* Allocate required output space */ + blobGrowBuffer(pNew, nNode, &rc); + if( rc!=SQLITE_OK ) return rc; + pNew->n = 0; + + /* Populate new node buffer */ + for(rc = nodeReaderInit(&reader, aNode, nNode); + rc==SQLITE_OK && reader.aNode; + rc = nodeReaderNext(&reader) + ){ + if( pNew->n==0 ){ + int res = fts3TermCmp(reader.term.a, reader.term.n, zTerm, nTerm); + if( res<0 || (bLeaf==0 && res==0) ) continue; + fts3StartNode(pNew, (int)aNode[0], reader.iChild); + *piBlock = reader.iChild; + } + rc = fts3AppendToNode( + pNew, &prev, reader.term.a, reader.term.n, + reader.aDoclist, reader.nDoclist + ); + if( rc!=SQLITE_OK ) break; + } + if( pNew->n==0 ){ + fts3StartNode(pNew, (int)aNode[0], reader.iChild); + *piBlock = reader.iChild; + } + assert( pNew->n<=pNew->nAlloc ); + + nodeReaderRelease(&reader); + sqlite3_free(prev.a); + return rc; +} + +/* +** Remove all terms smaller than zTerm/nTerm from segment iIdx in absolute +** level iAbsLevel. This may involve deleting entries from the %_segments +** table, and modifying existing entries in both the %_segments and %_segdir +** tables. +** +** SQLITE_OK is returned if the segment is updated successfully. Or an +** SQLite error code otherwise. +*/ +static int fts3TruncateSegment( + Fts3Table *p, /* FTS3 table handle */ + sqlite3_int64 iAbsLevel, /* Absolute level of segment to modify */ + int iIdx, /* Index within level of segment to modify */ + const char *zTerm, /* Remove terms smaller than this */ + int nTerm /* Number of bytes in buffer zTerm */ +){ + int rc = SQLITE_OK; /* Return code */ + Blob root = {0,0,0}; /* New root page image */ + Blob block = {0,0,0}; /* Buffer used for any other block */ + sqlite3_int64 iBlock = 0; /* Block id */ + sqlite3_int64 iNewStart = 0; /* New value for iStartBlock */ + sqlite3_int64 iOldStart = 0; /* Old value for iStartBlock */ + sqlite3_stmt *pFetch = 0; /* Statement used to fetch segdir */ + + rc = fts3SqlStmt(p, SQL_SELECT_SEGDIR, &pFetch, 0); + if( rc==SQLITE_OK ){ + int rc2; /* sqlite3_reset() return code */ + sqlite3_bind_int64(pFetch, 1, iAbsLevel); + sqlite3_bind_int(pFetch, 2, iIdx); + if( SQLITE_ROW==sqlite3_step(pFetch) ){ + const char *aRoot = sqlite3_column_blob(pFetch, 4); + int nRoot = sqlite3_column_bytes(pFetch, 4); + iOldStart = sqlite3_column_int64(pFetch, 1); + rc = fts3TruncateNode(aRoot, nRoot, &root, zTerm, nTerm, &iBlock); + } + rc2 = sqlite3_reset(pFetch); + if( rc==SQLITE_OK ) rc = rc2; + } + + while( rc==SQLITE_OK && iBlock ){ + char *aBlock = 0; + int nBlock = 0; + iNewStart = iBlock; + + rc = sqlite3Fts3ReadBlock(p, iBlock, &aBlock, &nBlock, 0); + if( rc==SQLITE_OK ){ + rc = fts3TruncateNode(aBlock, nBlock, &block, zTerm, nTerm, &iBlock); + } + if( rc==SQLITE_OK ){ + rc = fts3WriteSegment(p, iNewStart, block.a, block.n); + } + sqlite3_free(aBlock); + } + + /* Variable iNewStart now contains the first valid leaf node. */ + if( rc==SQLITE_OK && iNewStart ){ + sqlite3_stmt *pDel = 0; + rc = fts3SqlStmt(p, SQL_DELETE_SEGMENTS_RANGE, &pDel, 0); + if( rc==SQLITE_OK ){ + sqlite3_bind_int64(pDel, 1, iOldStart); + sqlite3_bind_int64(pDel, 2, iNewStart-1); + sqlite3_step(pDel); + rc = sqlite3_reset(pDel); + } + } + + if( rc==SQLITE_OK ){ + sqlite3_stmt *pChomp = 0; + rc = fts3SqlStmt(p, SQL_CHOMP_SEGDIR, &pChomp, 0); + if( rc==SQLITE_OK ){ + sqlite3_bind_int64(pChomp, 1, iNewStart); + sqlite3_bind_blob(pChomp, 2, root.a, root.n, SQLITE_STATIC); + sqlite3_bind_int64(pChomp, 3, iAbsLevel); + sqlite3_bind_int(pChomp, 4, iIdx); + sqlite3_step(pChomp); + rc = sqlite3_reset(pChomp); + } + } + + sqlite3_free(root.a); + sqlite3_free(block.a); + return rc; +} + +/* +** This function is called after an incrmental-merge operation has run to +** merge (or partially merge) two or more segments from absolute level +** iAbsLevel. +** +** Each input segment is either removed from the db completely (if all of +** its data was copied to the output segment by the incrmerge operation) +** or modified in place so that it no longer contains those entries that +** have been duplicated in the output segment. +*/ +static int fts3IncrmergeChomp( + Fts3Table *p, /* FTS table handle */ + sqlite3_int64 iAbsLevel, /* Absolute level containing segments */ + Fts3MultiSegReader *pCsr, /* Chomp all segments opened by this cursor */ + int *pnRem /* Number of segments not deleted */ +){ + int i; + int nRem = 0; + int rc = SQLITE_OK; + + for(i=pCsr->nSegment-1; i>=0 && rc==SQLITE_OK; i--){ + Fts3SegReader *pSeg = 0; + int j; + + /* Find the Fts3SegReader object with Fts3SegReader.iIdx==i. It is hiding + ** somewhere in the pCsr->apSegment[] array. */ + for(j=0; ALWAYS(jnSegment); j++){ + pSeg = pCsr->apSegment[j]; + if( pSeg->iIdx==i ) break; + } + assert( jnSegment && pSeg->iIdx==i ); + + if( pSeg->aNode==0 ){ + /* Seg-reader is at EOF. Remove the entire input segment. */ + rc = fts3DeleteSegment(p, pSeg); + if( rc==SQLITE_OK ){ + rc = fts3RemoveSegdirEntry(p, iAbsLevel, pSeg->iIdx); + } + *pnRem = 0; + }else{ + /* The incremental merge did not copy all the data from this + ** segment to the upper level. The segment is modified in place + ** so that it contains no keys smaller than zTerm/nTerm. */ + const char *zTerm = pSeg->zTerm; + int nTerm = pSeg->nTerm; + rc = fts3TruncateSegment(p, iAbsLevel, pSeg->iIdx, zTerm, nTerm); + nRem++; + } + } + + if( rc==SQLITE_OK && nRem!=pCsr->nSegment ){ + rc = fts3RepackSegdirLevel(p, iAbsLevel); + } + + *pnRem = nRem; + return rc; +} + +/* +** Store an incr-merge hint in the database. +*/ +static int fts3IncrmergeHintStore(Fts3Table *p, Blob *pHint){ + sqlite3_stmt *pReplace = 0; + int rc; /* Return code */ + + rc = fts3SqlStmt(p, SQL_REPLACE_STAT, &pReplace, 0); + if( rc==SQLITE_OK ){ + sqlite3_bind_int(pReplace, 1, FTS_STAT_INCRMERGEHINT); + sqlite3_bind_blob(pReplace, 2, pHint->a, pHint->n, SQLITE_STATIC); + sqlite3_step(pReplace); + rc = sqlite3_reset(pReplace); + } + + return rc; +} + +/* +** Load an incr-merge hint from the database. The incr-merge hint, if one +** exists, is stored in the rowid==1 row of the %_stat table. +** +** If successful, populate blob *pHint with the value read from the %_stat +** table and return SQLITE_OK. Otherwise, if an error occurs, return an +** SQLite error code. +*/ +static int fts3IncrmergeHintLoad(Fts3Table *p, Blob *pHint){ + sqlite3_stmt *pSelect = 0; + int rc; + + pHint->n = 0; + rc = fts3SqlStmt(p, SQL_SELECT_STAT, &pSelect, 0); + if( rc==SQLITE_OK ){ + int rc2; + sqlite3_bind_int(pSelect, 1, FTS_STAT_INCRMERGEHINT); + if( SQLITE_ROW==sqlite3_step(pSelect) ){ + const char *aHint = sqlite3_column_blob(pSelect, 0); + int nHint = sqlite3_column_bytes(pSelect, 0); + if( aHint ){ + blobGrowBuffer(pHint, nHint, &rc); + if( rc==SQLITE_OK ){ + memcpy(pHint->a, aHint, nHint); + pHint->n = nHint; + } + } + } + rc2 = sqlite3_reset(pSelect); + if( rc==SQLITE_OK ) rc = rc2; + } + + return rc; +} + +/* +** If *pRc is not SQLITE_OK when this function is called, it is a no-op. +** Otherwise, append an entry to the hint stored in blob *pHint. Each entry +** consists of two varints, the absolute level number of the input segments +** and the number of input segments. +** +** If successful, leave *pRc set to SQLITE_OK and return. If an error occurs, +** set *pRc to an SQLite error code before returning. +*/ +static void fts3IncrmergeHintPush( + Blob *pHint, /* Hint blob to append to */ + i64 iAbsLevel, /* First varint to store in hint */ + int nInput, /* Second varint to store in hint */ + int *pRc /* IN/OUT: Error code */ +){ + blobGrowBuffer(pHint, pHint->n + 2*FTS3_VARINT_MAX, pRc); + if( *pRc==SQLITE_OK ){ + pHint->n += sqlite3Fts3PutVarint(&pHint->a[pHint->n], iAbsLevel); + pHint->n += sqlite3Fts3PutVarint(&pHint->a[pHint->n], (i64)nInput); + } +} + +/* +** Read the last entry (most recently pushed) from the hint blob *pHint +** and then remove the entry. Write the two values read to *piAbsLevel and +** *pnInput before returning. +** +** If no error occurs, return SQLITE_OK. If the hint blob in *pHint does +** not contain at least two valid varints, return SQLITE_CORRUPT_VTAB. +*/ +static int fts3IncrmergeHintPop(Blob *pHint, i64 *piAbsLevel, int *pnInput){ + const int nHint = pHint->n; + int i; + + i = pHint->n-2; + while( i>0 && (pHint->a[i-1] & 0x80) ) i--; + while( i>0 && (pHint->a[i-1] & 0x80) ) i--; + + pHint->n = i; + i += sqlite3Fts3GetVarint(&pHint->a[i], piAbsLevel); + i += sqlite3Fts3GetVarint32(&pHint->a[i], pnInput); + if( i!=nHint ) return SQLITE_CORRUPT_VTAB; + + return SQLITE_OK; +} + + +/* +** Attempt an incremental merge that writes nMerge leaf blocks. +** +** Incremental merges happen nMin segments at a time. The two +** segments to be merged are the nMin oldest segments (the ones with +** the smallest indexes) in the highest level that contains at least +** nMin segments. Multiple merges might occur in an attempt to write the +** quota of nMerge leaf blocks. +*/ +int sqlite3Fts3Incrmerge(Fts3Table *p, int nMerge, int nMin){ + int rc; /* Return code */ + int nRem = nMerge; /* Number of leaf pages yet to be written */ + Fts3MultiSegReader *pCsr; /* Cursor used to read input data */ + Fts3SegFilter *pFilter; /* Filter used with cursor pCsr */ + IncrmergeWriter *pWriter; /* Writer object */ + int nSeg = 0; /* Number of input segments */ + sqlite3_int64 iAbsLevel = 0; /* Absolute level number to work on */ + Blob hint = {0, 0, 0}; /* Hint read from %_stat table */ + int bDirtyHint = 0; /* True if blob 'hint' has been modified */ + + /* Allocate space for the cursor, filter and writer objects */ + const int nAlloc = sizeof(*pCsr) + sizeof(*pFilter) + sizeof(*pWriter); + pWriter = (IncrmergeWriter *)sqlite3_malloc(nAlloc); + if( !pWriter ) return SQLITE_NOMEM; + pFilter = (Fts3SegFilter *)&pWriter[1]; + pCsr = (Fts3MultiSegReader *)&pFilter[1]; + + rc = fts3IncrmergeHintLoad(p, &hint); + while( rc==SQLITE_OK && nRem>0 ){ + const i64 nMod = FTS3_SEGDIR_MAXLEVEL * p->nIndex; + sqlite3_stmt *pFindLevel = 0; /* SQL used to determine iAbsLevel */ + int bUseHint = 0; /* True if attempting to append */ + + /* Search the %_segdir table for the absolute level with the smallest + ** relative level number that contains at least nMin segments, if any. + ** If one is found, set iAbsLevel to the absolute level number and + ** nSeg to nMin. If no level with at least nMin segments can be found, + ** set nSeg to -1. + */ + rc = fts3SqlStmt(p, SQL_FIND_MERGE_LEVEL, &pFindLevel, 0); + sqlite3_bind_int(pFindLevel, 1, nMin); + if( sqlite3_step(pFindLevel)==SQLITE_ROW ){ + iAbsLevel = sqlite3_column_int64(pFindLevel, 0); + nSeg = nMin; + }else{ + nSeg = -1; + } + rc = sqlite3_reset(pFindLevel); + + /* If the hint read from the %_stat table is not empty, check if the + ** last entry in it specifies a relative level smaller than or equal + ** to the level identified by the block above (if any). If so, this + ** iteration of the loop will work on merging at the hinted level. + */ + if( rc==SQLITE_OK && hint.n ){ + int nHint = hint.n; + sqlite3_int64 iHintAbsLevel = 0; /* Hint level */ + int nHintSeg = 0; /* Hint number of segments */ + + rc = fts3IncrmergeHintPop(&hint, &iHintAbsLevel, &nHintSeg); + if( nSeg<0 || (iAbsLevel % nMod) >= (iHintAbsLevel % nMod) ){ + iAbsLevel = iHintAbsLevel; + nSeg = nHintSeg; + bUseHint = 1; + bDirtyHint = 1; + }else{ + /* This undoes the effect of the HintPop() above - so that no entry + ** is removed from the hint blob. */ + hint.n = nHint; + } + } + + /* If nSeg is less that zero, then there is no level with at least + ** nMin segments and no hint in the %_stat table. No work to do. + ** Exit early in this case. */ + if( nSeg<0 ) break; + + /* Open a cursor to iterate through the contents of the oldest nSeg + ** indexes of absolute level iAbsLevel. If this cursor is opened using + ** the 'hint' parameters, it is possible that there are less than nSeg + ** segments available in level iAbsLevel. In this case, no work is + ** done on iAbsLevel - fall through to the next iteration of the loop + ** to start work on some other level. */ + memset(pWriter, 0, nAlloc); + pFilter->flags = FTS3_SEGMENT_REQUIRE_POS; + if( rc==SQLITE_OK ){ + rc = fts3IncrmergeCsr(p, iAbsLevel, nSeg, pCsr); + } + if( SQLITE_OK==rc && pCsr->nSegment==nSeg + && SQLITE_OK==(rc = sqlite3Fts3SegReaderStart(p, pCsr, pFilter)) + && SQLITE_ROW==(rc = sqlite3Fts3SegReaderStep(p, pCsr)) + ){ + int iIdx = 0; /* Largest idx in level (iAbsLevel+1) */ + rc = fts3IncrmergeOutputIdx(p, iAbsLevel, &iIdx); + if( rc==SQLITE_OK ){ + if( bUseHint && iIdx>0 ){ + const char *zKey = pCsr->zTerm; + int nKey = pCsr->nTerm; + rc = fts3IncrmergeLoad(p, iAbsLevel, iIdx-1, zKey, nKey, pWriter); + }else{ + rc = fts3IncrmergeWriter(p, iAbsLevel, iIdx, pCsr, pWriter); + } + } + + if( rc==SQLITE_OK && pWriter->nLeafEst ){ + fts3LogMerge(nSeg, iAbsLevel); + do { + rc = fts3IncrmergeAppend(p, pWriter, pCsr); + if( rc==SQLITE_OK ) rc = sqlite3Fts3SegReaderStep(p, pCsr); + if( pWriter->nWork>=nRem && rc==SQLITE_ROW ) rc = SQLITE_OK; + }while( rc==SQLITE_ROW ); + + /* Update or delete the input segments */ + if( rc==SQLITE_OK ){ + nRem -= (1 + pWriter->nWork); + rc = fts3IncrmergeChomp(p, iAbsLevel, pCsr, &nSeg); + if( nSeg!=0 ){ + bDirtyHint = 1; + fts3IncrmergeHintPush(&hint, iAbsLevel, nSeg, &rc); + } + } + } + + fts3IncrmergeRelease(p, pWriter, &rc); + } + + sqlite3Fts3SegReaderFinish(pCsr); + } + + /* Write the hint values into the %_stat table for the next incr-merger */ + if( bDirtyHint && rc==SQLITE_OK ){ + rc = fts3IncrmergeHintStore(p, &hint); + } + + sqlite3_free(pWriter); + sqlite3_free(hint.a); + return rc; +} + +/* +** Convert the text beginning at *pz into an integer and return +** its value. Advance *pz to point to the first character past +** the integer. +*/ +static int fts3Getint(const char **pz){ + const char *z = *pz; + int i = 0; + while( (*z)>='0' && (*z)<='9' ) i = 10*i + *(z++) - '0'; + *pz = z; + return i; +} + +/* +** Process statements of the form: +** +** INSERT INTO table(table) VALUES('merge=A,B'); +** +** A and B are integers that decode to be the number of leaf pages +** written for the merge, and the minimum number of segments on a level +** before it will be selected for a merge, respectively. +*/ +static int fts3DoIncrmerge( + Fts3Table *p, /* FTS3 table handle */ + const char *zParam /* Nul-terminated string containing "A,B" */ +){ + int rc; + int nMin = (FTS3_MERGE_COUNT / 2); + int nMerge = 0; + const char *z = zParam; + + /* Read the first integer value */ + nMerge = fts3Getint(&z); + + /* If the first integer value is followed by a ',', read the second + ** integer value. */ + if( z[0]==',' && z[1]!='\0' ){ + z++; + nMin = fts3Getint(&z); + } + + if( z[0]!='\0' || nMin<2 ){ + rc = SQLITE_ERROR; + }else{ + rc = SQLITE_OK; + if( !p->bHasStat ){ + assert( p->bFts4==0 ); + sqlite3Fts3CreateStatTable(&rc, p); + } + if( rc==SQLITE_OK ){ + rc = sqlite3Fts3Incrmerge(p, nMerge, nMin); + } + sqlite3Fts3SegmentsClose(p); + } + return rc; +} + +/* +** Process statements of the form: +** +** INSERT INTO table(table) VALUES('automerge=X'); +** +** where X is an integer. X==0 means to turn automerge off. X!=0 means +** turn it on. The setting is persistent. +*/ +static int fts3DoAutoincrmerge( + Fts3Table *p, /* FTS3 table handle */ + const char *zParam /* Nul-terminated string containing boolean */ +){ + int rc = SQLITE_OK; + sqlite3_stmt *pStmt = 0; + p->bAutoincrmerge = fts3Getint(&zParam)!=0; + if( !p->bHasStat ){ + assert( p->bFts4==0 ); + sqlite3Fts3CreateStatTable(&rc, p); + if( rc ) return rc; + } + rc = fts3SqlStmt(p, SQL_REPLACE_STAT, &pStmt, 0); + if( rc ) return rc;; + sqlite3_bind_int(pStmt, 1, FTS_STAT_AUTOINCRMERGE); + sqlite3_bind_int(pStmt, 2, p->bAutoincrmerge); + sqlite3_step(pStmt); + rc = sqlite3_reset(pStmt); + return rc; +} + +/* +** Return a 64-bit checksum for the FTS index entry specified by the +** arguments to this function. +*/ +static u64 fts3ChecksumEntry( + const char *zTerm, /* Pointer to buffer containing term */ + int nTerm, /* Size of zTerm in bytes */ + int iLangid, /* Language id for current row */ + int iIndex, /* Index (0..Fts3Table.nIndex-1) */ + i64 iDocid, /* Docid for current row. */ + int iCol, /* Column number */ + int iPos /* Position */ +){ + int i; + u64 ret = (u64)iDocid; + + ret += (ret<<3) + iLangid; + ret += (ret<<3) + iIndex; + ret += (ret<<3) + iCol; + ret += (ret<<3) + iPos; + for(i=0; inIndex-1) */ + int *pRc /* OUT: Return code */ +){ + Fts3SegFilter filter; + Fts3MultiSegReader csr; + int rc; + u64 cksum = 0; + + assert( *pRc==SQLITE_OK ); + + memset(&filter, 0, sizeof(filter)); + memset(&csr, 0, sizeof(csr)); + filter.flags = FTS3_SEGMENT_REQUIRE_POS|FTS3_SEGMENT_IGNORE_EMPTY; + filter.flags |= FTS3_SEGMENT_SCAN; + + rc = sqlite3Fts3SegReaderCursor( + p, iLangid, iIndex, FTS3_SEGCURSOR_ALL, 0, 0, 0, 1,&csr + ); + if( rc==SQLITE_OK ){ + rc = sqlite3Fts3SegReaderStart(p, &csr, &filter); + } + + if( rc==SQLITE_OK ){ + while( SQLITE_ROW==(rc = sqlite3Fts3SegReaderStep(p, &csr)) ){ + char *pCsr = csr.aDoclist; + char *pEnd = &pCsr[csr.nDoclist]; + + i64 iDocid = 0; + i64 iCol = 0; + i64 iPos = 0; + + pCsr += sqlite3Fts3GetVarint(pCsr, &iDocid); + while( pCsrnIndex); + while( rc==SQLITE_OK && sqlite3_step(pAllLangid)==SQLITE_ROW ){ + int iLangid = sqlite3_column_int(pAllLangid, 0); + int i; + for(i=0; inIndex; i++){ + cksum1 = cksum1 ^ fts3ChecksumIndex(p, iLangid, i, &rc); + } + } + rc2 = sqlite3_reset(pAllLangid); + if( rc==SQLITE_OK ) rc = rc2; + } + + /* This block calculates the checksum according to the %_content table */ + rc = fts3SqlStmt(p, SQL_SELECT_ALL_LANGID, &pAllLangid, 0); + if( rc==SQLITE_OK ){ + sqlite3_tokenizer_module const *pModule = p->pTokenizer->pModule; + sqlite3_stmt *pStmt = 0; + char *zSql; + + zSql = sqlite3_mprintf("SELECT %s" , p->zReadExprlist); + if( !zSql ){ + rc = SQLITE_NOMEM; + }else{ + rc = sqlite3_prepare_v2(p->db, zSql, -1, &pStmt, 0); + sqlite3_free(zSql); + } + + while( rc==SQLITE_OK && SQLITE_ROW==sqlite3_step(pStmt) ){ + i64 iDocid = sqlite3_column_int64(pStmt, 0); + int iLang = langidFromSelect(p, pStmt); + int iCol; + + for(iCol=0; rc==SQLITE_OK && iColnColumn; iCol++){ + const char *zText = (const char *)sqlite3_column_text(pStmt, iCol+1); + int nText = sqlite3_column_bytes(pStmt, iCol+1); + sqlite3_tokenizer_cursor *pT = 0; + + rc = sqlite3Fts3OpenTokenizer(p->pTokenizer, iLang, zText, nText, &pT); + while( rc==SQLITE_OK ){ + char const *zToken; /* Buffer containing token */ + int nToken = 0; /* Number of bytes in token */ + int iDum1 = 0, iDum2 = 0; /* Dummy variables */ + int iPos = 0; /* Position of token in zText */ + + rc = pModule->xNext(pT, &zToken, &nToken, &iDum1, &iDum2, &iPos); + if( rc==SQLITE_OK ){ + int i; + cksum2 = cksum2 ^ fts3ChecksumEntry( + zToken, nToken, iLang, 0, iDocid, iCol, iPos + ); + for(i=1; inIndex; i++){ + if( p->aIndex[i].nPrefix<=nToken ){ + cksum2 = cksum2 ^ fts3ChecksumEntry( + zToken, p->aIndex[i].nPrefix, iLang, i, iDocid, iCol, iPos + ); + } + } + } + } + if( pT ) pModule->xClose(pT); + if( rc==SQLITE_DONE ) rc = SQLITE_OK; + } + } + + sqlite3_finalize(pStmt); + } + + *pbOk = (cksum1==cksum2); + return rc; +} + +/* +** Run the integrity-check. If no error occurs and the current contents of +** the FTS index are correct, return SQLITE_OK. Or, if the contents of the +** FTS index are incorrect, return SQLITE_CORRUPT_VTAB. +** +** Or, if an error (e.g. an OOM or IO error) occurs, return an SQLite +** error code. +** +** The integrity-check works as follows. For each token and indexed token +** prefix in the document set, a 64-bit checksum is calculated (by code +** in fts3ChecksumEntry()) based on the following: +** +** + The index number (0 for the main index, 1 for the first prefix +** index etc.), +** + The token (or token prefix) text itself, +** + The language-id of the row it appears in, +** + The docid of the row it appears in, +** + The column it appears in, and +** + The tokens position within that column. +** +** The checksums for all entries in the index are XORed together to create +** a single checksum for the entire index. +** +** The integrity-check code calculates the same checksum in two ways: +** +** 1. By scanning the contents of the FTS index, and +** 2. By scanning and tokenizing the content table. +** +** If the two checksums are identical, the integrity-check is deemed to have +** passed. +*/ +static int fts3DoIntegrityCheck( + Fts3Table *p /* FTS3 table handle */ +){ + int rc; + int bOk = 0; + rc = fts3IntegrityCheck(p, &bOk); + if( rc==SQLITE_OK && bOk==0 ) rc = SQLITE_CORRUPT_VTAB; + return rc; +} + +/* +** Handle a 'special' INSERT of the form: +** +** "INSERT INTO tbl(tbl) VALUES()" +** +** Argument pVal contains the result of . Currently the only +** meaningful value to insert is the text 'optimize'. +*/ +static int fts3SpecialInsert(Fts3Table *p, sqlite3_value *pVal){ + int rc; /* Return Code */ + const char *zVal = (const char *)sqlite3_value_text(pVal); + int nVal = sqlite3_value_bytes(pVal); + + if( !zVal ){ + return SQLITE_NOMEM; + }else if( nVal==8 && 0==sqlite3_strnicmp(zVal, "optimize", 8) ){ + rc = fts3DoOptimize(p, 0); + }else if( nVal==7 && 0==sqlite3_strnicmp(zVal, "rebuild", 7) ){ + rc = fts3DoRebuild(p); + }else if( nVal==15 && 0==sqlite3_strnicmp(zVal, "integrity-check", 15) ){ + rc = fts3DoIntegrityCheck(p); + }else if( nVal>6 && 0==sqlite3_strnicmp(zVal, "merge=", 6) ){ + rc = fts3DoIncrmerge(p, &zVal[6]); + }else if( nVal>10 && 0==sqlite3_strnicmp(zVal, "automerge=", 10) ){ + rc = fts3DoAutoincrmerge(p, &zVal[10]); +#ifdef SQLITE_TEST + }else if( nVal>9 && 0==sqlite3_strnicmp(zVal, "nodesize=", 9) ){ + p->nNodeSize = atoi(&zVal[9]); + rc = SQLITE_OK; + }else if( nVal>11 && 0==sqlite3_strnicmp(zVal, "maxpending=", 9) ){ + p->nMaxPendingData = atoi(&zVal[11]); + rc = SQLITE_OK; +#endif + }else{ + rc = SQLITE_ERROR; + } + + return rc; +} + +#ifndef SQLITE_DISABLE_FTS4_DEFERRED +/* +** Delete all cached deferred doclists. Deferred doclists are cached +** (allocated) by the sqlite3Fts3CacheDeferredDoclists() function. +*/ +void sqlite3Fts3FreeDeferredDoclists(Fts3Cursor *pCsr){ + Fts3DeferredToken *pDef; + for(pDef=pCsr->pDeferred; pDef; pDef=pDef->pNext){ + fts3PendingListDelete(pDef->pList); + pDef->pList = 0; + } +} + +/* +** Free all entries in the pCsr->pDeffered list. Entries are added to +** this list using sqlite3Fts3DeferToken(). +*/ +void sqlite3Fts3FreeDeferredTokens(Fts3Cursor *pCsr){ + Fts3DeferredToken *pDef; + Fts3DeferredToken *pNext; + for(pDef=pCsr->pDeferred; pDef; pDef=pNext){ + pNext = pDef->pNext; + fts3PendingListDelete(pDef->pList); + sqlite3_free(pDef); + } + pCsr->pDeferred = 0; +} + +/* +** Generate deferred-doclists for all tokens in the pCsr->pDeferred list +** based on the row that pCsr currently points to. +** +** A deferred-doclist is like any other doclist with position information +** included, except that it only contains entries for a single row of the +** table, not for all rows. +*/ +int sqlite3Fts3CacheDeferredDoclists(Fts3Cursor *pCsr){ + int rc = SQLITE_OK; /* Return code */ + if( pCsr->pDeferred ){ + int i; /* Used to iterate through table columns */ + sqlite3_int64 iDocid; /* Docid of the row pCsr points to */ + Fts3DeferredToken *pDef; /* Used to iterate through deferred tokens */ + + Fts3Table *p = (Fts3Table *)pCsr->base.pVtab; + sqlite3_tokenizer *pT = p->pTokenizer; + sqlite3_tokenizer_module const *pModule = pT->pModule; + + assert( pCsr->isRequireSeek==0 ); + iDocid = sqlite3_column_int64(pCsr->pStmt, 0); + + for(i=0; inColumn && rc==SQLITE_OK; i++){ + const char *zText = (const char *)sqlite3_column_text(pCsr->pStmt, i+1); + sqlite3_tokenizer_cursor *pTC = 0; + + rc = sqlite3Fts3OpenTokenizer(pT, pCsr->iLangid, zText, -1, &pTC); + while( rc==SQLITE_OK ){ + char const *zToken; /* Buffer containing token */ + int nToken = 0; /* Number of bytes in token */ + int iDum1 = 0, iDum2 = 0; /* Dummy variables */ + int iPos = 0; /* Position of token in zText */ + + rc = pModule->xNext(pTC, &zToken, &nToken, &iDum1, &iDum2, &iPos); + for(pDef=pCsr->pDeferred; pDef && rc==SQLITE_OK; pDef=pDef->pNext){ + Fts3PhraseToken *pPT = pDef->pToken; + if( (pDef->iCol>=p->nColumn || pDef->iCol==i) + && (pPT->bFirst==0 || iPos==0) + && (pPT->n==nToken || (pPT->isPrefix && pPT->nz, pPT->n)) + ){ + fts3PendingListAppend(&pDef->pList, iDocid, i, iPos, &rc); + } + } + } + if( pTC ) pModule->xClose(pTC); + if( rc==SQLITE_DONE ) rc = SQLITE_OK; + } + + for(pDef=pCsr->pDeferred; pDef && rc==SQLITE_OK; pDef=pDef->pNext){ + if( pDef->pList ){ + rc = fts3PendingListAppendVarint(&pDef->pList, 0); + } + } + } + + return rc; +} + +int sqlite3Fts3DeferredTokenList( + Fts3DeferredToken *p, + char **ppData, + int *pnData +){ + char *pRet; + int nSkip; + sqlite3_int64 dummy; + + *ppData = 0; + *pnData = 0; + + if( p->pList==0 ){ + return SQLITE_OK; + } + + pRet = (char *)sqlite3_malloc(p->pList->nData); + if( !pRet ) return SQLITE_NOMEM; + + nSkip = sqlite3Fts3GetVarint(p->pList->aData, &dummy); + *pnData = p->pList->nData - nSkip; + *ppData = pRet; + + memcpy(pRet, &p->pList->aData[nSkip], *pnData); + return SQLITE_OK; +} + +/* +** Add an entry for token pToken to the pCsr->pDeferred list. +*/ +int sqlite3Fts3DeferToken( + Fts3Cursor *pCsr, /* Fts3 table cursor */ + Fts3PhraseToken *pToken, /* Token to defer */ + int iCol /* Column that token must appear in (or -1) */ +){ + Fts3DeferredToken *pDeferred; + pDeferred = sqlite3_malloc(sizeof(*pDeferred)); + if( !pDeferred ){ + return SQLITE_NOMEM; + } + memset(pDeferred, 0, sizeof(*pDeferred)); + pDeferred->pToken = pToken; + pDeferred->pNext = pCsr->pDeferred; + pDeferred->iCol = iCol; + pCsr->pDeferred = pDeferred; + + assert( pToken->pDeferred==0 ); + pToken->pDeferred = pDeferred; + + return SQLITE_OK; +} +#endif + +/* +** SQLite value pRowid contains the rowid of a row that may or may not be +** present in the FTS3 table. If it is, delete it and adjust the contents +** of subsiduary data structures accordingly. +*/ +static int fts3DeleteByRowid( + Fts3Table *p, + sqlite3_value *pRowid, + int *pnChng, /* IN/OUT: Decrement if row is deleted */ + u32 *aSzDel +){ + int rc = SQLITE_OK; /* Return code */ + int bFound = 0; /* True if *pRowid really is in the table */ + + fts3DeleteTerms(&rc, p, pRowid, aSzDel, &bFound); + if( bFound && rc==SQLITE_OK ){ + int isEmpty = 0; /* Deleting *pRowid leaves the table empty */ + rc = fts3IsEmpty(p, pRowid, &isEmpty); + if( rc==SQLITE_OK ){ + if( isEmpty ){ + /* Deleting this row means the whole table is empty. In this case + ** delete the contents of all three tables and throw away any + ** data in the pendingTerms hash table. */ + rc = fts3DeleteAll(p, 1); + *pnChng = 0; + memset(aSzDel, 0, sizeof(u32) * (p->nColumn+1) * 2); + }else{ + *pnChng = *pnChng - 1; + if( p->zContentTbl==0 ){ + fts3SqlExec(&rc, p, SQL_DELETE_CONTENT, &pRowid); + } + if( p->bHasDocsize ){ + fts3SqlExec(&rc, p, SQL_DELETE_DOCSIZE, &pRowid); + } + } + } + } + + return rc; +} + +/* +** This function does the work for the xUpdate method of FTS3 virtual +** tables. The schema of the virtual table being: +** +** CREATE TABLE
( +** , +**
HIDDEN, +** docid HIDDEN, +** HIDDEN +** ); +** +** +*/ +int sqlite3Fts3UpdateMethod( + sqlite3_vtab *pVtab, /* FTS3 vtab object */ + int nArg, /* Size of argument array */ + sqlite3_value **apVal, /* Array of arguments */ + sqlite_int64 *pRowid /* OUT: The affected (or effected) rowid */ +){ + Fts3Table *p = (Fts3Table *)pVtab; + int rc = SQLITE_OK; /* Return Code */ + int isRemove = 0; /* True for an UPDATE or DELETE */ + u32 *aSzIns = 0; /* Sizes of inserted documents */ + u32 *aSzDel = 0; /* Sizes of deleted documents */ + int nChng = 0; /* Net change in number of documents */ + int bInsertDone = 0; + + assert( p->pSegments==0 ); + assert( + nArg==1 /* DELETE operations */ + || nArg==(2 + p->nColumn + 3) /* INSERT or UPDATE operations */ + ); + + /* Check for a "special" INSERT operation. One of the form: + ** + ** INSERT INTO xyz(xyz) VALUES('command'); + */ + if( nArg>1 + && sqlite3_value_type(apVal[0])==SQLITE_NULL + && sqlite3_value_type(apVal[p->nColumn+2])!=SQLITE_NULL + ){ + rc = fts3SpecialInsert(p, apVal[p->nColumn+2]); + goto update_out; + } + + if( nArg>1 && sqlite3_value_int(apVal[2 + p->nColumn + 2])<0 ){ + rc = SQLITE_CONSTRAINT; + goto update_out; + } + + /* Allocate space to hold the change in document sizes */ + aSzDel = sqlite3_malloc( sizeof(aSzDel[0])*(p->nColumn+1)*2 ); + if( aSzDel==0 ){ + rc = SQLITE_NOMEM; + goto update_out; + } + aSzIns = &aSzDel[p->nColumn+1]; + memset(aSzDel, 0, sizeof(aSzDel[0])*(p->nColumn+1)*2); + + /* If this is an INSERT operation, or an UPDATE that modifies the rowid + ** value, then this operation requires constraint handling. + ** + ** If the on-conflict mode is REPLACE, this means that the existing row + ** should be deleted from the database before inserting the new row. Or, + ** if the on-conflict mode is other than REPLACE, then this method must + ** detect the conflict and return SQLITE_CONSTRAINT before beginning to + ** modify the database file. + */ + if( nArg>1 && p->zContentTbl==0 ){ + /* Find the value object that holds the new rowid value. */ + sqlite3_value *pNewRowid = apVal[3+p->nColumn]; + if( sqlite3_value_type(pNewRowid)==SQLITE_NULL ){ + pNewRowid = apVal[1]; + } + + if( sqlite3_value_type(pNewRowid)!=SQLITE_NULL && ( + sqlite3_value_type(apVal[0])==SQLITE_NULL + || sqlite3_value_int64(apVal[0])!=sqlite3_value_int64(pNewRowid) + )){ + /* The new rowid is not NULL (in this case the rowid will be + ** automatically assigned and there is no chance of a conflict), and + ** the statement is either an INSERT or an UPDATE that modifies the + ** rowid column. So if the conflict mode is REPLACE, then delete any + ** existing row with rowid=pNewRowid. + ** + ** Or, if the conflict mode is not REPLACE, insert the new record into + ** the %_content table. If we hit the duplicate rowid constraint (or any + ** other error) while doing so, return immediately. + ** + ** This branch may also run if pNewRowid contains a value that cannot + ** be losslessly converted to an integer. In this case, the eventual + ** call to fts3InsertData() (either just below or further on in this + ** function) will return SQLITE_MISMATCH. If fts3DeleteByRowid is + ** invoked, it will delete zero rows (since no row will have + ** docid=$pNewRowid if $pNewRowid is not an integer value). + */ + if( sqlite3_vtab_on_conflict(p->db)==SQLITE_REPLACE ){ + rc = fts3DeleteByRowid(p, pNewRowid, &nChng, aSzDel); + }else{ + rc = fts3InsertData(p, apVal, pRowid); + bInsertDone = 1; + } + } + } + if( rc!=SQLITE_OK ){ + goto update_out; + } + + /* If this is a DELETE or UPDATE operation, remove the old record. */ + if( sqlite3_value_type(apVal[0])!=SQLITE_NULL ){ + assert( sqlite3_value_type(apVal[0])==SQLITE_INTEGER ); + rc = fts3DeleteByRowid(p, apVal[0], &nChng, aSzDel); + isRemove = 1; + } + + /* If this is an INSERT or UPDATE operation, insert the new record. */ + if( nArg>1 && rc==SQLITE_OK ){ + int iLangid = sqlite3_value_int(apVal[2 + p->nColumn + 2]); + if( bInsertDone==0 ){ + rc = fts3InsertData(p, apVal, pRowid); + if( rc==SQLITE_CONSTRAINT && p->zContentTbl==0 ){ + rc = FTS_CORRUPT_VTAB; + } + } + if( rc==SQLITE_OK && (!isRemove || *pRowid!=p->iPrevDocid ) ){ + rc = fts3PendingTermsDocid(p, iLangid, *pRowid); + } + if( rc==SQLITE_OK ){ + assert( p->iPrevDocid==*pRowid ); + rc = fts3InsertTerms(p, iLangid, apVal, aSzIns); + } + if( p->bHasDocsize ){ + fts3InsertDocsize(&rc, p, aSzIns); + } + nChng++; + } + + if( p->bFts4 ){ + fts3UpdateDocTotals(&rc, p, aSzIns, aSzDel, nChng); + } + + update_out: + sqlite3_free(aSzDel); + sqlite3Fts3SegmentsClose(p); + return rc; +} + +/* +** Flush any data in the pending-terms hash table to disk. If successful, +** merge all segments in the database (including the new segment, if +** there was any data to flush) into a single segment. +*/ +int sqlite3Fts3Optimize(Fts3Table *p){ + int rc; + rc = sqlite3_exec(p->db, "SAVEPOINT fts3", 0, 0, 0); + if( rc==SQLITE_OK ){ + rc = fts3DoOptimize(p, 1); + if( rc==SQLITE_OK || rc==SQLITE_DONE ){ + int rc2 = sqlite3_exec(p->db, "RELEASE fts3", 0, 0, 0); + if( rc2!=SQLITE_OK ) rc = rc2; + }else{ + sqlite3_exec(p->db, "ROLLBACK TO fts3", 0, 0, 0); + sqlite3_exec(p->db, "RELEASE fts3", 0, 0, 0); + } + } + sqlite3Fts3SegmentsClose(p); + return rc; +} + +#endif diff -Nru tracker-0.15.1/src/libtracker-fts/tracker-fts-config.c tracker-0.15.2/src/libtracker-fts/tracker-fts-config.c --- tracker-0.15.1/src/libtracker-fts/tracker-fts-config.c 2012-08-07 19:05:10.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/tracker-fts-config.c 2013-02-15 09:58:12.000000000 +0000 @@ -33,7 +33,6 @@ #define GROUP_INDEXING "Indexing" /* Default values */ -#define DEFAULT_MIN_WORD_LENGTH 3 /* 0->30 */ #define DEFAULT_MAX_WORD_LENGTH 30 /* 0->200 */ #define DEFAULT_MAX_WORDS_TO_INDEX 10000 #define DEFAULT_IGNORE_NUMBERS TRUE @@ -56,7 +55,6 @@ PROP_0, /* Indexing */ - PROP_MIN_WORD_LENGTH, PROP_MAX_WORD_LENGTH, PROP_ENABLE_STEMMER, PROP_ENABLE_UNACCENT, @@ -68,7 +66,6 @@ }; static TrackerConfigMigrationEntry migration[] = { - { G_TYPE_INT, GROUP_INDEXING, "MinWordLength", "min-word-length" }, { G_TYPE_INT, GROUP_INDEXING, "MaxWordLength", "max-word-length" }, { G_TYPE_BOOLEAN, GROUP_INDEXING, "EnableStemmer" , "enable-stemmer" }, { G_TYPE_BOOLEAN, GROUP_INDEXING, "EnableUnaccent", "enable-unaccent" }, @@ -91,15 +88,6 @@ /* Indexing */ g_object_class_install_property (object_class, - PROP_MIN_WORD_LENGTH, - g_param_spec_int ("min-word-length", - "Minimum word length", - " Set the minimum length of words to index (0->30, default=3)", - 0, - 30, - DEFAULT_MIN_WORD_LENGTH, - G_PARAM_READWRITE)); - g_object_class_install_property (object_class, PROP_MAX_WORD_LENGTH, g_param_spec_int ("max-word-length", "Maximum word length", @@ -161,10 +149,6 @@ { switch (param_id) { /* Indexing */ - case PROP_MIN_WORD_LENGTH: - tracker_fts_config_set_min_word_length (TRACKER_FTS_CONFIG (object), - g_value_get_int (value)); - break; case PROP_MAX_WORD_LENGTH: tracker_fts_config_set_max_word_length (TRACKER_FTS_CONFIG (object), g_value_get_int (value)); @@ -206,9 +190,6 @@ switch (param_id) { /* Indexing */ - case PROP_MIN_WORD_LENGTH: - g_value_set_int (value, tracker_fts_config_get_min_word_length (config)); - break; case PROP_MAX_WORD_LENGTH: g_value_set_int (value, tracker_fts_config_get_max_word_length (config)); break; @@ -281,14 +262,6 @@ } gint -tracker_fts_config_get_min_word_length (TrackerFTSConfig *config) -{ - g_return_val_if_fail (TRACKER_IS_FTS_CONFIG (config), DEFAULT_MIN_WORD_LENGTH); - - return g_settings_get_int (G_SETTINGS (config), "min-word-length"); -} - -gint tracker_fts_config_get_max_word_length (TrackerFTSConfig *config) { g_return_val_if_fail (TRACKER_IS_FTS_CONFIG (config), DEFAULT_MAX_WORD_LENGTH); @@ -337,16 +310,6 @@ } void -tracker_fts_config_set_min_word_length (TrackerFTSConfig *config, - gint value) -{ - g_return_if_fail (TRACKER_IS_FTS_CONFIG (config)); - - g_settings_set_int (G_SETTINGS (config), "min-word-length", value); - g_object_notify (G_OBJECT (config), "min-word-length"); -} - -void tracker_fts_config_set_max_word_length (TrackerFTSConfig *config, gint value) { diff -Nru tracker-0.15.1/src/libtracker-fts/tracker-fts-config.h tracker-0.15.2/src/libtracker-fts/tracker-fts-config.h --- tracker-0.15.1/src/libtracker-fts/tracker-fts-config.h 2012-08-07 19:05:10.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/tracker-fts-config.h 2013-02-15 09:58:12.000000000 +0000 @@ -48,17 +48,12 @@ TrackerFTSConfig *tracker_fts_config_new (void); gboolean tracker_fts_config_save (TrackerFTSConfig *config); -gint tracker_fts_config_get_min_word_length (TrackerFTSConfig *config); gint tracker_fts_config_get_max_word_length (TrackerFTSConfig *config); gboolean tracker_fts_config_get_enable_stemmer (TrackerFTSConfig *config); gboolean tracker_fts_config_get_enable_unaccent (TrackerFTSConfig *config); gboolean tracker_fts_config_get_ignore_numbers (TrackerFTSConfig *config); gboolean tracker_fts_config_get_ignore_stop_words (TrackerFTSConfig *config); gint tracker_fts_config_get_max_words_to_index (TrackerFTSConfig *config); -void tracker_fts_config_set_min_word_length (TrackerFTSConfig *config, - gint value); -void tracker_fts_config_set_max_word_length (TrackerFTSConfig *config, - gint value); void tracker_fts_config_set_enable_stemmer (TrackerFTSConfig *config, gboolean value); void tracker_fts_config_set_enable_unaccent (TrackerFTSConfig *config, @@ -69,6 +64,8 @@ gboolean value); void tracker_fts_config_set_max_words_to_index (TrackerFTSConfig *config, gint value); +void tracker_fts_config_set_max_word_length (TrackerFTSConfig *config, + gint value); G_END_DECLS diff -Nru tracker-0.15.1/src/libtracker-fts/tracker-fts-hash.c tracker-0.15.2/src/libtracker-fts/tracker-fts-hash.c --- tracker-0.15.1/src/libtracker-fts/tracker-fts-hash.c 2012-04-19 09:16:38.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/tracker-fts-hash.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,373 +0,0 @@ -/* -** 2001 September 22 -** -** The author disclaims copyright to this source code. In place of -** a legal notice, here is a blessing: -** -** May you do good and not evil. -** May you find forgiveness for yourself and forgive others. -** May you share freely, never taking more than you give. -** -************************************************************************* -** This is the implementation of generic hash-tables used in SQLite. -** We've modified it slightly to serve as a standalone hash table -** implementation for the full-text indexing module. -*/ - -/* -** The code in this file is only compiled if: -** -** * The FTS3 module is being built as an extension -** (in which case SQLITE_CORE is not defined), or -** -** * The FTS3 module is being built into the core of -** SQLite (in which case SQLITE_ENABLE_FTS3 is defined). -*/ - -#include -#include -#include - -#include -#include "tracker-fts-hash.h" - -/* -** Malloc and Free functions -*/ -static void *fts3HashMalloc(int n){ - void *p = sqlite3_malloc(n); - if( p ){ - memset(p, 0, n); - } - return p; -} -static void fts3HashFree(void *p){ - sqlite3_free(p); -} - -/* Turn bulk memory into a hash table object by initializing the -** fields of the Hash structure. -** -** "pNew" is a pointer to the hash table that is to be initialized. -** keyClass is one of the constants -** FTS3_HASH_BINARY or FTS3_HASH_STRING. The value of keyClass -** determines what kind of key the hash table will use. "copyKey" is -** true if the hash table should make its own private copy of keys and -** false if it should just use the supplied pointer. -*/ -void sqlite3Fts3HashInit(fts3Hash *pNew, int keyClass, int copyKey){ - assert( pNew!=0 ); - assert( keyClass>=FTS3_HASH_STRING && keyClass<=FTS3_HASH_BINARY ); - pNew->keyClass = keyClass; - pNew->copyKey = copyKey; - pNew->first = 0; - pNew->count = 0; - pNew->htsize = 0; - pNew->ht = 0; -} - -/* Remove all entries from a hash table. Reclaim all memory. -** Call this routine to delete a hash table or to reset a hash table -** to the empty state. -*/ -void sqlite3Fts3HashClear(fts3Hash *pH){ - fts3HashElem *elem; /* For looping over all elements of the table */ - - assert( pH!=0 ); - elem = pH->first; - pH->first = 0; - fts3HashFree(pH->ht); - pH->ht = 0; - pH->htsize = 0; - while( elem ){ - fts3HashElem *next_elem = elem->next; - if( pH->copyKey && elem->pKey ){ - fts3HashFree(elem->pKey); - } - fts3HashFree(elem); - elem = next_elem; - } - pH->count = 0; -} - -/* -** Hash and comparison functions when the mode is FTS3_HASH_STRING -*/ -static int fts3StrHash(const void *pKey, int nKey){ - const char *z = (const char *)pKey; - int h = 0; - if( nKey<=0 ) nKey = (int) strlen(z); - while( nKey > 0 ){ - h = (h<<3) ^ h ^ *z++; - nKey--; - } - return h & 0x7fffffff; -} -static int fts3StrCompare(const void *pKey1, int n1, const void *pKey2, int n2){ - if( n1!=n2 ) return 1; - return strncmp((const char*)pKey1,(const char*)pKey2,n1); -} - -/* -** Hash and comparison functions when the mode is FTS3_HASH_BINARY -*/ -static int fts3BinHash(const void *pKey, int nKey){ - int h = 0; - const char *z = (const char *)pKey; - while( nKey-- > 0 ){ - h = (h<<3) ^ h ^ *(z++); - } - return h & 0x7fffffff; -} -static int fts3BinCompare(const void *pKey1, int n1, const void *pKey2, int n2){ - if( n1!=n2 ) return 1; - return memcmp(pKey1,pKey2,n1); -} - -/* -** Return a pointer to the appropriate hash function given the key class. -** -** The C syntax in this function definition may be unfamilar to some -** programmers, so we provide the following additional explanation: -** -** The name of the function is "ftsHashFunction". The function takes a -** single parameter "keyClass". The return value of ftsHashFunction() -** is a pointer to another function. Specifically, the return value -** of ftsHashFunction() is a pointer to a function that takes two parameters -** with types "const void*" and "int" and returns an "int". -*/ -static int (*ftsHashFunction(int keyClass))(const void*,int){ - if( keyClass==FTS3_HASH_STRING ){ - return &fts3StrHash; - }else{ - assert( keyClass==FTS3_HASH_BINARY ); - return &fts3BinHash; - } -} - -/* -** Return a pointer to the appropriate hash function given the key class. -** -** For help in interpreted the obscure C code in the function definition, -** see the header comment on the previous function. -*/ -static int (*ftsCompareFunction(int keyClass))(const void*,int,const void*,int){ - if( keyClass==FTS3_HASH_STRING ){ - return &fts3StrCompare; - }else{ - assert( keyClass==FTS3_HASH_BINARY ); - return &fts3BinCompare; - } -} - -/* Link an element into the hash table -*/ -static void fts3HashInsertElement( - fts3Hash *pH, /* The complete hash table */ - struct _fts3ht *pEntry, /* The entry into which pNew is inserted */ - fts3HashElem *pNew /* The element to be inserted */ -){ - fts3HashElem *pHead; /* First element already in pEntry */ - pHead = pEntry->chain; - if( pHead ){ - pNew->next = pHead; - pNew->prev = pHead->prev; - if( pHead->prev ){ pHead->prev->next = pNew; } - else { pH->first = pNew; } - pHead->prev = pNew; - }else{ - pNew->next = pH->first; - if( pH->first ){ pH->first->prev = pNew; } - pNew->prev = 0; - pH->first = pNew; - } - pEntry->count++; - pEntry->chain = pNew; -} - - -/* Resize the hash table so that it cantains "new_size" buckets. -** "new_size" must be a power of 2. The hash table might fail -** to resize if sqliteMalloc() fails. -*/ -static void fts3Rehash(fts3Hash *pH, int new_size){ - struct _fts3ht *new_ht; /* The new hash table */ - fts3HashElem *elem, *next_elem; /* For looping over existing elements */ - int (*xHash)(const void*,int); /* The hash function */ - - assert( (new_size & (new_size-1))==0 ); - new_ht = (struct _fts3ht *)fts3HashMalloc( new_size*sizeof(struct _fts3ht) ); - if( new_ht==0 ) return; - fts3HashFree(pH->ht); - pH->ht = new_ht; - pH->htsize = new_size; - xHash = ftsHashFunction(pH->keyClass); - for(elem=pH->first, pH->first=0; elem; elem = next_elem){ - int h = (*xHash)(elem->pKey, elem->nKey) & (new_size-1); - next_elem = elem->next; - fts3HashInsertElement(pH, &new_ht[h], elem); - } -} - -/* This function (for internal use only) locates an element in an -** hash table that matches the given key. The hash for this key has -** already been computed and is passed as the 4th parameter. -*/ -static fts3HashElem *fts3FindElementByHash( - const fts3Hash *pH, /* The pH to be searched */ - const void *pKey, /* The key we are searching for */ - int nKey, - int h /* The hash for this key. */ -){ - fts3HashElem *elem; /* Used to loop thru the element list */ - int count; /* Number of elements left to test */ - int (*xCompare)(const void*,int,const void*,int); /* comparison function */ - - if( pH->ht ){ - struct _fts3ht *pEntry = &pH->ht[h]; - elem = pEntry->chain; - count = pEntry->count; - xCompare = ftsCompareFunction(pH->keyClass); - while( count-- && elem ){ - if( (*xCompare)(elem->pKey,elem->nKey,pKey,nKey)==0 ){ - return elem; - } - elem = elem->next; - } - } - return 0; -} - -/* Remove a single entry from the hash table given a pointer to that -** element and a hash on the element's key. -*/ -static void fts3RemoveElementByHash( - fts3Hash *pH, /* The pH containing "elem" */ - fts3HashElem* elem, /* The element to be removed from the pH */ - int h /* Hash value for the element */ -){ - struct _fts3ht *pEntry; - if( elem->prev ){ - elem->prev->next = elem->next; - }else{ - pH->first = elem->next; - } - if( elem->next ){ - elem->next->prev = elem->prev; - } - pEntry = &pH->ht[h]; - if( pEntry->chain==elem ){ - pEntry->chain = elem->next; - } - pEntry->count--; - if( pEntry->count<=0 ){ - pEntry->chain = 0; - } - if( pH->copyKey && elem->pKey ){ - fts3HashFree(elem->pKey); - } - fts3HashFree( elem ); - pH->count--; - if( pH->count<=0 ){ - assert( pH->first==0 ); - assert( pH->count==0 ); - fts3HashClear(pH); - } -} - -/* Attempt to locate an element of the hash table pH with a key -** that matches pKey,nKey. Return the data for this element if it is -** found, or NULL if there is no match. -*/ -void *sqlite3Fts3HashFind(const fts3Hash *pH, const void *pKey, int nKey){ - int h; /* A hash on key */ - fts3HashElem *elem; /* The element that matches key */ - int (*xHash)(const void*,int); /* The hash function */ - - if( pH==0 || pH->ht==0 ) return 0; - xHash = ftsHashFunction(pH->keyClass); - assert( xHash!=0 ); - h = (*xHash)(pKey,nKey); - assert( (pH->htsize & (pH->htsize-1))==0 ); - elem = fts3FindElementByHash(pH,pKey,nKey, h & (pH->htsize-1)); - return elem ? elem->data : 0; -} - -/* Insert an element into the hash table pH. The key is pKey,nKey -** and the data is "data". -** -** If no element exists with a matching key, then a new -** element is created. A copy of the key is made if the copyKey -** flag is set. NULL is returned. -** -** If another element already exists with the same key, then the -** new data replaces the old data and the old data is returned. -** The key is not copied in this instance. If a malloc fails, then -** the new data is returned and the hash table is unchanged. -** -** If the "data" parameter to this function is NULL, then the -** element corresponding to "key" is removed from the hash table. -*/ -void *sqlite3Fts3HashInsert( - fts3Hash *pH, /* The hash table to insert into */ - const void *pKey, /* The key */ - int nKey, /* Number of bytes in the key */ - void *data /* The data */ -){ - int hraw; /* Raw hash value of the key */ - int h; /* the hash of the key modulo hash table size */ - fts3HashElem *elem; /* Used to loop thru the element list */ - fts3HashElem *new_elem; /* New element added to the pH */ - int (*xHash)(const void*,int); /* The hash function */ - - assert( pH!=0 ); - xHash = ftsHashFunction(pH->keyClass); - assert( xHash!=0 ); - hraw = (*xHash)(pKey, nKey); - assert( (pH->htsize & (pH->htsize-1))==0 ); - h = hraw & (pH->htsize-1); - elem = fts3FindElementByHash(pH,pKey,nKey,h); - if( elem ){ - void *old_data = elem->data; - if( data==0 ){ - fts3RemoveElementByHash(pH,elem,h); - }else{ - elem->data = data; - } - return old_data; - } - if( data==0 ) return 0; - new_elem = (fts3HashElem*)fts3HashMalloc( sizeof(fts3HashElem) ); - if( new_elem==0 ) return data; - if( pH->copyKey && pKey!=0 ){ - new_elem->pKey = fts3HashMalloc( nKey ); - if( new_elem->pKey==0 ){ - fts3HashFree(new_elem); - return data; - } - memcpy((void*)new_elem->pKey, pKey, nKey); - }else{ - new_elem->pKey = (void*)pKey; - } - new_elem->nKey = nKey; - pH->count++; - if( pH->htsize==0 ){ - fts3Rehash(pH,8); - if( pH->htsize==0 ){ - pH->count = 0; - fts3HashFree(new_elem); - return data; - } - } - if( pH->count > pH->htsize ){ - fts3Rehash(pH,pH->htsize*2); - } - assert( pH->htsize>0 ); - assert( (pH->htsize & (pH->htsize-1))==0 ); - h = hraw & (pH->htsize-1); - fts3HashInsertElement(pH, &pH->ht[h], new_elem); - new_elem->data = data; - return 0; -} - - diff -Nru tracker-0.15.1/src/libtracker-fts/tracker-fts-hash.h tracker-0.15.2/src/libtracker-fts/tracker-fts-hash.h --- tracker-0.15.1/src/libtracker-fts/tracker-fts-hash.h 2012-04-19 09:16:38.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/tracker-fts-hash.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,110 +0,0 @@ -/* -** 2001 September 22 -** -** The author disclaims copyright to this source code. In place of -** a legal notice, here is a blessing: -** -** May you do good and not evil. -** May you find forgiveness for yourself and forgive others. -** May you share freely, never taking more than you give. -** -************************************************************************* -** This is the header file for the generic hash-table implemenation -** used in SQLite. We've modified it slightly to serve as a standalone -** hash table implementation for the full-text indexing module. -** -*/ -#ifndef _FTS3_HASH_H_ -#define _FTS3_HASH_H_ - -/* Forward declarations of structures. */ -typedef struct fts3Hash fts3Hash; -typedef struct fts3HashElem fts3HashElem; - -/* A complete hash table is an instance of the following structure. -** The internals of this structure are intended to be opaque -- client -** code should not attempt to access or modify the fields of this structure -** directly. Change this structure only by using the routines below. -** However, many of the "procedures" and "functions" for modifying and -** accessing this structure are really macros, so we can't really make -** this structure opaque. -*/ -struct fts3Hash { - char keyClass; /* HASH_INT, _POINTER, _STRING, _BINARY */ - char copyKey; /* True if copy of key made on insert */ - int count; /* Number of entries in this table */ - fts3HashElem *first; /* The first element of the array */ - int htsize; /* Number of buckets in the hash table */ - struct _fts3ht { /* the hash table */ - int count; /* Number of entries with this hash */ - fts3HashElem *chain; /* Pointer to first entry with this hash */ - } *ht; -}; - -/* Each element in the hash table is an instance of the following -** structure. All elements are stored on a single doubly-linked list. -** -** Again, this structure is intended to be opaque, but it can't really -** be opaque because it is used by macros. -*/ -struct fts3HashElem { - fts3HashElem *next, *prev; /* Next and previous elements in the table */ - void *data; /* Data associated with this element */ - void *pKey; int nKey; /* Key associated with this element */ -}; - -/* -** There are 2 different modes of operation for a hash table: -** -** FTS3_HASH_STRING pKey points to a string that is nKey bytes long -** (including the null-terminator, if any). Case -** is respected in comparisons. -** -** FTS3_HASH_BINARY pKey points to binary data nKey bytes long. -** memcmp() is used to compare keys. -** -** A copy of the key is made if the copyKey parameter to fts3HashInit is 1. -*/ -#define FTS3_HASH_STRING 1 -#define FTS3_HASH_BINARY 2 - -/* -** Access routines. To delete, insert a NULL pointer. -*/ -void sqlite3Fts3HashInit(fts3Hash*, int keytype, int copyKey); -void *sqlite3Fts3HashInsert(fts3Hash*, const void *pKey, int nKey, void *pData); -void *sqlite3Fts3HashFind(const fts3Hash*, const void *pKey, int nKey); -void sqlite3Fts3HashClear(fts3Hash*); - -/* -** Shorthand for the functions above -*/ -#define fts3HashInit sqlite3Fts3HashInit -#define fts3HashInsert sqlite3Fts3HashInsert -#define fts3HashFind sqlite3Fts3HashFind -#define fts3HashClear sqlite3Fts3HashClear - -/* -** Macros for looping over all elements of a hash table. The idiom is -** like this: -** -** fts3Hash h; -** fts3HashElem *p; -** ... -** for(p=fts3HashFirst(&h); p; p=fts3HashNext(p)){ -** SomeStructure *pData = fts3HashData(p); -** // do something with pData -** } -*/ -#define fts3HashFirst(H) ((H)->first) -#define fts3HashNext(E) ((E)->next) -#define fts3HashData(E) ((E)->data) -#define fts3HashKey(E) ((E)->pKey) -#define fts3HashKeysize(E) ((E)->nKey) - -/* -** Number of entries in a hash table -*/ -#define fts3HashCount(H) ((H)->count) - -#endif /* _FTS3_HASH_H_ */ diff -Nru tracker-0.15.1/src/libtracker-fts/tracker-fts-tokenizer.c tracker-0.15.2/src/libtracker-fts/tracker-fts-tokenizer.c --- tracker-0.15.1/src/libtracker-fts/tracker-fts-tokenizer.c 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/tracker-fts-tokenizer.c 2013-02-14 19:37:03.000000000 +0000 @@ -0,0 +1,231 @@ +/* + * Copyright (C) 2011 Nokia + * + * Author: Carlos Garnacho + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA + */ + +/* FTS3/4 Tokenizer using TrackerParser */ + +#include +#include +#include "tracker-fts-tokenizer.h" +#include "tracker-fts-config.h" +#include "tracker-parser.h" +#include "fts3_tokenizer.h" + +typedef struct TrackerTokenizer TrackerTokenizer; +typedef struct TrackerCursor TrackerCursor; + +struct TrackerTokenizer { + sqlite3_tokenizer base; + TrackerLanguage *language; + int max_word_length; + int max_words; + gboolean enable_stemmer; + gboolean enable_unaccent; + gboolean ignore_numbers; + gboolean ignore_stop_words; +}; + +struct TrackerCursor { + sqlite3_tokenizer_cursor base; + + TrackerTokenizer *tokenizer; + TrackerParser *parser; + guint n_words; +}; + +/* +** Create a new tokenizer instance. +*/ +static int trackerCreate( + int argc, /* Number of entries in argv[] */ + const char * const *argv, /* Tokenizer creation arguments */ + sqlite3_tokenizer **ppTokenizer /* OUT: Created tokenizer */ +){ + TrackerTokenizer *p; + TrackerFTSConfig *config; + + p = (TrackerTokenizer *)sqlite3_malloc(sizeof(TrackerTokenizer)); + if( !p ){ + return SQLITE_NOMEM; + } + memset(p, 0, sizeof(TrackerTokenizer)); + p->language = tracker_language_new (NULL); + + config = tracker_fts_config_new (); + + p->max_word_length = tracker_fts_config_get_max_word_length (config); + p->enable_stemmer = tracker_fts_config_get_enable_stemmer (config); + p->enable_unaccent = tracker_fts_config_get_enable_unaccent (config); + p->ignore_numbers = tracker_fts_config_get_ignore_numbers (config); + + /* disable stop words if TRACKER_FTS_STOP_WORDS is set to 0 - used by tests + * otherwise, get value from the conf file */ + p->ignore_stop_words = (g_strcmp0 (g_getenv ("TRACKER_FTS_STOP_WORDS"), "0") == 0 ? + FALSE : tracker_fts_config_get_ignore_stop_words (config)); + + p->max_words = tracker_fts_config_get_max_words_to_index (config); + + g_object_unref (config); + + *ppTokenizer = (sqlite3_tokenizer *)p; + + return SQLITE_OK; +} + +/* +** Destroy a tokenizer +*/ +static int trackerDestroy(sqlite3_tokenizer *pTokenizer){ + TrackerTokenizer *p = (TrackerTokenizer *)pTokenizer; + g_object_unref (p->language); + sqlite3_free(p); + return SQLITE_OK; +} + +/* +** Prepare to begin tokenizing a particular string. The input +** string to be tokenized is pInput[0..nBytes-1]. A cursor +** used to incrementally tokenize this string is returned in +** *ppCursor. +*/ +static int trackerOpen( + sqlite3_tokenizer *pTokenizer, /* The tokenizer */ + const char *zInput, /* Input string */ + int nInput, /* Length of zInput in bytes */ + sqlite3_tokenizer_cursor **ppCursor /* OUT: Tokenization cursor */ +){ + TrackerTokenizer *p = (TrackerTokenizer *)pTokenizer; + TrackerParser *parser; + TrackerCursor *pCsr; + + if ( nInput<0 ){ + nInput = strlen(zInput); + } + + parser = tracker_parser_new (p->language); + tracker_parser_reset (parser, zInput, nInput, + p->max_word_length, + p->enable_stemmer, + p->enable_unaccent, + p->ignore_stop_words, + TRUE, + p->ignore_numbers); + + pCsr = (TrackerCursor *)sqlite3_malloc(sizeof(TrackerCursor)); + memset(pCsr, 0, sizeof(TrackerCursor)); + pCsr->tokenizer = p; + pCsr->parser = parser; + + *ppCursor = (sqlite3_tokenizer_cursor *)pCsr; + return SQLITE_OK; +} + +/* +** Close a tokenization cursor. +*/ +static int trackerClose(sqlite3_tokenizer_cursor *pCursor){ + TrackerCursor *pCsr = (TrackerCursor *)pCursor; + + tracker_parser_free (pCsr->parser); + sqlite3_free(pCsr); + return SQLITE_OK; +} + +/* +** Extract the next token from a tokenization cursor. +*/ +static int trackerNext( + sqlite3_tokenizer_cursor *pCursor, /* Cursor returned by simpleOpen */ + const char **ppToken, /* OUT: *ppToken is the token text */ + int *pnBytes, /* OUT: Number of bytes in token */ + int *piStartOffset, /* OUT: Starting offset of token */ + int *piEndOffset, /* OUT: Ending offset of token */ + int *piPosition /* OUT: Position integer of token */ +){ + TrackerCursor *cursor = (TrackerCursor *) pCursor; + TrackerTokenizer *p; + const gchar *pToken; + gboolean stop_word; + int pos, start, end, len; + + p = cursor->tokenizer; + + if (cursor->n_words > p->max_words){ + return SQLITE_DONE; + } + + do { + pToken = tracker_parser_next (cursor->parser, + &pos, + &start, &end, + &stop_word, + &len); + + if (!pToken){ + return SQLITE_DONE; + } + } while (stop_word && p->ignore_stop_words); + + *ppToken = pToken; + *piStartOffset = start; + *piEndOffset = end; + *piPosition = pos; + *pnBytes = len; + + cursor->n_words++; + + return SQLITE_OK; +} + +/* +** The set of routines that implement the simple tokenizer +*/ +static const sqlite3_tokenizer_module trackerTokenizerModule = { + 0, /* iVersion */ + trackerCreate, /* xCreate */ + trackerDestroy, /* xDestroy */ + trackerOpen, /* xOpen */ + trackerClose, /* xClose */ + trackerNext, /* xNext */ +}; + +/* +** Set *ppModule to point at the implementation of the tracker tokenizer. +*/ +gboolean tracker_tokenizer_initialize (sqlite3 *db) { + const sqlite3_tokenizer_module *pTokenizer; + int rc = SQLITE_OK; + sqlite3_stmt *stmt; + + pTokenizer = &trackerTokenizerModule; + rc = sqlite3_prepare_v2(db, "SELECT fts3_tokenizer(?, ?)", + -1, &stmt, 0); + + if (rc != SQLITE_OK) { + return FALSE; + } + + sqlite3_bind_text(stmt, 1, "TrackerTokenizer", -1, SQLITE_STATIC); + sqlite3_bind_blob(stmt, 2, &pTokenizer, sizeof(pTokenizer), SQLITE_STATIC); + sqlite3_step(stmt); + rc = sqlite3_finalize(stmt); + + return (rc == SQLITE_OK); +} diff -Nru tracker-0.15.1/src/libtracker-fts/tracker-fts-tokenizer.h tracker-0.15.2/src/libtracker-fts/tracker-fts-tokenizer.h --- tracker-0.15.1/src/libtracker-fts/tracker-fts-tokenizer.h 1970-01-01 00:00:00.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/tracker-fts-tokenizer.h 2013-02-14 19:30:47.000000000 +0000 @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2011 Nokia + * + * Author: Carlos Garnacho + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA + */ + +#include +#include +#include "fts3_tokenizer.h" + +#ifndef __TRACKER_FTS_TOKENIZER_H__ +#define __TRACKER_FTS_TOKENIZER_H__ + +gboolean tracker_tokenizer_initialize (sqlite3 *db); + +#endif /* __TRACKER_FTS_TOKENIZER_H__ */ diff -Nru tracker-0.15.1/src/libtracker-fts/tracker-fts.c tracker-0.15.2/src/libtracker-fts/tracker-fts.c --- tracker-0.15.1/src/libtracker-fts/tracker-fts.c 2012-04-19 09:16:38.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/tracker-fts.c 2013-02-14 19:30:47.000000000 +0000 @@ -1,7974 +1,357 @@ /* -** 2006 Oct 10 -** -** The author disclaims copyright to this source code. In place of -** a legal notice, here is a blessing: -** -** May you do good and not evil. -** May you find forgiveness for yourself and forgive others. -** May you share freely, never taking more than you give. -** -****************************************************************************** -** -** This is an SQLite module implementing full-text search. -*/ + * Copyright (C) 2011 Nokia + * + * Author: Carlos Garnacho + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA + */ -/* -** The code in this file is only compiled if: -** -** * The FTS3 module is being built as an extension -** (in which case SQLITE_CORE is not defined), or -** -** * The FTS3 module is being built into the core of -** SQLite (in which case SQLITE_ENABLE_FTS3 is defined). -*/ - -/* TODO(shess) Consider exporting this comment to an HTML file or the -** wiki. -*/ -/* The full-text index is stored in a series of b+tree (-like) -** structures called segments which map terms to doclists. The -** structures are like b+trees in layout, but are constructed from the -** bottom up in optimal fashion and are not updatable. Since trees -** are built from the bottom up, things will be described from the -** bottom up. -** -** -**** Varints **** -** The basic unit of encoding is a variable-length integer called a -** varint. We encode variable-length integers in little-endian order -** using seven bits * per byte as follows: -** -** KEY: -** A = 0xxxxxxx 7 bits of data and one flag bit -** B = 1xxxxxxx 7 bits of data and one flag bit -** -** 7 bits - A -** 14 bits - BA -** 21 bits - BBA -** and so on. -** -** This is identical to how sqlite encodes varints (see util.c). -** -** -**** Document lists **** -** A doclist (document list) holds a docid-sorted list of hits for a -** given term. Doclists hold docids, and can optionally associate -** token positions and offsets with docids. -** -** A DL_POSITIONS_OFFSETS doclist is stored like this: -** -** array { -** varint docid; -** array { (position list for column 0) -** varint position; (delta from previous position plus POS_BASE) -** varint startOffset; (delta from previous startOffset) -** varint endOffset; (delta from startOffset) -** } -** array { -** varint POS_COLUMN; (marks start of position list for new column) -** varint column; (index of new column) -** array { -** varint position; (delta from previous position plus POS_BASE) -** varint startOffset;(delta from previous startOffset) -** varint endOffset; (delta from startOffset) -** } -** } -** varint POS_END; (marks end of positions for this document. -** } -** -** Here, array { X } means zero or more occurrences of X, adjacent in -** memory. A "position" is an index of a token in the token stream -** generated by the tokenizer, while an "offset" is a byte offset, -** both based at 0. Note that POS_END and POS_COLUMN occur in the -** same logical place as the position element, and act as sentinals -** ending a position list array. -** -** A DL_POSITIONS doclist omits the startOffset and endOffset -** information. A DL_DOCIDS doclist omits both the position and -** offset information, becoming an array of varint-encoded docids. -** -** On-disk data is stored as type DL_DEFAULT, so we don't serialize -** the type. Due to how deletion is implemented in the segmentation -** system, on-disk doclists MUST store at least positions. -** -** -**** Segment leaf nodes **** -** Segment leaf nodes store terms and doclists, ordered by term. Leaf -** nodes are written using LeafWriter, and read using LeafReader (to -** iterate through a single leaf node's data) and LeavesReader (to -** iterate through a segment's entire leaf layer). Leaf nodes have -** the format: -** -** varint iHeight; (height from leaf level, always 0) -** varint nTerm; (length of first term) -** char pTerm[nTerm]; (content of first term) -** varint nDoclist; (length of term's associated doclist) -** char pDoclist[nDoclist]; (content of doclist) -** array { -** (further terms are delta-encoded) -** varint nPrefix; (length of prefix shared with previous term) -** varint nSuffix; (length of unshared suffix) -** char pTermSuffix[nSuffix];(unshared suffix of next term) -** varint nDoclist; (length of term's associated doclist) -** char pDoclist[nDoclist]; (content of doclist) -** } -** -** Here, array { X } means zero or more occurrences of X, adjacent in -** memory. -** -** Leaf nodes are broken into blocks which are stored contiguously in -** the %_segments table in sorted order. This means that when the end -** of a node is reached, the next term is in the node with the next -** greater node id. -** -** New data is spilled to a new leaf node when the current node -** exceeds LEAF_MAX bytes (default 2048). New data which itself is -** larger than STANDALONE_MIN (default 1024) is placed in a standalone -** node (a leaf node with a single term and doclist). The goal of -** these settings is to pack together groups of small doclists while -** making it efficient to directly access large doclists. The -** assumption is that large doclists represent terms which are more -** likely to be query targets. -** -** TODO(shess) It may be useful for blocking decisions to be more -** dynamic. For instance, it may make more sense to have a 2.5k leaf -** node rather than splitting into 2k and .5k nodes. My intuition is -** that this might extend through 2x or 4x the pagesize. -** -** -**** Segment interior nodes **** -** Segment interior nodes store blockids for subtree nodes and terms -** to describe what data is stored by the each subtree. Interior -** nodes are written using InteriorWriter, and read using -** InteriorReader. InteriorWriters are created as needed when -** SegmentWriter creates new leaf nodes, or when an interior node -** itself grows too big and must be split. The format of interior -** nodes: -** -** varint iHeight; (height from leaf level, always >0) -** varint iBlockid; (block id of node's leftmost subtree) -** optional { -** varint nTerm; (length of first term) -** char pTerm[nTerm]; (content of first term) -** array { -** (further terms are delta-encoded) -** varint nPrefix; (length of shared prefix with previous term) -** varint nSuffix; (length of unshared suffix) -** char pTermSuffix[nSuffix]; (unshared suffix of next term) -** } -** } -** -** Here, optional { X } means an optional element, while array { X } -** means zero or more occurrences of X, adjacent in memory. -** -** An interior node encodes n terms separating n+1 subtrees. The -** subtree blocks are contiguous, so only the first subtree's blockid -** is encoded. The subtree at iBlockid will contain all terms less -** than the first term encoded (or all terms if no term is encoded). -** Otherwise, for terms greater than or equal to pTerm[i] but less -** than pTerm[i+1], the subtree for that term will be rooted at -** iBlockid+i. Interior nodes only store enough term data to -** distinguish adjacent children (if the rightmost term of the left -** child is "something", and the leftmost term of the right child is -** "wicked", only "w" is stored). -** -** New data is spilled to a new interior node at the same height when -** the current node exceeds INTERIOR_MAX bytes (default 2048). -** INTERIOR_MIN_TERMS (default 7) keeps large terms from monopolizing -** interior nodes and making the tree too skinny. The interior nodes -** at a given height are naturally tracked by interior nodes at -** height+1, and so on. -** -** -**** Segment directory **** -** The segment directory in table %_segdir stores meta-information for -** merging and deleting segments, and also the root node of the -** segment's tree. -** -** The root node is the top node of the segment's tree after encoding -** the entire segment, restricted to ROOT_MAX bytes (default 1024). -** This could be either a leaf node or an interior node. If the top -** node requires more than ROOT_MAX bytes, it is flushed to %_segments -** and a new root interior node is generated (which should always fit -** within ROOT_MAX because it only needs space for 2 varints, the -** height and the blockid of the previous root). -** -** The meta-information in the segment directory is: -** level - segment level (see below) -** idx - index within level -** - (level,idx uniquely identify a segment) -** start_block - first leaf node -** leaves_end_block - last leaf node -** end_block - last block (including interior nodes) -** root - contents of root node -** -** If the root node is a leaf node, then start_block, -** leaves_end_block, and end_block are all 0. -** -** -**** Segment merging **** -** To amortize update costs, segments are grouped into levels and -** merged in batches. Each increase in level represents exponentially -** more documents. -** -** New documents (actually, document updates) are tokenized and -** written individually (using LeafWriter) to a level 0 segment, with -** incrementing idx. When idx reaches MERGE_COUNT (default 16), all -** level 0 segments are merged into a single level 1 segment. Level 1 -** is populated like level 0, and eventually MERGE_COUNT level 1 -** segments are merged to a single level 2 segment (representing -** MERGE_COUNT^2 updates), and so on. -** -** A segment merge traverses all segments at a given level in -** parallel, performing a straightforward sorted merge. Since segment -** leaf nodes are written in to the %_segments table in order, this -** merge traverses the underlying sqlite disk structures efficiently. -** After the merge, all segment blocks from the merged level are -** deleted. -** -** MERGE_COUNT controls how often we merge segments. 16 seems to be -** somewhat of a sweet spot for insertion performance. 32 and 64 show -** very similar performance numbers to 16 on insertion, though they're -** a tiny bit slower (perhaps due to more overhead in merge-time -** sorting). 8 is about 20% slower than 16, 4 about 50% slower than -** 16, 2 about 66% slower than 16. -** -** At query time, high MERGE_COUNT increases the number of segments -** which need to be scanned and merged. For instance, with 100k docs -** inserted: -** -** MERGE_COUNT segments -** 16 25 -** 8 12 -** 4 10 -** 2 6 -** -** This appears to have only a moderate impact on queries for very -** frequent terms (which are somewhat dominated by segment merge -** costs), and infrequent and non-existent terms still seem to be fast -** even with many segments. -** -** TODO(shess) That said, it would be nice to have a better query-side -** argument for MERGE_COUNT of 16. Also, it is possible/likely that -** optimizations to things like doclist merging will swing the sweet -** spot around. -** -** -** -**** Handling of deletions and updates **** -** Since we're using a segmented structure, with no docid-oriented -** index into the term index, we clearly cannot simply update the term -** index when a document is deleted or updated. For deletions, we -** write an empty doclist (varint(docid) varint(POS_END)), for updates -** we simply write the new doclist. Segment merges overwrite older -** data for a particular docid with newer data, so deletes or updates -** will eventually overtake the earlier data and knock it out. The -** query logic likewise merges doclists so that newer data knocks out -** older data. -** -** TODO(shess) Provide a VACUUM type operation to clear out all -** deletions and duplications. This would basically be a forced merge -** into a single segment. -*/ - -#include -#include -#include -#include -#include +#include "config.h" #include - -#include -#include - +#include "tracker-fts-tokenizer.h" #include "tracker-fts.h" -#include "tracker-fts-config.h" -#include "tracker-fts-hash.h" -#include "tracker-parser.h" - -/* TODO(shess) MAN, this thing needs some refactoring. At minimum, it -** would be nice to order the file better, perhaps something along the -** lines of: -** -** - utility functions -** - table setup functions -** - table update functions -** - table query functions -** -** Put the query functions last because they're likely to reference -** typedefs or functions from the table update section. -*/ - -#if 0 -# define FTSTRACE(A) printf A; fflush(stdout) -#else -# define FTSTRACE(A) -#endif - -#if 0 -static int default_column = 0; -#endif - - -/* Define to 1 if you want to get debug logs with the parsed query, - * quite useful to understand the FTS syntax */ -#define PRINT_PARSED_QUERY 0 - -/* - * ** Default span for NEAR operators. - * */ -#define SQLITE_FTS3_DEFAULT_NEAR_PARAM 10 - -/* It is not safe to call isspace(), tolower(), or isalnum() on -** hi-bit-set characters. This is the same solution used in the -** tokenizer. -*/ -/* TODO(shess) The snippet-generation code should be using the -** tokenizer-generated tokens rather than doing its own local -** tokenization. -*/ -/* TODO(shess) Is __isascii() a portable version of (c&0x80)==0? */ -static int safe_isspace(char c){ - return (c&0x80)==0 ? isspace(c) : 0; -} -#if 0 -static int safe_tolower(char c){ - return (c&0x80)==0 ? tolower(c) : c; -} -static int safe_isalnum(char c){ - return (c&0x80)==0 ? isalnum(c) : 0; -} -#endif - - -typedef enum DocListType { - - DL_DOCIDS, /* docids only */ - DL_POSITIONS, /* docids + positions */ - DL_POSITIONS_RANK, /* docids + catid + rank + positions */ - DL_POSITIONS_OFFSETS /* docids + positions + offsets */ -} DocListType; - -/* -** By default, only positions and not offsets are stored in the doclists. -** To change this so that offsets are stored too, compile with -** -** -DDL_DEFAULT=DL_POSITIONS_OFFSETS -** -** If DL_DEFAULT is set to DL_DOCIDS, your table can only be inserted -** into (no deletes or updates). -*/ -#ifndef DL_DEFAULT -# define DL_DEFAULT DL_POSITIONS -#endif - -#define RANK - -enum { - POS_END = 0, /* end of this position list */ - POS_COLUMN, /* followed by new column number */ - POS_BASE -}; - -/* MERGE_COUNT controls how often we merge segments (see comment at -** top of file). -*/ -#define MERGE_COUNT 16 - -/* utility functions */ - -/* CLEAR() and SCRAMBLE() abstract memset() on a pointer to a single -** record to prevent errors of the form: -** -** my_function(SomeType *b){ -** memset(b, '\0', sizeof(b)); // sizeof(b)!=sizeof(*b) -** } -*/ -/* TODO(shess) Obvious candidates for a header file. */ -#define CLEAR(b) memset(b, '\0', sizeof(*(b))) - -#ifndef NDEBUG -# define SCRAMBLE(b) memset(b, 0x55, sizeof(*(b))) -#else -# define SCRAMBLE(b) -#endif - -/* We may need up to VARINT_MAX bytes to store an encoded 64-bit integer. */ -#define VARINT_MAX 10 - -/* Write a 64-bit variable-length integer to memory starting at p[0]. - * The length of data written will be between 1 and VARINT_MAX bytes. - * The number of bytes written is returned. */ -static int fts3PutVarint(char *p, sqlite_int64 v){ - unsigned char *q = (unsigned char *) p; - sqlite_uint64 vu = v; - do{ - *q++ = (unsigned char) ((vu & 0x7f) | 0x80); - vu >>= 7; - }while( vu!=0 ); - q[-1] &= 0x7f; /* turn off high bit in final byte */ - assert( q - (unsigned char *)p <= VARINT_MAX ); - return (int) (q - (unsigned char *)p); -} - -/* Read a 64-bit variable-length integer from memory starting at p[0]. - * Return the number of bytes read, or 0 on error. - * The value is stored in *v. */ -static int fts3GetVarint(const char *p, sqlite_int64 *v){ - const unsigned char *q = (const unsigned char *) p; - sqlite_uint64 x = 0, y = 1; - while( (*q & 0x80) == 0x80 ){ - x += y * (*q++ & 0x7f); - y <<= 7; - if( q - (unsigned char *)p >= VARINT_MAX ){ /* bad data */ - assert( 0 ); - return 0; - } - } - x += y * (*q++); - *v = (sqlite_int64) x; - return (int) (q - (unsigned char *)p); -} - -static int fts3GetVarint32(const char *p, int *pi){ - sqlite_int64 i = 0; - int ret = fts3GetVarint(p, &i); - *pi = (int) i; - assert( *pi==i ); - return ret; -} - -/*******************************************************************/ -/* DataBuffer is used to collect data into a buffer in piecemeal -** fashion. It implements the usual distinction between amount of -** data currently stored (nData) and buffer capacity (nCapacity). -** -** dataBufferInit - create a buffer with given initial capacity. -** dataBufferReset - forget buffer's data, retaining capacity. -** dataBufferDestroy - free buffer's data. -** dataBufferSwap - swap contents of two buffers. -** dataBufferExpand - expand capacity without adding data. -** dataBufferAppend - append data. -** dataBufferAppend2 - append two pieces of data at once. -** dataBufferReplace - replace buffer's data. -*/ -typedef struct DataBuffer { - char *pData; /* Pointer to malloc'ed buffer. */ - int nCapacity; /* Size of pData buffer. */ - int nData; /* End of data loaded into pData. */ -} DataBuffer; - -static void dataBufferInit(DataBuffer *pBuffer, int nCapacity){ - assert( nCapacity>=0 ); - pBuffer->nData = 0; - pBuffer->nCapacity = nCapacity; - pBuffer->pData = nCapacity==0 ? NULL : sqlite3_malloc(nCapacity); -} -static void dataBufferReset(DataBuffer *pBuffer){ - pBuffer->nData = 0; -} -static void dataBufferDestroy(DataBuffer *pBuffer){ - if( pBuffer->pData!=NULL ) sqlite3_free(pBuffer->pData); - SCRAMBLE(pBuffer); -} -static void dataBufferSwap(DataBuffer *pBuffer1, DataBuffer *pBuffer2){ - DataBuffer tmp = *pBuffer1; - *pBuffer1 = *pBuffer2; - *pBuffer2 = tmp; -} -static void dataBufferExpand(DataBuffer *pBuffer, int nAddCapacity){ - assert( nAddCapacity>0 ); - /* TODO(shess) Consider expanding more aggressively. Note that the - ** underlying malloc implementation may take care of such things for - ** us already. - */ - if( pBuffer->nData+nAddCapacity>pBuffer->nCapacity ){ - pBuffer->nCapacity = pBuffer->nData+nAddCapacity; - pBuffer->pData = sqlite3_realloc(pBuffer->pData, pBuffer->nCapacity); - } -} -static void dataBufferAppend(DataBuffer *pBuffer, - const char *pSource, int nSource){ - assert( nSource>0 && pSource!=NULL ); - dataBufferExpand(pBuffer, nSource); - memcpy(pBuffer->pData+pBuffer->nData, pSource, nSource); - pBuffer->nData += nSource; -} -static void dataBufferAppend2(DataBuffer *pBuffer, - const char *pSource1, int nSource1, - const char *pSource2, int nSource2){ - assert( nSource1>0 && pSource1!=NULL ); - assert( nSource2>0 && pSource2!=NULL ); - dataBufferExpand(pBuffer, nSource1+nSource2); - memcpy(pBuffer->pData+pBuffer->nData, pSource1, nSource1); - memcpy(pBuffer->pData+pBuffer->nData+nSource1, pSource2, nSource2); - pBuffer->nData += nSource1+nSource2; -} -static void dataBufferReplace(DataBuffer *pBuffer, - const char *pSource, int nSource){ - dataBufferReset(pBuffer); - dataBufferAppend(pBuffer, pSource, nSource); -} - -/* StringBuffer is a null-terminated version of DataBuffer. */ -typedef struct StringBuffer { - DataBuffer b; /* Includes null terminator. */ -} StringBuffer; - -static void initStringBuffer(StringBuffer *sb){ - dataBufferInit(&sb->b, 100); - dataBufferReplace(&sb->b, "", 1); -} -static int stringBufferLength(StringBuffer *sb){ - return sb->b.nData-1; -} -static char *stringBufferData(StringBuffer *sb){ - return sb->b.pData; -} -static void stringBufferDestroy(StringBuffer *sb){ - dataBufferDestroy(&sb->b); -} - -static void nappend(StringBuffer *sb, const char *zFrom, int nFrom){ - assert( sb->b.nData>0 ); - if( nFrom>0 ){ - sb->b.nData--; - dataBufferAppend2(&sb->b, zFrom, nFrom, "", 1); - } -} -static void append(StringBuffer *sb, const char *zFrom){ - nappend(sb, zFrom, strlen(zFrom)); -} - -#if 0 -/* Append a list of strings separated by commas. */ -static void appendList(StringBuffer *sb, int nString, char **azString){ - int i; - for(i=0; i0 ) append(sb, ", "); - append(sb, azString[i]); - } -} -#endif - -static int endsInWhiteSpace(StringBuffer *p){ - return stringBufferLength(p)>0 && - safe_isspace(stringBufferData(p)[stringBufferLength(p)-1]); -} - -/* If the StringBuffer ends in something other than white space, add a -** single space character to the end. -*/ -static void appendWhiteSpace(StringBuffer *p){ - if( stringBufferLength(p)==0 ) return; - if( !endsInWhiteSpace(p) ) append(p, " "); -} - -/* Remove white space from the end of the StringBuffer */ -static void trimWhiteSpace(StringBuffer *p){ - while( endsInWhiteSpace(p) ){ - p->b.pData[--p->b.nData-1] = '\0'; - } -} - -/*******************************************************************/ -/* DLReader is used to read document elements from a doclist. The -** current docid is cached, so dlrDocid() is fast. DLReader does not -** own the doclist buffer. -** -** dlrAtEnd - true if there's no more data to read. -** dlrDocid - docid of current document. -** dlrDocData - doclist data for current document (including docid). -** dlrDocDataBytes - length of same. -** dlrAllDataBytes - length of all remaining data. -** dlrPosData - position data for current document. -** dlrPosDataLen - length of pos data for current document (incl POS_END). -** dlrStep - step to current document. -** dlrInit - initial for doclist of given type against given data. -** dlrDestroy - clean up. -** -** Expected usage is something like: -** -** DLReader reader; -** dlrInit(&reader, pData, nData); -** while( !dlrAtEnd(&reader) ){ -** // calls to dlrDocid() and kin. -** dlrStep(&reader); -** } -** dlrDestroy(&reader); -*/ -typedef struct DLReader { - DocListType iType; - const char *pData; - int nData; - sqlite_int64 iDocid; - -#ifdef STORE_CATEGORY - int Catid; -#endif - - - int nElement; -} DLReader; - -static int dlrAtEnd(DLReader *pReader){ - assert( pReader->nData>=0 ); - return pReader->nData==0; -} -static sqlite_int64 dlrDocid(DLReader *pReader){ - assert( !dlrAtEnd(pReader) ); - return pReader->iDocid; -} - -#ifdef STORE_CATEGORY -static int dlrCatid(DLReader *pReader){ - //assert( !dlrAtEnd(pReader) ); - return pReader->Catid; -} -#endif - -static const char *dlrDocData(DLReader *pReader){ - assert( !dlrAtEnd(pReader) ); - return pReader->pData; -} -static int dlrDocDataBytes(DLReader *pReader){ - assert( !dlrAtEnd(pReader) ); - return pReader->nElement; -} -static int dlrAllDataBytes(DLReader *pReader){ - assert( !dlrAtEnd(pReader) ); - return pReader->nData; -} -/* TODO(shess) Consider adding a field to track iDocid varint length -** to make these two functions faster. This might matter (a tiny bit) -** for queries. -*/ -static const char *dlrPosData(DLReader *pReader){ - sqlite_int64 iDummy; - int n = fts3GetVarint(pReader->pData, &iDummy); - -#ifdef STORE_CATEGORY - int Catid; - n += fts3GetVarint32(pReader->pData+n, &Catid); -#endif - - assert( !dlrAtEnd(pReader) ); - return pReader->pData+n; -} -static int dlrPosDataLen(DLReader *pReader){ - sqlite_int64 iDummy; - int n = fts3GetVarint(pReader->pData, &iDummy); - -#ifdef STORE_CATEGORY - int Catid; - n += fts3GetVarint32(pReader->pData+n, &Catid); -#endif - - assert( !dlrAtEnd(pReader) ); - return pReader->nElement-n; -} -static void dlrStep(DLReader *pReader){ - assert( !dlrAtEnd(pReader) ); - - /* Skip past current doclist element. */ - assert( pReader->nElement<=pReader->nData ); - pReader->pData += pReader->nElement; - pReader->nData -= pReader->nElement; - - /* If there is more data, read the next doclist element. */ - if( pReader->nData!=0 ){ - sqlite_int64 iDocidDelta = 0; - - int iDummy, n = fts3GetVarint(pReader->pData, &iDocidDelta); - pReader->iDocid += iDocidDelta; - -#ifdef STORE_CATEGORY - int Catid; - n += fts3GetVarint32(pReader->pData+n, &Catid); - pReader->Catid = Catid; -#endif - - if( pReader->iType>=DL_POSITIONS ){ - assert( nnData ); - while( 1 ){ - n += fts3GetVarint32(pReader->pData+n, &iDummy); - assert( n<=pReader->nData ); - if( iDummy==POS_END ) break; - if( iDummy==POS_COLUMN ){ - n += fts3GetVarint32(pReader->pData+n, &iDummy); - assert( nnData ); - }else if( pReader->iType==DL_POSITIONS_OFFSETS ){ - n += fts3GetVarint32(pReader->pData+n, &iDummy); - n += fts3GetVarint32(pReader->pData+n, &iDummy); - assert( nnData ); - } - } - } - pReader->nElement = n; - assert( pReader->nElement<=pReader->nData ); - } -} -static void dlrInit(DLReader *pReader, DocListType iType, - const char *pData, int nData){ - assert( pData!=NULL && nData!=0 ); - pReader->iType = iType; - pReader->pData = pData; - pReader->nData = nData; - pReader->nElement = 0; - pReader->iDocid = 0; - -#ifdef STORE_CATEGORY - pReader->Catid = 0; -#endif - - /* Load the first element's data. There must be a first element. */ - dlrStep(pReader); -} -static void dlrDestroy(DLReader *pReader){ - SCRAMBLE(pReader); -} - -#ifndef NDEBUG -/* Verify that the doclist can be validly decoded. Also returns the -** last docid found because it is convenient in other assertions for -** DLWriter. -*/ -static void docListValidate(DocListType iType, const char *pData, int nData, - sqlite_int64 *pLastDocid){ - sqlite_int64 iPrevDocid = 0; - assert( nData>0 ); - assert( pData!=0 ); - assert( pData+nData>pData ); - while( nData!=0 ){ - sqlite_int64 iDocidDelta; - int n = fts3GetVarint(pData, &iDocidDelta); - iPrevDocid += iDocidDelta; - -#ifdef STORE_CATEGORY - int Catid; - n += fts3GetVarint32(pData+n, &Catid); -#endif - - if( iType>DL_DOCIDS ){ - int iDummy; - while( 1 ){ - n += fts3GetVarint32(pData+n, &iDummy); - if( iDummy==POS_END ) break; - if( iDummy==POS_COLUMN ){ - n += fts3GetVarint32(pData+n, &iDummy); - }else if( iType>DL_POSITIONS ){ - n += fts3GetVarint32(pData+n, &iDummy); - n += fts3GetVarint32(pData+n, &iDummy); - } - assert( n<=nData ); - } - } - assert( n<=nData ); - pData += n; - nData -= n; - } - if( pLastDocid ) *pLastDocid = iPrevDocid; -} -#define ASSERT_VALID_DOCLIST(i, p, n, o) docListValidate(i, p, n, o) -#else -#define ASSERT_VALID_DOCLIST(i, p, n, o) assert( 1 ) -#endif - -/*******************************************************************/ -/* DLWriter is used to write doclist data to a DataBuffer. DLWriter -** always appends to the buffer and does not own it. -** -** dlwInit - initialize to write a given type doclistto a buffer. -** dlwDestroy - clear the writer's memory. Does not free buffer. -** dlwAppend - append raw doclist data to buffer. -** dlwCopy - copy next doclist from reader to writer. -** dlwAdd - construct doclist element and append to buffer. -** Only apply dlwAdd() to DL_DOCIDS doclists (else use PLWriter). -*/ -typedef struct DLWriter { - DocListType iType; - DataBuffer *b; - sqlite_int64 iPrevDocid; -#ifndef NDEBUG - int has_iPrevDocid; -#endif -} DLWriter; - -static void dlwInit(DLWriter *pWriter, DocListType iType, DataBuffer *b){ - pWriter->b = b; - pWriter->iType = iType; - pWriter->iPrevDocid = 0; -#ifndef NDEBUG - pWriter->has_iPrevDocid = 0; -#endif -} -static void dlwDestroy(DLWriter *pWriter){ - SCRAMBLE(pWriter); -} -/* iFirstDocid is the first docid in the doclist in pData. It is -** needed because pData may point within a larger doclist, in which -** case the first item would be delta-encoded. -** -** iLastDocid is the final docid in the doclist in pData. It is -** needed to create the new iPrevDocid for future delta-encoding. The -** code could decode the passed doclist to recreate iLastDocid, but -** the only current user (docListMerge) already has decoded this -** information. -*/ -/* TODO(shess) This has become just a helper for docListMerge. -** Consider a refactor to make this cleaner. -*/ -static void dlwAppend(DLWriter *pWriter, - const char *pData, int nData, - sqlite_int64 iFirstDocid, sqlite_int64 iLastDocid){ - sqlite_int64 iDocid = 0; - char c[VARINT_MAX]; - int nFirstOld, nFirstNew; /* Old and new varint len of first docid. */ -#ifndef NDEBUG - sqlite_int64 iLastDocidDelta; -#endif - - /* Recode the initial docid as delta from iPrevDocid. */ - nFirstOld = fts3GetVarint(pData, &iDocid); - assert( nFirstOldiType==DL_DOCIDS) ); - nFirstNew = fts3PutVarint(c, iFirstDocid-pWriter->iPrevDocid); - - /* Verify that the incoming doclist is valid AND that it ends with - ** the expected docid. This is essential because we'll trust this - ** docid in future delta-encoding. - */ - ASSERT_VALID_DOCLIST(pWriter->iType, pData, nData, &iLastDocidDelta); - assert( iLastDocid==iFirstDocid-iDocid+iLastDocidDelta ); - - /* Append recoded initial docid and everything else. Rest of docids - ** should have been delta-encoded from previous initial docid. - */ - if( nFirstOldb, c, nFirstNew, - pData+nFirstOld, nData-nFirstOld); - }else{ - dataBufferAppend(pWriter->b, c, nFirstNew); - } - pWriter->iPrevDocid = iLastDocid; -} -static void dlwCopy(DLWriter *pWriter, DLReader *pReader){ - dlwAppend(pWriter, dlrDocData(pReader), dlrDocDataBytes(pReader), - dlrDocid(pReader), dlrDocid(pReader)); -} - - -#ifndef RANK -#ifdef STORE_CATEGORY -static void dlwAdd(DLWriter *pWriter, sqlite_int64 iDocid, int Catid){ - char c[VARINT_MAX]; - int n = fts3PutVarint(c, iDocid-pWriter->iPrevDocid); - - /* Docids must ascend. */ - assert( !pWriter->has_iPrevDocid || iDocid>pWriter->iPrevDocid ); - assert( pWriter->iType==DL_DOCIDS ); - - dataBufferAppend(pWriter->b, c, n); - pWriter->iPrevDocid = iDocid; - - n = fts3PutVarint(c, Catid); - dataBufferAppend(pWriter->b, c, n); - -#ifndef NDEBUG - pWriter->has_iPrevDocid = 1; -#endif -} -#else - -static void dlwAdd(DLWriter *pWriter, sqlite_int64 iDocid){ - char c[VARINT_MAX]; - int n = fts3PutVarint(c, iDocid-pWriter->iPrevDocid); - - /* Docids must ascend. */ - assert( !pWriter->has_iPrevDocid || iDocid>pWriter->iPrevDocid ); - assert( pWriter->iType==DL_DOCIDS ); - - dataBufferAppend(pWriter->b, c, n); - pWriter->iPrevDocid = iDocid; -#ifndef NDEBUG - pWriter->has_iPrevDocid = 1; -#endif -} - -#endif +#ifndef HAVE_BUILTIN_FTS +# include "fts3.h" #endif -/*******************************************************************/ -/* PLReader is used to read data from a document's position list. As -** the caller steps through the list, data is cached so that varints -** only need to be decoded once. -** -** plrInit, plrDestroy - create/destroy a reader. -** plrColumn, plrPosition, plrStartOffset, plrEndOffset - accessors -** plrAtEnd - at end of stream, only call plrDestroy once true. -** plrStep - step to the next element. -*/ -typedef struct PLReader { - /* These refer to the next position's data. nData will reach 0 when - ** reading the last position, so plrStep() signals EOF by setting - ** pData to NULL. - */ - const char *pData; - int nData; - - DocListType iType; - int iColumn; /* the last column read */ - int iPosition; /* the last position read */ - int iStartOffset; /* the last start offset read */ - int iEndOffset; /* the last end offset read */ -} PLReader; - -static int plrAtEnd(PLReader *pReader){ - return pReader->pData==NULL; -} -static int plrColumn(PLReader *pReader){ - assert( !plrAtEnd(pReader) ); - return pReader->iColumn; -} -static int plrPosition(PLReader *pReader){ - assert( !plrAtEnd(pReader) ); - return pReader->iPosition; -} -static int plrStartOffset(PLReader *pReader){ - assert( !plrAtEnd(pReader) ); - return pReader->iStartOffset; -} -static int plrEndOffset(PLReader *pReader){ - assert( !plrAtEnd(pReader) ); - return pReader->iEndOffset; -} -static void plrStep(PLReader *pReader){ - int i, n; - - assert( !plrAtEnd(pReader) ); - - if( pReader->nData==0 ){ - pReader->pData = NULL; - return; - } - - n = fts3GetVarint32(pReader->pData, &i); - if( i==POS_COLUMN ){ - n += fts3GetVarint32(pReader->pData+n, &pReader->iColumn); - pReader->iPosition = 0; - pReader->iStartOffset = 0; - n += fts3GetVarint32(pReader->pData+n, &i); - } - /* Should never see adjacent column changes. */ - assert( i!=POS_COLUMN ); - - if( i==POS_END ){ - pReader->nData = 0; - pReader->pData = NULL; - return; - } - - pReader->iPosition += i-POS_BASE; - if( pReader->iType==DL_POSITIONS_OFFSETS ){ - n += fts3GetVarint32(pReader->pData+n, &i); - pReader->iStartOffset += i; - n += fts3GetVarint32(pReader->pData+n, &i); - pReader->iEndOffset = pReader->iStartOffset+i; - } - assert( n<=pReader->nData ); - pReader->pData += n; - pReader->nData -= n; -} - -static void plrInit(PLReader *pReader, DLReader *pDLReader){ - pReader->pData = dlrPosData(pDLReader); - pReader->nData = dlrPosDataLen(pDLReader); - pReader->iType = pDLReader->iType; - pReader->iColumn = 0; - pReader->iPosition = 0; - pReader->iStartOffset = 0; - pReader->iEndOffset = 0; - plrStep(pReader); -} -static void plrDestroy(PLReader *pReader){ - SCRAMBLE(pReader); -} - -#if 0 -/* because plrDestroy should only be called when plrAtEnd is true, -we create a new convenience function to do this in one call */ -static void plrEndAndDestroy (PLReader *pReader){ - - while (!plrAtEnd(pReader)) { - plrStep (pReader); +gboolean +tracker_fts_init (void) { +#ifdef HAVE_BUILTIN_FTS + /* SQLite has all needed FTS4 features compiled in */ + return TRUE; +#else + static gsize module_initialized = 0; + int rc = SQLITE_OK; + + if (g_once_init_enter (&module_initialized)) { + rc = sqlite3_auto_extension ((void (*) (void)) fts4_extension_init); + g_once_init_leave (&module_initialized, (rc == SQLITE_OK)); } - plrDestroy (pReader); -} -#endif - -/*******************************************************************/ -/* PLWriter is used in constructing a document's position list. As a -** convenience, if iType is DL_DOCIDS, PLWriter becomes a no-op. -** PLWriter writes to the associated DLWriter's buffer. -** -** plwInit - init for writing a document's poslist. -** plwDestroy - clear a writer. -** plwAdd - append position and offset information. -** plwCopy - copy next position's data from reader to writer. -** plwTerminate - add any necessary doclist terminator. -** -** Calling plwAdd() after plwTerminate() may result in a corrupt -** doclist. -*/ -/* TODO(shess) Until we've written the second item, we can cache the -** first item's information. Then we'd have three states: -** -** - initialized with docid, no positions. -** - docid and one position. -** - docid and multiple positions. -** -** Only the last state needs to actually write to dlw->b, which would -** be an improvement in the DLCollector case. -*/ -typedef struct PLWriter { - DLWriter *dlw; - - int iColumn; /* the last column written */ - int iPos; /* the last position written */ - int iOffset; /* the last start offset written */ -} PLWriter; - -/* TODO(shess) In the case where the parent is reading these values -** from a PLReader, we could optimize to a copy if that PLReader has -** the same type as pWriter. -*/ -static void plwAdd(PLWriter *pWriter, int iColumn, int iPos, - int iStartOffset, int iEndOffset){ - /* Worst-case space for POS_COLUMN, iColumn, iPosDelta, - ** iStartOffsetDelta, and iEndOffsetDelta. - */ - char c[5*VARINT_MAX]; - int n = 0; - - /* Ban plwAdd() after plwTerminate(). */ - assert( pWriter->iPos!=-1 ); - - if( pWriter->dlw->iType==DL_DOCIDS ) return; - - if( iColumn!=pWriter->iColumn ){ - n += fts3PutVarint(c+n, POS_COLUMN); - n += fts3PutVarint(c+n, iColumn); - pWriter->iColumn = iColumn; - pWriter->iPos = 0; - pWriter->iOffset = 0; - } - assert( iPos>=pWriter->iPos ); - n += fts3PutVarint(c+n, POS_BASE+(iPos-pWriter->iPos)); - pWriter->iPos = iPos; - if( pWriter->dlw->iType==DL_POSITIONS_OFFSETS ){ - assert( iStartOffset>=pWriter->iOffset ); - n += fts3PutVarint(c+n, iStartOffset-pWriter->iOffset); - pWriter->iOffset = iStartOffset; - assert( iEndOffset>=iStartOffset ); - n += fts3PutVarint(c+n, iEndOffset-iStartOffset); - } - dataBufferAppend(pWriter->dlw->b, c, n); -} -static void plwCopy(PLWriter *pWriter, PLReader *pReader){ - plwAdd(pWriter, plrColumn(pReader), plrPosition(pReader), - plrStartOffset(pReader), plrEndOffset(pReader)); -} - - -#ifdef STORE_CATEGORY -static void plwInit(PLWriter *pWriter, DLWriter *dlw, sqlite_int64 iDocid, int Catid){ - char c[VARINT_MAX]; - int n; - - pWriter->dlw = dlw; - - /* Docids must ascend. */ - assert( !pWriter->dlw->has_iPrevDocid || iDocid>pWriter->dlw->iPrevDocid ); - n = fts3PutVarint(c, iDocid-pWriter->dlw->iPrevDocid); - dataBufferAppend(pWriter->dlw->b, c, n); - pWriter->dlw->iPrevDocid = iDocid; - - n = fts3PutVarint(c, Catid); - dataBufferAppend(pWriter->dlw->b, c, n); - -#ifndef NDEBUG - pWriter->dlw->has_iPrevDocid = 1; -#endif - - /* [tracker] - the default column (ID = 0) should be that of File:Contents for Files db and Email:Body for email db - that way we avoid wrting a column ID and cosuming more bytes for the most voluminous cases */ - pWriter->iColumn = default_column; - pWriter->iPos = 0; - pWriter->iOffset = 0; -} - -#else - -static void plwInit(PLWriter *pWriter, DLWriter *dlw, sqlite_int64 iDocid){ - char c[VARINT_MAX]; - int n; - - pWriter->dlw = dlw; - - /* Docids must ascend. */ - assert( !pWriter->dlw->has_iPrevDocid || iDocid>pWriter->dlw->iPrevDocid ); - n = fts3PutVarint(c, iDocid-pWriter->dlw->iPrevDocid); - dataBufferAppend(pWriter->dlw->b, c, n); - pWriter->dlw->iPrevDocid = iDocid; - -#ifndef NDEBUG - pWriter->dlw->has_iPrevDocid = 1; -#endif - - pWriter->iColumn = 0; - pWriter->iPos = 0; - pWriter->iOffset = 0; -} - -#endif - - - -/* TODO(shess) Should plwDestroy() also terminate the doclist? But - -** then plwDestroy() would no longer be just a destructor, it would -** also be doing work, which isn't consistent with the overall idiom. -** Another option would be for plwAdd() to always append any necessary -** terminator, so that the output is always correct. But that would -** add incremental work to the common case with the only benefit being -** API elegance. Punt for now. -*/ -static void plwTerminate(PLWriter *pWriter){ - if( pWriter->dlw->iType>DL_DOCIDS ){ - char c[VARINT_MAX]; - int n = fts3PutVarint(c, POS_END); - dataBufferAppend(pWriter->dlw->b, c, n); - } -#ifndef NDEBUG - /* Mark as terminated for assert in plwAdd(). */ - pWriter->iPos = -1; -#endif -} -static void plwDestroy(PLWriter *pWriter){ - SCRAMBLE(pWriter); -} - -/*******************************************************************/ -/* DLCollector wraps PLWriter and DLWriter to provide a -** dynamically-allocated doclist area to use during tokenization. -** -** dlcNew - malloc up and initialize a collector. -** dlcDelete - destroy a collector and all contained items. -** dlcAddPos - append position and offset information. -** dlcAddDoclist - add the collected doclist to the given buffer. -** dlcNext - terminate the current document and open another. -*/ -typedef struct DLCollector { - DataBuffer b; - DLWriter dlw; - PLWriter plw; -} DLCollector; - -/* TODO(shess) This could also be done by calling plwTerminate() and -** dataBufferAppend(). I tried that, expecting nominal performance -** differences, but it seemed to pretty reliably be worth 1% to code -** it this way. I suspect it is the incremental malloc overhead (some -** percentage of the plwTerminate() calls will cause a realloc), so -** this might be worth revisiting if the DataBuffer implementation -** changes. -*/ -static void dlcAddDoclist(DLCollector *pCollector, DataBuffer *b){ - if( pCollector->dlw.iType>DL_DOCIDS ){ - char c[VARINT_MAX]; - int n = fts3PutVarint(c, POS_END); - dataBufferAppend2(b, pCollector->b.pData, pCollector->b.nData, c, n); - }else{ - dataBufferAppend(b, pCollector->b.pData, pCollector->b.nData); - } -} - -static void dlcAddPos(DLCollector *pCollector, int iColumn, int iPos, - int iStartOffset, int iEndOffset){ - plwAdd(&pCollector->plw, iColumn, iPos, iStartOffset, iEndOffset); -} - - -#ifdef STORE_CATEGORY -static void dlcNext(DLCollector *pCollector, sqlite_int64 iDocid, int Catid){ - plwTerminate(&pCollector->plw); - plwDestroy(&pCollector->plw); - plwInit(&pCollector->plw, &pCollector->dlw, iDocid, Catid); -} - - -static DLCollector *dlcNew(sqlite_int64 iDocid, DocListType iType, int Catid){ - DLCollector *pCollector = sqlite3_malloc(sizeof(DLCollector)); - dataBufferInit(&pCollector->b, 0); - dlwInit(&pCollector->dlw, iType, &pCollector->b); - plwInit(&pCollector->plw, &pCollector->dlw, iDocid, Catid); - return pCollector; -} - -#else - -static void dlcNext(DLCollector *pCollector, sqlite_int64 iDocid){ - plwTerminate(&pCollector->plw); - plwDestroy(&pCollector->plw); - plwInit(&pCollector->plw, &pCollector->dlw, iDocid); -} - -static DLCollector *dlcNew(sqlite_int64 iDocid, DocListType iType){ - DLCollector *pCollector = sqlite3_malloc(sizeof(DLCollector)); - dataBufferInit(&pCollector->b, 0); - dlwInit(&pCollector->dlw, iType, &pCollector->b); - plwInit(&pCollector->plw, &pCollector->dlw, iDocid); - return pCollector; -} - + return (module_initialized != 0); #endif - -static void dlcDelete(DLCollector *pCollector){ - plwDestroy(&pCollector->plw); - dlwDestroy(&pCollector->dlw); - dataBufferDestroy(&pCollector->b); - SCRAMBLE(pCollector); - sqlite3_free(pCollector); } +static void +function_rank (sqlite3_context *context, + int argc, + sqlite3_value *argv[]) +{ + guint *matchinfo, *weights; + gdouble rank = 0; + gint i, n_columns; + + if (argc != 2) { + sqlite3_result_error(context, + "wrong number of arguments to function rank()", + -1); + return; + } -/* Copy the doclist data of iType in pData/nData into *out, trimming -** unnecessary data as we go. Only columns matching iColumn are -** copied, all columns copied if iColumn is -1. Elements with no -** matching columns are dropped. The output is an iOutType doclist. -*/ -/* NOTE(shess) This code is only valid after all doclists are merged. -** If this is run before merges, then doclist items which represent -** deletion will be trimmed, and will thus not effect a deletion -** during the merge. -*/ -static void docListTrim(DocListType iType, const char *pData, int nData, - int iColumn, DocListType iOutType, DataBuffer *out){ - DLReader dlReader; - DLWriter dlWriter; - - assert( iOutType<=iType ); - - dlrInit(&dlReader, iType, pData, nData); - dlwInit(&dlWriter, iOutType, out); - - while( !dlrAtEnd(&dlReader) ){ - PLReader plReader; - PLWriter plWriter; - int match = 0; - - plrInit(&plReader, &dlReader); - - while( !plrAtEnd(&plReader) ){ - if( iColumn==-1 || plrColumn(&plReader)==iColumn ){ - - if( !match ){ + matchinfo = (unsigned int *) sqlite3_value_blob (argv[0]); + weights = (unsigned int *) sqlite3_value_blob (argv[1]); + n_columns = matchinfo[0]; + + for (i = 0; i < n_columns; i++) { + if (matchinfo[i + 1] != 0) { + rank += (gdouble) weights[i]; + } + } -#ifdef STORE_CATEGORY - plwInit(&plWriter, &dlWriter, dlrDocid(&dlReader), dlrCatid(&dlReader)); -#else - plwInit(&plWriter, &dlWriter, dlrDocid(&dlReader)); -#endif - match = 1; - } - plwAdd(&plWriter, plrColumn(&plReader), plrPosition(&plReader), - plrStartOffset(&plReader), plrEndOffset(&plReader)); - } - plrStep(&plReader); - } - if( match ){ - plwTerminate(&plWriter); - plwDestroy(&plWriter); - } - - plrDestroy(&plReader); - dlrStep(&dlReader); - } - dlwDestroy(&dlWriter); - dlrDestroy(&dlReader); + sqlite3_result_double(context, rank); } -/* Used by docListMerge() to keep doclists in the ascending order by -** docid, then ascending order by age (so the newest comes first). -*/ -typedef struct OrderedDLReader { - DLReader *pReader; - - /* TODO(shess) If we assume that docListMerge pReaders is ordered by - ** age (which we do), then we could use pReader comparisons to break - ** ties. - */ - int idx; -} OrderedDLReader; - -/* Order eof to end, then by docid asc, idx desc. */ -static int orderedDLReaderCmp(OrderedDLReader *r1, OrderedDLReader *r2){ - if( dlrAtEnd(r1->pReader) ){ - if( dlrAtEnd(r2->pReader) ) return 0; /* Both atEnd(). */ - return 1; /* Only r1 atEnd(). */ - } - if( dlrAtEnd(r2->pReader) ) return -1; /* Only r2 atEnd(). */ - - if( dlrDocid(r1->pReader)pReader) ) return -1; - if( dlrDocid(r1->pReader)>dlrDocid(r2->pReader) ) return 1; - - /* Descending on idx. */ - return r2->idx-r1->idx; -} +static void +function_offsets (sqlite3_context *context, + int argc, + sqlite3_value *argv[]) +{ + gchar *offsets, **names; + gint offset_values[4]; + GString *result = NULL; + gint i = 0; + + if (argc != 2) { + sqlite3_result_error(context, + "wrong number of arguments to function tracker_offsets()", + -1); + return; + } -/* Bubble p[0] to appropriate place in p[1..n-1]. Assumes that -** p[1..n-1] is already sorted. -*/ -/* TODO(shess) Is this frequent enough to warrant a binary search? -** Before implementing that, instrument the code to check. In most -** current usage, I expect that p[0] will be less than p[1] a very -** high proportion of the time. -*/ -static void orderedDLReaderReorder(OrderedDLReader *p, int n){ - while( n>1 && orderedDLReaderCmp(p, p+1)>0 ){ - OrderedDLReader tmp = p[0]; - p[0] = p[1]; - p[1] = tmp; - n--; - p++; - } -} + offsets = sqlite3_value_text (argv[0]); + names = (unsigned int *) sqlite3_value_blob (argv[1]); -/* Given an array of doclist readers, merge their doclist elements -** into out in sorted order (by docid), dropping elements from older -** readers when there is a duplicate docid. pReaders is assumed to be -** ordered by age, oldest first. -*/ -/* TODO(shess) nReaders must be <= MERGE_COUNT. This should probably -** be fixed. -*/ -static void docListMerge(DataBuffer *out, - DLReader *pReaders, int nReaders){ - OrderedDLReader readers[MERGE_COUNT]; - DLWriter writer; - int i, n; - const char *pStart = 0; - int nStart = 0; - sqlite_int64 iFirstDocid = 0, iLastDocid = 0; - - assert( nReaders>0 ); - if( nReaders==1 ){ - dataBufferAppend(out, dlrDocData(pReaders), dlrAllDataBytes(pReaders)); - return; - } - - assert( nReaders<=MERGE_COUNT ); - n = 0; - for(i=0; i0 ){ - orderedDLReaderReorder(readers+i, nReaders-i); - } - - dlwInit(&writer, pReaders[0].iType, out); - while( !dlrAtEnd(readers[0].pReader) ){ - sqlite_int64 iDocid = dlrDocid(readers[0].pReader); - - /* If this is a continuation of the current buffer to copy, extend - ** that buffer. memcpy() seems to be more efficient if it has a - ** lots of data to copy. - */ - if( dlrDocData(readers[0].pReader)==pStart+nStart ){ - nStart += dlrDocDataBytes(readers[0].pReader); - }else{ - if( pStart!=0 ){ - dlwAppend(&writer, pStart, nStart, iFirstDocid, iLastDocid); - } - pStart = dlrDocData(readers[0].pReader); - nStart = dlrDocDataBytes(readers[0].pReader); - iFirstDocid = iDocid; - } - iLastDocid = iDocid; - dlrStep(readers[0].pReader); - - /* Drop all of the older elements with the same docid. */ - for(i=1; i0 ){ - orderedDLReaderReorder(readers+i, nReaders-i); - } - } - - /* Copy over any remaining elements. */ - if( nStart>0 ) dlwAppend(&writer, pStart, nStart, iFirstDocid, iLastDocid); - dlwDestroy(&writer); -} + while (offsets && *offsets) { + offset_values[i] = g_strtod (offsets, &offsets); -/* Helper function for posListUnion(). Compares the current position -** between left and right, returning as standard C idiom of <0 if -** left0 if left>right, and 0 if left==right. "End" always -** compares greater. -*/ -static int posListCmp(PLReader *pLeft, PLReader *pRight){ - assert( pLeft->iType==pRight->iType ); - if( pLeft->iType==DL_DOCIDS ) return 0; - - if( plrAtEnd(pLeft) ) return plrAtEnd(pRight) ? 0 : 1; - if( plrAtEnd(pRight) ) return -1; - - if( plrColumn(pLeft)plrColumn(pRight) ) return 1; - - if( plrPosition(pLeft)plrPosition(pRight) ) return 1; - if( pLeft->iType==DL_POSITIONS ) return 0; + /* All 4 values from the quartet have been gathered */ + if (i == 3) { + if (!result) { + result = g_string_new (""); + } else { + g_string_append_c (result, ','); + } + + g_string_append_printf (result, + "%s,%d", + names[offset_values[0]], + offset_values[2]); - if( plrStartOffset(pLeft)plrStartOffset(pRight) ) return 1; + } - if( plrEndOffset(pLeft)plrEndOffset(pRight) ) return 1; + i = (i + 1) % 4; + } - return 0; + sqlite3_result_text (context, + (result) ? g_string_free (result, FALSE) : NULL, + -1, g_free); } -/* Write the union of position lists in pLeft and pRight to pOut. -** "Union" in this case meaning "All unique position tuples". Should -** work with any doclist type, though both inputs and the output -** should be the same type. -*/ -static void posListUnion(DLReader *pLeft, DLReader *pRight, DLWriter *pOut){ - PLReader left, right; - PLWriter writer; - - assert( dlrDocid(pLeft)==dlrDocid(pRight) ); - assert( pLeft->iType==pRight->iType ); - assert( pLeft->iType==pOut->iType ); - - plrInit(&left, pLeft); - plrInit(&right, pRight); - -#ifdef STORE_CATEGORY - plwInit(&writer, pOut, dlrDocid(pLeft), dlrCatid(pLeft)); -#else - plwInit(&writer, pOut, dlrDocid(pLeft)); -#endif +static void +function_weights (sqlite3_context *context, + int argc, + sqlite3_value *argv[]) +{ + static guint *weights = NULL; + static gsize weights_initialized = 0; + if (g_once_init_enter (&weights_initialized)) { + GArray *weight_array; + sqlite3_stmt *stmt; + sqlite3 *db; + int rc; + + weight_array = g_array_new (FALSE, FALSE, sizeof (guint)); + db = sqlite3_context_db_handle (context); + rc = sqlite3_prepare_v2 (db, + "SELECT \"rdf:Property\".\"tracker:weight\" " + "FROM \"rdf:Property\" " + "WHERE \"rdf:Property\".\"tracker:fulltextIndexed\" = 1 " + "ORDER BY \"rdf:Property\".ID ", + -1, &stmt, NULL); + + while ((rc = sqlite3_step (stmt)) != SQLITE_DONE) { + if (rc == SQLITE_ROW) { + guint weight; + weight = sqlite3_column_int (stmt, 0); + g_array_append_val (weight_array, weight); + } + } + + if (rc == SQLITE_DONE) { + rc = sqlite3_finalize (stmt); + } - while( !plrAtEnd(&left) || !plrAtEnd(&right) ){ - int c = posListCmp(&left, &right); - if( c<0 ){ - plwCopy(&writer, &left); - plrStep(&left); - }else if( c>0 ){ - plwCopy(&writer, &right); - plrStep(&right); - }else{ - plwCopy(&writer, &left); - plrStep(&left); - plrStep(&right); - } - } - - plwTerminate(&writer); - plwDestroy(&writer); - plrDestroy(&left); - plrDestroy(&right); -} + weights = (guint *) g_array_free (weight_array, FALSE); + g_once_init_leave (&weights_initialized, (rc == SQLITE_OK)); + } -/* Write the union of doclists in pLeft and pRight to pOut. For -** docids in common between the inputs, the union of the position -** lists is written. Inputs and outputs are always type DL_DEFAULT. -*/ -static void docListUnion( - const char *pLeft, int nLeft, - const char *pRight, int nRight, - DataBuffer *pOut /* Write the combined doclist here */ -){ - DLReader left, right; - DLWriter writer; - - if( nLeft==0 ){ - if( nRight!=0) dataBufferAppend(pOut, pRight, nRight); - return; - } - if( nRight==0 ){ - dataBufferAppend(pOut, pLeft, nLeft); - return; - } - - dlrInit(&left, DL_DEFAULT, pLeft, nLeft); - dlrInit(&right, DL_DEFAULT, pRight, nRight); - dlwInit(&writer, DL_DEFAULT, pOut); - - while( !dlrAtEnd(&left) || !dlrAtEnd(&right) ){ - if( dlrAtEnd(&right) ){ - dlwCopy(&writer, &left); - dlrStep(&left); - }else if( dlrAtEnd(&left) ){ - dlwCopy(&writer, &right); - dlrStep(&right); - }else if( dlrDocid(&left)dlrDocid(&right) ){ - dlwCopy(&writer, &right); - dlrStep(&right); - }else{ - posListUnion(&left, &right, &writer); - dlrStep(&left); - dlrStep(&right); - } - } - - dlrDestroy(&left); - dlrDestroy(&right); - dlwDestroy(&writer); + sqlite3_result_blob (context, weights, sizeof (weights), NULL); } -/* -** This function is used as part of the implementation of phrase and -** NEAR matching. -** -** pLeft and pRight are DLReaders positioned to the same docid in -** lists of type DL_POSITION. This function writes an entry to the -** DLWriter pOut for each position in pRight that is less than -** (nNear+1) greater (but not equal to or smaller) than a position -** in pLeft. For example, if nNear is 0, and the positions contained -** by pLeft and pRight are: -** -** pLeft: 5 10 15 20 -** pRight: 6 9 17 21 -** -** then the docid is added to pOut. If pOut is of type DL_POSITIONS, -** then a positionids "6" and "21" are also added to pOut. -** -** If boolean argument isSaveLeft is true, then positionids are copied -** from pLeft instead of pRight. In the example above, the positions "5" -** and "20" would be added instead of "6" and "21". -** If isSaveLeft = 2 then both positions are added, 3 or above and postions are appended to left -*/ -static void posListPhraseMerge( - DLReader *pLeft, - DLReader *pRight, - int nNear, - int isSaveLeft, - int term_num, - DLWriter *pOut -){ - PLReader left, right; - PLWriter writer; - int match = 0; - - assert( dlrDocid(pLeft)==dlrDocid(pRight) ); - assert( pOut->iType!=DL_POSITIONS_OFFSETS ); - - plrInit(&left, pLeft); - plrInit(&right, pRight); - - - - while( !plrAtEnd(&left) && !plrAtEnd(&right) ){ - if( plrColumn(&left)plrColumn(&right) ){ - plrStep(&right); - }else if( plrPosition(&left)>=plrPosition(&right) ){ - plrStep(&right); - }else{ - if( (plrPosition(&right)-plrPosition(&left))<=(nNear+1) ){ - - if( !match ){ +static void +function_property_names (sqlite3_context *context, + int argc, + sqlite3_value *argv[]) +{ + static gchar **names = NULL; + static gsize names_initialized = 0; -#ifdef STORE_CATEGORY - plwInit(&writer, pOut, dlrDocid(pLeft), dlrCatid(pLeft)); -#else - plwInit(&writer, pOut, dlrDocid(pLeft)); -#endif - match = 1; - } - if( isSaveLeft == 0 ){ - plwAdd(&writer, plrColumn(&right), plrPosition(&right), 0, 0); - }else if( isSaveLeft == 1 ){ - plwAdd(&writer, plrColumn(&left), plrPosition(&left), 0, 0); - } else { - - int iPosRight = plrPosition(&right); - int iColumnRight = plrColumn(&right); - int i; - - for (i=term_num; i>=0; i--) { - plwAdd(&writer, iColumnRight, iPosRight - i, 0, 0); - } - - } - - plrStep(&right); - }else{ - plrStep(&left); - } - } - } - - if( match ){ - plwTerminate(&writer); - plwDestroy(&writer); - } + if (g_once_init_enter (&names_initialized)) { + GPtrArray *names_array; + sqlite3_stmt *stmt; + sqlite3 *db; + int rc; + + names_array = g_ptr_array_new (); + db = sqlite3_context_db_handle (context); + rc = sqlite3_prepare_v2 (db, + "SELECT Uri " + "FROM Resource " + "JOIN \"rdf:Property\" " + "ON Resource.ID = \"rdf:Property\".ID " + "WHERE \"rdf:Property\".\"tracker:fulltextIndexed\" = 1 " + "ORDER BY \"rdf:Property\".ID ", + -1, &stmt, NULL); + + while ((rc = sqlite3_step (stmt)) != SQLITE_DONE) { + if (rc == SQLITE_ROW) { + const gchar *name; + + name = sqlite3_column_text (stmt, 0); + g_ptr_array_add (names_array, g_strdup (name)); + } + } + + if (rc == SQLITE_DONE) { + rc = sqlite3_finalize (stmt); + } - plrDestroy(&left); - plrDestroy(&right); -} + names = (gchar **) g_ptr_array_free (names_array, FALSE); + g_once_init_leave (&names_initialized, (rc == SQLITE_OK)); + } -/* -** Compare the values pointed to by the PLReaders passed as arguments. -** Return -1 if the value pointed to by pLeft is considered less than -** the value pointed to by pRight, +1 if it is considered greater -** than it, or 0 if it is equal. i.e. -** -** (*pLeft - *pRight) -** -** A PLReader that is in the EOF condition is considered greater than -** any other. If neither argument is in EOF state, the return value of -** plrColumn() is used. If the plrColumn() values are equal, the -** comparison is on the basis of plrPosition(). -*/ -static int plrCompare(PLReader *pLeft, PLReader *pRight){ - assert(!plrAtEnd(pLeft) || !plrAtEnd(pRight)); - - if( plrAtEnd(pRight) || plrAtEnd(pLeft) ){ - return (plrAtEnd(pRight) ? -1 : 1); - } - if( plrColumn(pLeft)!=plrColumn(pRight) ){ - return ((plrColumn(pLeft)0) -** and write the results into pOut. -** -** A phrase intersection means that two documents only match -** if pLeft.iPos+1==pRight.iPos. -** -** A NEAR intersection means that two documents only match if -** (abs(pLeft.iPos-pRight.iPos)data)) { + g_string_append_printf (str, ", group_concat(\"%s\".\"%s\")", + index_table, + (gchar *) columns->data); + } else { + g_string_append_printf (str, ", \"%s\".\"%s\"", + index_table, + (gchar *) columns->data); + } + + g_string_append_printf (str, " AS \"%s\" ", + (gchar *) columns->data); + g_string_append_printf (fts, "\"%s\", ", + (gchar *) columns->data); + + columns = columns->next; + } + + g_string_append_printf (from, "LEFT OUTER JOIN \"%s\" ON " + " Resource.ID = \"%s\".ID ", + index_table, index_table); + } + g_string_append (str, from->str); + g_string_free (from, TRUE); - while( !dlrAtEnd(&left) && !dlrAtEnd(&right) ){ - if(dlrDocid(&left)str, NULL, 0, NULL); + g_string_free (str, TRUE); -#else -static void docListAndMerge( - const char *pLeft, int nLeft, - const char *pRight, int nRight, - DataBuffer *pOut /* Write the combined doclist here */ -){ - DLReader left, right; - DLWriter writer; - - if( nLeft==0 || nRight==0 ) return; - - dlrInit(&left, DL_DOCIDS, pLeft, nLeft); - dlrInit(&right, DL_DOCIDS, pRight, nRight); - dlwInit(&writer, DL_DOCIDS, pOut); - - while( !dlrAtEnd(&left) && !dlrAtEnd(&right) ){ - if( dlrDocid(&left)str, NULL, 0, NULL); + g_string_free (fts, TRUE); + + return (rc == SQLITE_OK); } -#else - -static void docListOrMerge( - const char *pLeft, int nLeft, - const char *pRight, int nRight, - DataBuffer *pOut /* Write the combined doclist here */ -){ - DLReader left, right; - DLWriter writer; - - if( nLeft==0 ){ - if( nRight!=0 ) dataBufferAppend(pOut, pRight, nRight); - return; - } - if( nRight==0 ){ - dataBufferAppend(pOut, pLeft, nLeft); - return; - } - - dlrInit(&left, DL_DOCIDS, pLeft, nLeft); - dlrInit(&right, DL_DOCIDS, pRight, nRight); - dlwInit(&writer, DL_DOCIDS, pOut); - - while( !dlrAtEnd(&left) || !dlrAtEnd(&right) ){ - if( dlrAtEnd(&right) ){ - dlwAdd(&writer, dlrDocid(&left)); - - - dlrStep(&left); - }else if( dlrAtEnd(&left) ){ - - dlwAdd(&writer, dlrDocid(&right)); - - dlrStep(&right); - }else if( dlrDocid(&left) one AND (two OR three) - * [one OR two three] ==> (one OR two) AND three - * - * A "-" before a term matches all entries that lack that term. - * The "-" must occur immediately before the term with in intervening - * space. This is how the search engines do it. - * - * A NOT term cannot be the right-hand operand of an OR. If this - * occurs in the query string, the NOT is ignored: - * - * [one OR -two] ==> one OR two - * - */ -typedef struct Query { - fulltext_vtab *pFts; /* The full text index */ - int nTerms; /* Number of terms in the query */ - QueryTerm *pTerms; /* Array of terms. Space obtained from malloc() */ - int nextIsOr; /* Set the isOr flag on the next inserted term */ - int nextIsNear; /* Set the isOr flag on the next inserted term */ - int nextColumn; /* Next word parsed must be in this column */ - int dfltColumn; /* The default column */ -} Query; - - -/* -** An instance of the following structure keeps track of generated -** matching-word offset information and snippets. -*/ -typedef struct Snippet { - int nMatch; /* Total number of matches */ - int nAlloc; /* Space allocated for aMatch[] */ - struct snippetMatch { /* One entry for each matching term */ - char snStatus; /* Status flag for use while constructing snippets */ - short int iCol; /* The column that contains the match */ - short int iTerm; /* The index in Query.pTerms[] of the matching term */ - int iToken; /* The index of the matching document token */ - short int nByte; /* Number of bytes in the term */ - int iStart; /* The offset to the first character of the term */ - int rank; /* the rank of the snippet */ - } *aMatch; /* Points to space obtained from malloc */ - char *zOffset; /* Text rendering of aMatch[] */ - int nOffset; /* strlen(zOffset) */ - char *zSnippet; /* Snippet text */ - int nSnippet; /* strlen(zSnippet) */ -} Snippet; - - -typedef enum QueryType { - QUERY_GENERIC, /* table scan */ - QUERY_DOCID, /* lookup by docid */ - QUERY_FULLTEXT /* QUERY_FULLTEXT + [i] is a full-text search for column i*/ -} QueryType; - -typedef enum fulltext_statement { -#if 0 - CONTENT_INSERT_STMT, - CONTENT_SELECT_STMT, - CONTENT_DELETE_STMT, - CONTENT_EXISTS_STMT, -#endif - - BLOCK_INSERT_STMT, - BLOCK_SELECT_STMT, - BLOCK_DELETE_STMT, - BLOCK_DELETE_ALL_STMT, - - SEGDIR_MAX_INDEX_STMT, - SEGDIR_SET_STMT, - SEGDIR_SELECT_LEVEL_STMT, - SEGDIR_SPAN_STMT, - SEGDIR_DELETE_STMT, - SEGDIR_SELECT_SEGMENT_STMT, - SEGDIR_SELECT_ALL_STMT, - SEGDIR_DELETE_ALL_STMT, - SEGDIR_COUNT_STMT, - - PROPERTY_WEIGHT_STMT, - - MAX_STMT /* Always at end! */ -} fulltext_statement; - -/* These must exactly match the enum above. */ -/* TODO(shess): Is there some risk that a statement will be used in two -** cursors at once, e.g. if a query joins a virtual table to itself? -** If so perhaps we should move some of these to the cursor object. -*/ -static const char *const fulltext_zStatement[MAX_STMT] = { -#if 0 - /* CONTENT_INSERT */ NULL, /* generated in contentInsertStatement() */ - /* CONTENT_SELECT */ NULL, /* generated in contentSelectStatement() */ - /* CONTENT_DELETE */ "delete from %_content where docid = ?", - /* CONTENT_EXISTS */ "select docid from %_content limit 1", -#endif - - /* BLOCK_INSERT */ - "insert into %_segments (blockid, block) values (null, ?)", - /* BLOCK_SELECT */ "select block from %_segments where blockid = ?", - /* BLOCK_DELETE */ "delete from %_segments where blockid between ? and ?", - /* BLOCK_DELETE_ALL */ "delete from %_segments", - - /* SEGDIR_MAX_INDEX */ "select max(idx) from %_segdir where level = ?", - /* SEGDIR_SET */ "insert into %_segdir values (?, ?, ?, ?, ?, ?)", - /* SEGDIR_SELECT_LEVEL */ - "select start_block, leaves_end_block, root from %_segdir " - " where level = ? order by idx", - /* SEGDIR_SPAN */ - "select min(start_block), max(end_block) from %_segdir " - " where level = ? and start_block <> 0", - /* SEGDIR_DELETE */ "delete from %_segdir where level = ?", - - /* NOTE(shess): The first three results of the following two - ** statements must match. - */ - /* SEGDIR_SELECT_SEGMENT */ - "select start_block, leaves_end_block, root from %_segdir " - " where level = ? and idx = ?", - /* SEGDIR_SELECT_ALL */ - "select start_block, leaves_end_block, root from %_segdir " - " order by level desc, idx asc", - /* SEGDIR_DELETE_ALL */ "delete from %_segdir", - /* SEGDIR_COUNT */ "select count(*), ifnull(max(level),0) from %_segdir", - - /* PROPERTY_WEIGHT */ "SELECT \"tracker:weight\", (SELECT Uri FROM Resource WHERE ID = \"rdf:Property\".ID) FROM \"rdf:Property\" WHERE ID = ?", -}; - -/* -** A connection to a fulltext index is an instance of the following -** structure. The xCreate and xConnect methods create an instance -** of this structure and xDestroy and xDisconnect free that instance. -** All other methods receive a pointer to the structure as one of their -** arguments. -*/ -struct fulltext_sqlite_vtab { - sqlite3_vtab base; /* Base class used by SQLite core */ - fulltext_vtab *fulltext; -}; - -struct fulltext_vtab { - sqlite3 *db; /* The database connection */ - const char *zDb; /* logical database name */ - const char *zName; /* virtual table name */ - int nColumn; /* number of columns in virtual table */ - TrackerParser *parser; /* tokenizer for inserts and queries */ - gboolean enable_stemmer; - gboolean enable_unaccent; - gboolean ignore_numbers; - gboolean ignore_stop_words; - int max_words; - int min_word_length; - int max_word_length; - - /* Precompiled statements which we keep as long as the table is - ** open. - */ - sqlite3_stmt *pFulltextStatements[MAX_STMT]; - - /* Precompiled statements used for segment merges. We run a - ** separate select across the leaf level of each tree being merged. - */ - sqlite3_stmt *pLeafSelectStmts[MERGE_COUNT]; - /* The statement used to prepare pLeafSelectStmts. */ -#define LEAF_SELECT \ - "select block from %_segments where blockid between ? and ? order by blockid" - - /* These buffer pending index updates during transactions. - ** nPendingData estimates the memory size of the pending data. It - ** doesn't include the hash-bucket overhead, nor any malloc - ** overhead. When nPendingData exceeds kPendingThreshold, the - ** buffer is flushed even before the transaction closes. - ** pendingTerms stores the data, and is only valid when nPendingData - ** is >=0 (nPendingData<0 means pendingTerms has not been - ** initialized). iPrevDocid is the last docid written, used to make - ** certain we're inserting in sorted order. - */ - int nPendingData; -#define kPendingThreshold (1*1024*1024) - sqlite_int64 iPrevDocid; - fts3Hash pendingTerms; -}; - -/* -** When the core wants to do a query, it create a cursor using a -** call to xOpen. This structure is an instance of a cursor. It -** is destroyed by xClose. -*/ -typedef struct fulltext_cursor { - sqlite3_vtab_cursor base; /* Base class used by SQLite core */ - QueryType iCursorType; /* Copy of sqlite3_index_info.idxNum */ - sqlite3_stmt *pStmt; /* Prepared statement in use by the cursor */ - int eof; /* True if at End Of Results */ - Query q; /* Parsed query string */ - Snippet snippet; /* Cached snippet for the current row */ - int iColumn; /* Column being searched */ - DataBuffer result; /* Doclist results from fulltextQuery */ - DLReader reader; /* Result reader if result not empty */ - sqlite_int64 currentDocid; - int currentCatid; /* (tracker) Category (service type ID) of the document */ - GString *offsets; /* (tracker) pre computed offsets from position data in index */ - double rank; /* (tracker) pre computed rank from position data in index */ -} fulltext_cursor; - -static fulltext_vtab *get_fulltext_vtab (sqlite3_vtab *sqlite_vtab){ - return ((fulltext_sqlite_vtab *) sqlite_vtab)->fulltext; -} - -static struct fulltext_vtab *cursor_vtab(fulltext_cursor *c){ - return get_fulltext_vtab (c->base.pVtab); -} - -static const sqlite3_module fts3Module; /* forward declaration */ - -#if 0 -/* Return a dynamically generated statement of the form - * insert into %_content (docid, ...) values (?, ...) - */ -static const char *contentInsertStatement(fulltext_vtab *v){ - StringBuffer sb; - - initStringBuffer(&sb); - append(&sb, "insert into %_content (docid) values (?)"); - return stringBufferData(&sb); -} -#endif - - -#if 0 -/* Return a dynamically generated statement of the form - * select from %_content where docid = ? - */ -static const char *contentSelectStatement(fulltext_vtab *v){ - StringBuffer sb; - int i; - - initStringBuffer(&sb); - append(&sb, "SELECT "); - - for (i = 0; i < v->nColumn; i++) { - if (i > 0) { - append(&sb, ", "); - } - append(&sb, "NULL"); - } - - return stringBufferData(&sb); -} -#endif - -/* Puts a freshly-prepared statement determined by iStmt in *ppStmt. -** If the indicated statement has never been prepared, it is prepared -** and cached, otherwise the cached version is reset. -*/ -static int sql_get_statement(fulltext_vtab *v, fulltext_statement iStmt, - sqlite3_stmt **ppStmt){ - assert( iStmtpFulltextStatements[iStmt]==NULL ){ - const char *zStmt; - int rc; - switch( iStmt ){ -#if 0 - case CONTENT_INSERT_STMT: - zStmt = contentInsertStatement(v); break; - case CONTENT_SELECT_STMT: - zStmt = contentSelectStatement(v); break; -#endif - default: - zStmt = fulltext_zStatement[iStmt]; - } - rc = sql_prepare(v->db, v->zDb, v->zName, &v->pFulltextStatements[iStmt], - zStmt); - if( zStmt != fulltext_zStatement[iStmt]) sqlite3_free((void *) zStmt); - if( rc!=SQLITE_OK ) return rc; - } else { - int rc = sqlite3_reset(v->pFulltextStatements[iStmt]); - if( rc!=SQLITE_OK ) return rc; - } - - *ppStmt = v->pFulltextStatements[iStmt]; - return SQLITE_OK; -} - - -/* Function from Tracker */ -static inline int -get_metadata_weight (fulltext_vtab *v, int id, gchar **uri) -{ - sqlite3_stmt *stmt; - int rc; - int weight; - - weight = 1; - - rc = sql_get_statement(v, PROPERTY_WEIGHT_STMT, &stmt); - if (rc != SQLITE_OK) return weight; - - rc = sqlite3_bind_int (stmt, 1, id); - if (rc != SQLITE_OK) return weight; - - rc = sqlite3_step (stmt); - if (rc != SQLITE_ROW) return weight; - - weight = sqlite3_column_int (stmt, 0); - if (weight == 0) { - weight = 1; - } - - *uri = g_strdup (sqlite3_column_text (stmt, 1)); - - /* We expect only one row. We must execute another sqlite3_step() - * to complete the iteration; otherwise the table will remain locked. */ - sqlite3_step (stmt); - - return weight; -} - -/* Like sqlite3_step(), but convert SQLITE_DONE to SQLITE_OK and -** SQLITE_ROW to SQLITE_ERROR. Useful for statements like UPDATE, -** where we expect no results. -*/ -static int sql_single_step(sqlite3_stmt *s){ - int rc = sqlite3_step(s); - return (rc==SQLITE_DONE) ? SQLITE_OK : rc; -} - -/* Like sql_get_statement(), but for special replicated LEAF_SELECT -** statements. idx -1 is a special case for an uncached version of -** the statement (used in the optimize implementation). -*/ -/* TODO(shess) Write version for generic statements and then share -** that between the cached-statement functions. -*/ -static int sql_get_leaf_statement(fulltext_vtab *v, int idx, - sqlite3_stmt **ppStmt){ - assert( idx>=-1 && idxdb, v->zDb, v->zName, ppStmt, LEAF_SELECT); - }else if( v->pLeafSelectStmts[idx]==NULL ){ - int rc = sql_prepare(v->db, v->zDb, v->zName, &v->pLeafSelectStmts[idx], - LEAF_SELECT); - if( rc!=SQLITE_OK ) return rc; - }else{ - int rc = sqlite3_reset(v->pLeafSelectStmts[idx]); - if( rc!=SQLITE_OK ) return rc; - } - - *ppStmt = v->pLeafSelectStmts[idx]; - return SQLITE_OK; -} - -#if 0 -/* insert into %_content (docid, ...) values ([docid], [pValues]) -** If the docid contains SQL NULL, then a unique docid will be -** generated. -*/ -static int content_insert(fulltext_vtab *v, sqlite3_value *docid, - sqlite3_value **pValues){ - sqlite3_stmt *s; - - int rc = sql_get_statement(v, CONTENT_INSERT_STMT, &s); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_value(s, 1, docid); - if( rc!=SQLITE_OK ) return rc; - - return sql_single_step(s); -} - -static void freeStringArray(int nString, const char **pString){ - int i; - - for (i=0 ; i < nString ; ++i) { - if( pString[i]!=NULL ) sqlite3_free((void *) pString[i]); - } - sqlite3_free((void *) pString); -} - -/* select * from %_content where docid = [iDocid] - * The caller must delete the returned array and all strings in it. - * null fields will be NULL in the returned array. - * - * TODO: Perhaps we should return pointer/length strings here for consistency - * with other code which uses pointer/length. */ -static int content_select(fulltext_vtab *v, sqlite_int64 iDocid, - const char ***pValues){ - sqlite3_stmt *s; - const char **values; - int i; - int rc; - - *pValues = NULL; - - rc = sql_get_statement(v, CONTENT_SELECT_STMT, &s); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_int64(s, 1, iDocid); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_step(s); - if( rc!=SQLITE_ROW ) return rc; - - values = (const char **) sqlite3_malloc(v->nColumn * sizeof(const char *)); - for(i=0; inColumn; ++i){ - if( sqlite3_column_type(s, i)==SQLITE_NULL ){ - values[i] = NULL; - }else{ - values[i] = string_dup((char*)sqlite3_column_text(s, i)); - } - } - - /* We expect only one row. We must execute another sqlite3_step() - * to complete the iteration; otherwise the table will remain locked. */ - rc = sqlite3_step(s); - if( rc==SQLITE_DONE ){ - *pValues = values; - return SQLITE_OK; - } - - freeStringArray(v->nColumn, values); - return rc; -} - -/* delete from %_content where docid = [iDocid ] */ -static int content_delete(fulltext_vtab *v, sqlite_int64 iDocid){ - sqlite3_stmt *s; - int rc = sql_get_statement(v, CONTENT_DELETE_STMT, &s); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_int64(s, 1, iDocid); - if( rc!=SQLITE_OK ) return rc; - - return sql_single_step(s); -} - -/* Returns SQLITE_ROW if any rows exist in %_content, SQLITE_DONE if -** no rows exist, and any error in case of failure. -*/ -static int content_exists(fulltext_vtab *v){ - sqlite3_stmt *s; - int rc = sql_get_statement(v, CONTENT_EXISTS_STMT, &s); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_step(s); - if( rc!=SQLITE_ROW ) return rc; - - /* We expect only one row. We must execute another sqlite3_step() - * to complete the iteration; otherwise the table will remain locked. */ - rc = sqlite3_step(s); - if( rc==SQLITE_DONE ) return SQLITE_ROW; - if( rc==SQLITE_ROW ) return SQLITE_ERROR; - return rc; -} -#endif - -/* insert into %_segments values ([pData]) -** returns assigned blockid in *piBlockid -*/ -static int block_insert(fulltext_vtab *v, const char *pData, int nData, - sqlite_int64 *piBlockid){ - sqlite3_stmt *s; - int rc = sql_get_statement(v, BLOCK_INSERT_STMT, &s); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_blob(s, 1, pData, nData, SQLITE_STATIC); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_step(s); - if( rc==SQLITE_ROW ) return SQLITE_ERROR; - if( rc!=SQLITE_DONE ) return rc; - - /* blockid column is an alias for rowid. */ - *piBlockid = sqlite3_last_insert_rowid(v->db); - return SQLITE_OK; -} - -/* delete from %_segments -** where blockid between [iStartBlockid] and [iEndBlockid] -** -** Deletes the range of blocks, inclusive, used to delete the blocks -** which form a segment. -*/ -static int block_delete(fulltext_vtab *v, - sqlite_int64 iStartBlockid, sqlite_int64 iEndBlockid){ - sqlite3_stmt *s; - int rc = sql_get_statement(v, BLOCK_DELETE_STMT, &s); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_int64(s, 1, iStartBlockid); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_int64(s, 2, iEndBlockid); - if( rc!=SQLITE_OK ) return rc; - - return sql_single_step(s); -} - -/* Returns SQLITE_ROW with *pidx set to the maximum segment idx found -** at iLevel. Returns SQLITE_DONE if there are no segments at -** iLevel. Otherwise returns an error. -*/ -static int segdir_max_index(fulltext_vtab *v, int iLevel, int *pidx){ - sqlite3_stmt *s; - int rc = sql_get_statement(v, SEGDIR_MAX_INDEX_STMT, &s); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_int(s, 1, iLevel); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_step(s); - /* Should always get at least one row due to how max() works. */ - if( rc==SQLITE_DONE ) return SQLITE_DONE; - if( rc!=SQLITE_ROW ) return rc; - - /* NULL means that there were no inputs to max(). */ - if( SQLITE_NULL==sqlite3_column_type(s, 0) ){ - rc = sqlite3_step(s); - if( rc==SQLITE_ROW ) return SQLITE_ERROR; - return rc; - } - - *pidx = sqlite3_column_int(s, 0); - - /* We expect only one row. We must execute another sqlite3_step() - * to complete the iteration; otherwise the table will remain locked. */ - rc = sqlite3_step(s); - if( rc==SQLITE_ROW ) return SQLITE_ERROR; - if( rc!=SQLITE_DONE ) return rc; - return SQLITE_ROW; -} - -/* insert into %_segdir values ( -** [iLevel], [idx], -** [iStartBlockid], [iLeavesEndBlockid], [iEndBlockid], -** [pRootData] -** ) -*/ -static int segdir_set(fulltext_vtab *v, int iLevel, int idx, - sqlite_int64 iStartBlockid, - sqlite_int64 iLeavesEndBlockid, - sqlite_int64 iEndBlockid, - const char *pRootData, int nRootData){ - sqlite3_stmt *s; - int rc = sql_get_statement(v, SEGDIR_SET_STMT, &s); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_int(s, 1, iLevel); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_int(s, 2, idx); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_int64(s, 3, iStartBlockid); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_int64(s, 4, iLeavesEndBlockid); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_int64(s, 5, iEndBlockid); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_blob(s, 6, pRootData, nRootData, SQLITE_STATIC); - if( rc!=SQLITE_OK ) return rc; - - return sql_single_step(s); -} - -/* Queries %_segdir for the block span of the segments in level -** iLevel. Returns SQLITE_DONE if there are no blocks for iLevel, -** SQLITE_ROW if there are blocks, else an error. -*/ -static int segdir_span(fulltext_vtab *v, int iLevel, - sqlite_int64 *piStartBlockid, - sqlite_int64 *piEndBlockid){ - sqlite3_stmt *s; - int rc = sql_get_statement(v, SEGDIR_SPAN_STMT, &s); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_int(s, 1, iLevel); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_step(s); - if( rc==SQLITE_DONE ) return SQLITE_DONE; /* Should never happen */ - if( rc!=SQLITE_ROW ) return rc; - - /* This happens if all segments at this level are entirely inline. */ - if( SQLITE_NULL==sqlite3_column_type(s, 0) ){ - /* We expect only one row. We must execute another sqlite3_step() - * to complete the iteration; otherwise the table will remain locked. */ - int rc2 = sqlite3_step(s); - if( rc2==SQLITE_ROW ) return SQLITE_ERROR; - return rc2; - } - - *piStartBlockid = sqlite3_column_int64(s, 0); - *piEndBlockid = sqlite3_column_int64(s, 1); - - /* We expect only one row. We must execute another sqlite3_step() - * to complete the iteration; otherwise the table will remain locked. */ - rc = sqlite3_step(s); - if( rc==SQLITE_ROW ) return SQLITE_ERROR; - if( rc!=SQLITE_DONE ) return rc; - return SQLITE_ROW; -} - -/* Delete the segment blocks and segment directory records for all -** segments at iLevel. -*/ -static int segdir_delete(fulltext_vtab *v, int iLevel){ - sqlite3_stmt *s; - sqlite_int64 iStartBlockid = 0, iEndBlockid = 0; - int rc = segdir_span(v, iLevel, &iStartBlockid, &iEndBlockid); - if( rc!=SQLITE_ROW && rc!=SQLITE_DONE ) return rc; - - if( rc==SQLITE_ROW ){ - rc = block_delete(v, iStartBlockid, iEndBlockid); - if( rc!=SQLITE_OK ) return rc; - } - - /* Delete the segment directory itself. */ - rc = sql_get_statement(v, SEGDIR_DELETE_STMT, &s); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_int64(s, 1, iLevel); - if( rc!=SQLITE_OK ) return rc; - - return sql_single_step(s); -} - -#if 0 -/* Delete entire fts index, SQLITE_OK on success, relevant error on -** failure. -*/ -static int segdir_delete_all(fulltext_vtab *v){ - sqlite3_stmt *s; - int rc = sql_get_statement(v, SEGDIR_DELETE_ALL_STMT, &s); - if( rc!=SQLITE_OK ) return rc; - - rc = sql_single_step(s); - if( rc!=SQLITE_OK ) return rc; - - rc = sql_get_statement(v, BLOCK_DELETE_ALL_STMT, &s); - if( rc!=SQLITE_OK ) return rc; - - return sql_single_step(s); -} -#endif - -/* Returns SQLITE_OK with *pnSegments set to the number of entries in -** %_segdir and *piMaxLevel set to the highest level which has a -** segment. Otherwise returns the SQLite error which caused failure. -*/ -static int segdir_count(fulltext_vtab *v, int *pnSegments, int *piMaxLevel){ - sqlite3_stmt *s; - int rc = sql_get_statement(v, SEGDIR_COUNT_STMT, &s); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_step(s); - /* TODO(shess): This case should not be possible? Should stronger - ** measures be taken if it happens? - */ - if( rc==SQLITE_DONE ){ - *pnSegments = 0; - *piMaxLevel = 0; - return SQLITE_OK; - } - if( rc!=SQLITE_ROW ) return rc; - - *pnSegments = sqlite3_column_int(s, 0); - *piMaxLevel = sqlite3_column_int(s, 1); - - /* We expect only one row. We must execute another sqlite3_step() - * to complete the iteration; otherwise the table will remain locked. */ - rc = sqlite3_step(s); - if( rc==SQLITE_DONE ) return SQLITE_OK; - if( rc==SQLITE_ROW ) return SQLITE_ERROR; - return rc; -} - -/* TODO(shess) clearPendingTerms() is far down the file because -** writeZeroSegment() is far down the file because LeafWriter is far -** down the file. Consider refactoring the code to move the non-vtab -** code above the vtab code so that we don't need this forward -** reference. -*/ -static int clearPendingTerms(fulltext_vtab *v); - -/* -** Free the memory used to contain a fulltext_vtab structure. -*/ -static void fulltext_vtab_destroy(fulltext_vtab *v){ - int iStmt, i; - - FTSTRACE(("FTS3 Destroy %p\n", v)); - for( iStmt=0; iStmtpFulltextStatements[iStmt]!=NULL ){ - sqlite3_finalize(v->pFulltextStatements[iStmt]); - v->pFulltextStatements[iStmt] = NULL; - } - } - - for( i=0; ipLeafSelectStmts[i]!=NULL ){ - sqlite3_finalize(v->pLeafSelectStmts[i]); - v->pLeafSelectStmts[i] = NULL; - } - } - - if( v->parser!=NULL ){ - tracker_parser_free (v->parser); - v->parser = NULL; - } - - clearPendingTerms(v); - - sqlite3_free(v); -} - -#if 0 -/* -** Token types for parsing the arguments to xConnect or xCreate. -*/ -#define TOKEN_EOF 0 /* End of file */ -#define TOKEN_SPACE 1 /* Any kind of whitespace */ -#define TOKEN_ID 2 /* An identifier */ -#define TOKEN_STRING 3 /* A string literal */ -#define TOKEN_PUNCT 4 /* A single punctuation character */ - -/* -** If X is a character that can be used in an identifier then -** ftsIdChar(X) will be true. Otherwise it is false. -** -** For ASCII, any character with the high-order bit set is -** allowed in an identifier. For 7-bit characters, -** isFtsIdChar[X] must be 1. -** -** Ticket #1066. the SQL standard does not allow '$' in the -** middle of identfiers. But many SQL implementations do. -** SQLite will allow '$' in identifiers for compatibility. -** But the feature is undocumented. -*/ -static const char isFtsIdChar[] = { -/* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 2x */ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* 3x */ - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 4x */ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, /* 5x */ - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 6x */ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, /* 7x */ -}; -#define ftsIdChar(C) (((c=C)&0x80)!=0 || (c>0x1f && isFtsIdChar[c-0x20])) - - -/* -** Return the length of the token that begins at z[0]. -** Store the token type in *tokenType before returning. -*/ -static int ftsGetToken(const char *z, int *tokenType){ - int i, c; - switch( *z ){ - case 0: { - *tokenType = TOKEN_EOF; - return 0; - } - case ' ': case '\t': case '\n': case '\f': case '\r': { - for(i=1; safe_isspace(z[i]); i++){} - *tokenType = TOKEN_SPACE; - return i; - } - case '`': - case '\'': - case '"': { - int delim = z[0]; - for(i=1; (c=z[i])!=0; i++){ - if( c==delim ){ - if( z[i+1]==delim ){ - i++; - }else{ - break; - } - } - } - *tokenType = TOKEN_STRING; - return i + (c!=0); - } - case '[': { - for(i=1, c=z[0]; c!=']' && (c=z[i])!=0; i++){} - *tokenType = TOKEN_ID; - return i; - } - default: { - if( !ftsIdChar(*z) ){ - break; - } - for(i=1; ftsIdChar(z[i]); i++){} - *tokenType = TOKEN_ID; - return i; - } - } - *tokenType = TOKEN_PUNCT; - return 1; -} - -/* -** A token extracted from a string is an instance of the following -** structure. -*/ -typedef struct FtsToken { - const char *z; /* Pointer to token text. Not '\000' terminated */ - short int n; /* Length of the token text in bytes. */ -} FtsToken; - -/* -** Given a input string (which is really one of the argv[] parameters -** passed into xConnect or xCreate) split the string up into tokens. -** Return an array of pointers to '\000' terminated strings, one string -** for each non-whitespace token. -** -** The returned array is terminated by a single NULL pointer. -** -** Space to hold the returned array is obtained from a single -** malloc and should be freed by passing the return value to free(). -** The individual strings within the token list are all a part of -** the single memory allocation and will all be freed at once. -*/ -static char **tokenizeString(const char *z, int *pnToken){ - int nToken = 0; - FtsToken *aToken = sqlite3_malloc( strlen(z) * sizeof(aToken[0]) ); - int n = 1; - int e, i; - int totalSize = 0; - char **azToken; - char *zCopy; - while( n>0 ){ - n = ftsGetToken(z, &e); - if( e!=TOKEN_SPACE ){ - aToken[nToken].z = z; - aToken[nToken].n = n; - nToken++; - totalSize += n+1; - } - z += n; - } - azToken = (char**)sqlite3_malloc( nToken*sizeof(char*) + totalSize ); - zCopy = (char*)&azToken[nToken]; - nToken--; - for(i=0; i=0 ){ - azIn[j] = azIn[i]; - } - j++; - } - } - azIn[j] = 0; - } -} - - -/* -** Find the first alphanumeric token in the string zIn. Null-terminate -** this token. Remove any quotation marks. And return a pointer to -** the result. -*/ -static char *firstToken(char *zIn, char **pzTail){ - int n, ttype; - while(1){ - n = ftsGetToken(zIn, &ttype); - if( ttype==TOKEN_SPACE ){ - zIn += n; - }else if( ttype==TOKEN_EOF ){ - *pzTail = zIn; - return 0; - }else{ - zIn[n] = 0; - *pzTail = &zIn[1]; - dequoteString(zIn); - return zIn; - } - } - /*NOTREACHED*/ -} - -/* Return true if... -** -** * s begins with the string t, ignoring case -** * s is longer than t -** * The first character of s beyond t is not a alphanumeric -** -** Ignore leading space in *s. -** -** To put it another way, return true if the first token of -** s[] is t[]. -*/ -static int startsWith(const char *s, const char *t){ - while( safe_isspace(*s) ){ s++; } - while( *t ){ - if( safe_tolower(*s++)!=safe_tolower(*t++) ) return 0; - } - return *s!='_' && !safe_isalnum(*s); -} - -/* -** An instance of this structure defines the "spec" of a -** full text index. This structure is populated by parseSpec -** and use by fulltextConnect and fulltextCreate. -*/ -typedef struct TableSpec { - const char *zDb; /* Logical database name */ - const char *zName; /* Name of the full-text index */ - int nColumn; /* Number of columns to be indexed */ - char **azColumn; /* Original names of columns to be indexed */ - char **azContentColumn; /* Column names for %_content */ - char **azTokenizer; /* Name of tokenizer and its arguments */ -} TableSpec; - -/* -** Reclaim all of the memory used by a TableSpec -*/ -static void clearTableSpec(TableSpec *p) { - sqlite3_free(p->azColumn); - sqlite3_free(p->azContentColumn); - sqlite3_free(p->azTokenizer); -} - -/* Parse a CREATE VIRTUAL TABLE statement, which looks like this: - * - * CREATE VIRTUAL TABLE email - * USING fts3(subject, body, tokenize mytokenizer(myarg)) - * - * We return parsed information in a TableSpec structure. - * - */ -static int parseSpec(TableSpec *pSpec, int argc, const char *const*argv, - char**pzErr){ - int i, n; - char *z, *zDummy; - char **azArg; - const char *zTokenizer = 0; /* argv[] entry describing the tokenizer */ - - assert( argc>=3 ); - /* Current interface: - ** argv[0] - module name - ** argv[1] - database name - ** argv[2] - table name - ** argv[3..] - columns, optionally followed by tokenizer specification - ** and snippet delimiters specification. - */ - - /* Make a copy of the complete argv[][] array in a single allocation. - ** The argv[][] array is read-only and transient. We can write to the - ** copy in order to modify things and the copy is persistent. - */ - CLEAR(pSpec); - for(i=n=0; izDb = azArg[1]; - pSpec->zName = azArg[2]; - pSpec->nColumn = 0; - pSpec->azColumn = azArg; - zTokenizer = "tokenize simple"; - for(i=3; inColumn] = firstToken(azArg[i], &zDummy); - pSpec->nColumn++; - } - } - if( pSpec->nColumn==0 ){ - azArg[0] = (char *) "content"; - pSpec->nColumn = 1; - } - - /* - ** Construct the list of content column names. - ** - ** Each content column name will be of the form cNNAAAA - ** where NN is the column number and AAAA is the sanitized - ** column name. "sanitized" means that special characters are - ** converted to "_". The cNN prefix guarantees that all column - ** names are unique. - ** - ** The AAAA suffix is not strictly necessary. It is included - ** for the convenience of people who might examine the generated - ** %_content table and wonder what the columns are used for. - */ - pSpec->azContentColumn = sqlite3_malloc( pSpec->nColumn * sizeof(char *) ); - if( pSpec->azContentColumn==0 ){ - clearTableSpec(pSpec); - return SQLITE_NOMEM; - } - for(i=0; inColumn; i++){ - char *p; - pSpec->azContentColumn[i] = sqlite3_mprintf("c%d%s", i, azArg[i]); - for (p = pSpec->azContentColumn[i]; *p ; ++p) { - if( !safe_isalnum(*p) ) *p = '_'; - } - } - - /* - ** Parse the tokenizer specification string. - */ - pSpec->azTokenizer = tokenizeString(zTokenizer, &n); - tokenListToIdList(pSpec->azTokenizer); - - return SQLITE_OK; -} -#endif - -/* -** Generate a CREATE TABLE statement that describes the schema of -** the virtual table. Return a pointer to this schema string. -** -** Space is obtained from sqlite3_mprintf() and should be freed -** using sqlite3_free(). -*/ -static char *fulltextSchema( - int nColumn, /* Number of columns */ - const char *const* azColumn, /* List of columns */ - const char *zTableName /* Name of the table */ -){ - int i; - char *zSchema, *zNext; - const char *zSep = "("; - zSchema = sqlite3_mprintf("CREATE TABLE x"); - for(i=0; ibase */ - v->db = db; - v->zDb = zDb; - v->zName = zName; - v->nColumn = 0; - -/* comment out tokenizer stuff - if( spec->azTokenizer==0 ){ - return SQLITE_NOMEM; - } - - zTok = spec->azTokenizer[0]; - if( !zTok ){ - zTok = "simple"; - } - nTok = strlen(zTok)+1; - - m = (sqlite3_tokenizer_module *)sqlite3Fts3HashFind(pHash, zTok, nTok); - if( !m ){ - *pzErr = sqlite3_mprintf("unknown tokenizer: %s", spec->azTokenizer[0]); - rc = SQLITE_ERROR; - goto err; - } - - for(n=0; spec->azTokenizer[n]; n++){} - if( n ){ - rc = m->xCreate(n-1, (const char*const*)&spec->azTokenizer[1], - &v->pTokenizer); - }else{ - rc = m->xCreate(0, 0, &v->pTokenizer); - } - if( rc!=SQLITE_OK ) goto err; - */ - - - /* set up our parser */ - - config = tracker_fts_config_new (); - - language = tracker_language_new (NULL); - - v->min_word_length = tracker_fts_config_get_min_word_length (config); - v->max_word_length = tracker_fts_config_get_max_word_length (config); - v->enable_stemmer = tracker_fts_config_get_enable_stemmer (config); - v->enable_unaccent = tracker_fts_config_get_enable_unaccent (config); - v->ignore_numbers = tracker_fts_config_get_ignore_numbers (config); - - /* disable stop words if TRACKER_FTS_STOP_WORDS is set to 0 - used by tests - * otherwise, get value from the conf file */ - v->ignore_stop_words = (g_strcmp0 (g_getenv ("TRACKER_FTS_STOP_WORDS"), "0") == 0 ? - FALSE : tracker_fts_config_get_ignore_stop_words (config)); - - v->max_words = tracker_fts_config_get_max_words_to_index (config); - - v->parser = tracker_parser_new (language); - - g_object_unref (language); - - - memset(v->pFulltextStatements, 0, sizeof(v->pFulltextStatements)); - - /* Indicate that the buffer is not live. */ - v->nPendingData = -1; - - FTSTRACE(("FTS3 Connect %p\n", v)); - - /* Config no longer needed */ - g_object_unref (config); - - return v; -} - -static int constructSqliteVtab( - sqlite3 *db, /* The SQLite database connection */ - void *pAux, - const char *zDb, - const char *zName, - sqlite3_vtab **ppVTab, /* Write the resulting vtab structure here */ - char **pzErr /* Write any error message here */ -){ - int rc; - fulltext_sqlite_vtab *v = 0; - char *schema; - - v = sqlite3_malloc(sizeof(fulltext_sqlite_vtab)); - if( v==0 ) return SQLITE_NOMEM; - CLEAR(v); - - v->fulltext = pAux; - - schema = fulltextSchema(0, NULL, - zName); - rc = sqlite3_declare_vtab(db, schema); - sqlite3_free(schema); - if( rc!=SQLITE_OK ) goto err; - - *ppVTab = (sqlite3_vtab *) v; - FTSTRACE(("FTS3 Connect %p\n", v)); - - return rc; - -err: - sqlite3_free(v); - return rc; -} - -static int fulltextConnect( - sqlite3 *db, - void *pAux, - int argc, const char *const*argv, - sqlite3_vtab **ppVTab, - char **pzErr -){ - const char *zDb, *zName; - - zDb = argv[1]; - zName = argv[2]; - - return constructSqliteVtab(db, pAux, zDb, zName, ppVTab, pzErr); -} - -/* The %_content table holds the text of each document, with -** the docid column exposed as the SQLite rowid for the table. -*/ -/* TODO(shess) This comment needs elaboration to match the updated -** code. Work it into the top-of-file comment at that time. -*/ -static int createTables(sqlite3 *db, const char *zDb, const char *zName) { - int rc; - StringBuffer schema; - FTSTRACE(("FTS3 Create\n")); - - initStringBuffer(&schema); - append(&schema, "CREATE TABLE %_content("); - append(&schema, " docid INTEGER PRIMARY KEY"); - append(&schema, ")"); - rc = sql_exec(db, zDb, zName, stringBufferData(&schema)); - stringBufferDestroy(&schema); - if( rc!=SQLITE_OK ) goto out; - - rc = sql_exec(db, zDb, zName, - "create table %_segments(" - " blockid INTEGER PRIMARY KEY," - " block blob" - ");" - ); - if( rc!=SQLITE_OK ) goto out; - - rc = sql_exec(db, zDb, zName, - "create table %_segdir(" - " level integer," - " idx integer," - " start_block integer," - " leaves_end_block integer," - " end_block integer," - " root blob," - " primary key(level, idx)" - ");"); - if( rc!=SQLITE_OK ) goto out; - -out: - return rc; -} - -static int fulltextCreate(sqlite3 *db, void *pAux, - int argc, const char * const *argv, - sqlite3_vtab **ppVTab, char **pzErr){ - const char *zDb, *zName; - FTSTRACE(("FTS3 Create\n")); - - zDb = argv[1]; - zName = argv[2]; - - return constructSqliteVtab(db, pAux, zDb, zName, ppVTab, pzErr); -} - -/* Decide how to handle an SQL query. */ -static int fulltextBestIndex(sqlite3_vtab *pVTab, sqlite3_index_info *pInfo){ - fulltext_vtab *v = get_fulltext_vtab (pVTab); - int i; - int iCons = -1; /* Index of constraint to use */ - FTSTRACE(("FTS3 BestIndex\n")); - - pInfo->idxNum = QUERY_GENERIC; - pInfo->estimatedCost = 500000; - for(i=0; inConstraint; ++i){ - const struct sqlite3_index_constraint *pConstraint; - pConstraint = &pInfo->aConstraint[i]; - if( pConstraint->usable ) { - if( (pConstraint->iColumn==-1 || pConstraint->iColumn==v->nColumn+1) && - pConstraint->op==SQLITE_INDEX_CONSTRAINT_EQ ){ - pInfo->idxNum = QUERY_DOCID; /* lookup by docid */ - pInfo->estimatedCost = 1.0; - iCons = i; - FTSTRACE(("FTS3 QUERY_DOCID\n")); - } else if( pConstraint->iColumn>=0 && pConstraint->iColumn<=v->nColumn && - pConstraint->op==SQLITE_INDEX_CONSTRAINT_MATCH ){ - /* full-text search */ - pInfo->idxNum = QUERY_FULLTEXT + pConstraint->iColumn; - pInfo->estimatedCost = 2.0; - iCons = i; - FTSTRACE(("FTS3 QUERY_FULLTEXT %d\n", pConstraint->iColumn)); - break; - } - } - } - - if( iCons>=0 ){ - pInfo->aConstraintUsage[iCons].argvIndex = 1; - pInfo->aConstraintUsage[iCons].omit = 1; - } - return SQLITE_OK; -} - -static int fulltextDisconnect(sqlite3_vtab *pVTab){ - FTSTRACE(("FTS3 Disconnect %p\n", pVTab)); - sqlite3_free (pVTab); - return SQLITE_OK; -} - -static int fulltextDestroy(sqlite3_vtab *pVTab){ - fulltext_vtab *v = get_fulltext_vtab (pVTab); - int rc; - - FTSTRACE(("FTS3 Destroy %p\n", pVTab)); - rc = sql_exec(v->db, v->zDb, v->zName, - "drop table if exists %_content;" - "drop table if exists %_segments;" - "drop table if exists %_segdir;" - ); - if( rc!=SQLITE_OK ) return rc; - - sqlite3_free (pVTab); - return SQLITE_OK; -} - -static int fulltextOpen(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor){ - fulltext_cursor *c; - - /* fulltext_vtab *v = (fulltext_vtab *)pVTab; */ - c = (fulltext_cursor *) sqlite3_malloc(sizeof(fulltext_cursor)); - if( c ){ - memset(c, 0, sizeof(fulltext_cursor)); - /* sqlite will initialize c->base */ - *ppCursor = &c->base; - - c->offsets = g_string_new (""); - - FTSTRACE(("FTS3 Open %p: %p\n", pVTab, c)); - return SQLITE_OK; - }else{ - return SQLITE_NOMEM; - } -} - - -/* Free all of the dynamically allocated memory held by *q -*/ -static void queryClear(Query *q){ - int i; - for(i = 0; i < q->nTerms; ++i){ - sqlite3_free(q->pTerms[i].pTerm); - } - sqlite3_free(q->pTerms); - CLEAR(q); -} - -/* Free all of the dynamically allocated memory held by the -** Snippet -*/ -static void snippetClear(Snippet *p){ - sqlite3_free(p->aMatch); - sqlite3_free(p->zOffset); - sqlite3_free(p->zSnippet); - CLEAR(p); -} -/* -** Append a single entry to the p->aMatch[] log. -*/ -static void snippetAppendMatch( - Snippet *p, /* Append the entry to this snippet */ - int iCol, int iTerm, /* The column and query term */ - int iToken, /* Matching token in document */ - int iStart, int nByte /* Offset and size of the match */ -){ - int i; - struct snippetMatch *pMatch; - if( p->nMatch+1>=p->nAlloc ){ - p->nAlloc = p->nAlloc*2 + 10; - p->aMatch = sqlite3_realloc(p->aMatch, p->nAlloc*sizeof(p->aMatch[0]) ); - if( p->aMatch==0 ){ - p->nMatch = 0; - p->nAlloc = 0; - return; - } - } - i = p->nMatch++; - pMatch = &p->aMatch[i]; - pMatch->iCol = iCol; - pMatch->iTerm = iTerm; - pMatch->iToken = iToken; - pMatch->iStart = iStart; - pMatch->nByte = nByte; -} - - -/* -** Sizing information for the circular buffer used in snippetOffsetsOfColumn() -*/ -#define FTS3_ROTOR_SZ (32) -#define FTS3_ROTOR_MASK (FTS3_ROTOR_SZ-1) - -/* -** Add entries to pSnippet->aMatch[] for every match that occurs against -** document zDoc[0..nDoc-1] which is stored in column iColumn. -*/ -static void snippetOffsetsOfColumn( - Query *pQuery, - Snippet *pSnippet, - int iColumn, - const char *zDoc, - int nDoc -#ifdef STORE_CATEGORY - , int position -#endif -){ - - fulltext_vtab *pVtab; /* The full text index */ - int nColumn; /* Number of columns in the index */ - const QueryTerm *aTerm; /* Query string terms */ - int nTerm; /* Number of query string terms */ - int i, j; /* Loop counters */ - unsigned int match, prevMatch; /* Phrase search bitmasks */ - const char *zToken; /* Next token from the tokenizer */ - int nToken; /* Size of zToken */ - int iBegin, iEnd, iPos; /* Offsets of beginning and end */ - gboolean stop_word; - - /* The following variables keep a circular buffer of the last - ** few tokens */ - unsigned int iRotor = 0; /* Index of current token */ - int iRotorBegin[FTS3_ROTOR_SZ]; /* Beginning offset of token */ - int iRotorLen[FTS3_ROTOR_SZ]; /* Length of token */ - int nWords; - - pVtab = pQuery->pFts; - nColumn = pVtab->nColumn; - - FTSTRACE (("FTS parsing started for Snippets, limiting '%d' bytes to '%d' words", - nDoc, pVtab->max_words)); - - tracker_parser_reset (pVtab->parser, - zDoc, - nDoc, - pVtab->max_word_length, - pVtab->enable_stemmer, - pVtab->enable_unaccent, - pVtab->ignore_stop_words, - TRUE, - pVtab->ignore_numbers); - - aTerm = pQuery->pTerms; - nTerm = pQuery->nTerms; - - if( nTerm>=FTS3_ROTOR_SZ ){ - nTerm = FTS3_ROTOR_SZ - 1; - } - - prevMatch = 0; - nWords = 0; - while(nWords < pVtab->max_words){ -// rc = pTModule->xNext(pTCursor, &zToken, &nToken, &iBegin, &iEnd, &iPos); - - - zToken = tracker_parser_next (pVtab->parser, - &iPos, - &iBegin, - &iEnd, - &stop_word, - &nToken); - - if (!zToken) break; - - if (pVtab->ignore_stop_words && stop_word) { - continue; - } - - nWords++; - - iRotorBegin[iRotor&FTS3_ROTOR_MASK] = iBegin; - iRotorLen[iRotor&FTS3_ROTOR_MASK] = iEnd-iBegin; - match = 0; - for(i=0; i=0 && iColnToken ) continue; - if( !aTerm[i].isPrefix && aTerm[i].nTerm1 && (prevMatch & (1<=0; j--){ - int k = (iRotor-j) & FTS3_ROTOR_MASK; - snippetAppendMatch(pSnippet, iColumn, i-j, iPos-j, - iRotorBegin[k], iRotorLen[k]); - } - } - } - prevMatch = match<<1; - iRotor++; - } -// pTModule->xClose(pTCursor); -} - -/* -** Remove entries from the pSnippet structure to account for the NEAR -** operator. When this is called, pSnippet contains the list of token -** offsets produced by treating all NEAR operators as AND operators. -** This function removes any entries that should not be present after -** accounting for the NEAR restriction. For example, if the queried -** document is: -** -** "A B C D E A" -** -** and the query is: -** -** A NEAR/0 E -** -** then when this function is called the Snippet contains token offsets -** 0, 4 and 5. This function removes the "0" entry (because the first A -** is not near enough to an E). -*/ -static void trimSnippetOffsetsForNear(Query *pQuery, Snippet *pSnippet){ - int ii; - int iDir = 1; - - while(iDir>-2) { - assert( iDir==1 || iDir==-1 ); - for(ii=0; iinMatch; ii++){ - int jj; - int nNear; - struct snippetMatch *pMatch = &pSnippet->aMatch[ii]; - QueryTerm *pQueryTerm = &pQuery->pTerms[pMatch->iTerm]; - - if( (pMatch->iTerm+iDir)<0 - || (pMatch->iTerm+iDir)>=pQuery->nTerms - ){ - continue; - } - - nNear = pQueryTerm->nNear; - if( iDir<0 ){ - nNear = pQueryTerm[-1].nNear; - } - - if( pMatch->iTerm>=0 && nNear ){ - int isOk = 0; - int iNextTerm = pMatch->iTerm+iDir; - int iPrevTerm = iNextTerm; - - int iEndToken; - int iStartToken; - - if( iDir<0 ){ - int nPhrase = 1; - iStartToken = pMatch->iToken; - while( (pMatch->iTerm+nPhrase)nTerms - && pQuery->pTerms[pMatch->iTerm+nPhrase].iPhrase>1 - ){ - nPhrase++; - } - iEndToken = iStartToken + nPhrase - 1; - }else{ - iEndToken = pMatch->iToken; - iStartToken = pMatch->iToken+1-pQueryTerm->iPhrase; - } - - while( pQuery->pTerms[iNextTerm].iPhrase>1 ){ - iNextTerm--; - } - while( (iPrevTerm+1)nTerms && - pQuery->pTerms[iPrevTerm+1].iPhrase>1 - ){ - iPrevTerm++; - } - - for(jj=0; isOk==0 && jjnMatch; jj++){ - struct snippetMatch *p = &pSnippet->aMatch[jj]; - if( p->iCol==pMatch->iCol && (( - p->iTerm==iNextTerm && - p->iToken>iEndToken && - p->iToken<=iEndToken+nNear - ) || ( - p->iTerm==iPrevTerm && - p->iTokeniToken>=iStartToken-nNear - ))){ - isOk = 1; - } - } - if( !isOk ){ - for(jj=1-pQueryTerm->iPhrase; jj<=0; jj++){ - pMatch[jj].iTerm = -1; - } - ii = -1; - iDir = 1; - } - } - } - iDir -= 2; - } -} - - - -/* -** Compute all offsets for the current row of the query. -** If the offsets have already been computed, this routine is a no-op. -*/ -static void snippetAllOffsets(fulltext_cursor *p){ - int iColumn, i; - fulltext_vtab *pFts; - -#ifndef STORE_CATEGORY - int iFirst, iLast; - int nColumn; -#endif - - if( p->snippet.nMatch ) return; - if( p->q.nTerms==0 ) return; - pFts = p->q.pFts; - -#ifdef STORE_CATEGORY - PLReader plReader; - int col_array[255]; - gpointer pos_array[255]; - - for (i=0; i<255; i++) { - col_array[i] = 0; - pos_array[i] = NULL; - } - - - int iPos = 0; - - if (dlrAtEnd (&p->reader)) return; - - plrInit(&plReader, &p->reader); - - if (plrAtEnd(&plReader)) return; - - iColumn = -1; - - for ( ; !plrAtEnd(&plReader); plrStep(&plReader) ){ - - if (plrColumn (&plReader) != iColumn) { - - iColumn = plrColumn(&plReader); - col_array[iColumn] += 1; - } - - iPos = plrPosition(&plReader); - GSList *l = pos_array[iColumn]; - l = g_slist_prepend (l, GINT_TO_POINTER (iPos)); - } - - plrEndAndDestroy(&plReader); - - - /* get the column with most hits */ - int hit_column = 0; - int hit_column_count = col_array[0]; - - /*bias field id 0 more as its the main content field */ - // if (hit_column_count > 0) hit_column_count++; - - for (i=1; i<255; i++) { - if (col_array [i] > hit_column_count) { - hit_column = i; - hit_column_count =col_array[i]; - } - - g_slist_free (pos_array[i]); - } - - - const char *zDoc; - int nDoc; - zDoc = (const char*)sqlite3_column_text(p->pStmt, hit_column+1); - nDoc = sqlite3_column_bytes(p->pStmt, hit_column+1); - snippetOffsetsOfColumn(&p->q, &p->snippet, hit_column, zDoc, nDoc, iPos); - - -#else - - nColumn = pFts->nColumn; - iColumn = (p->iCursorType - QUERY_FULLTEXT); - if( iColumn<0 || iColumn>=nColumn ){ - iFirst = 0; - iLast = nColumn-1; - }else{ - iFirst = iColumn; - iLast = iColumn; - } - - - for(i=iFirst; i<=iLast; i++){ - const char *zDoc; - int nDoc; - zDoc = (const char*)sqlite3_column_text(p->pStmt, i+1); - nDoc = sqlite3_column_bytes(p->pStmt, i+1); - snippetOffsetsOfColumn(&p->q, &p->snippet, i, zDoc, nDoc); - } -#endif - - trimSnippetOffsetsForNear(&p->q, &p->snippet); -} - -#if 0 -/* -** Convert the information in the aMatch[] array of the snippet -** into the string zOffset[0..nOffset-1]. This string is used as -** the return of the SQL offsets() function. -*/ -static void snippetOffsetText(Snippet *p){ - int i; - int cnt = 0; - StringBuffer sb; - char zBuf[200]; - if( p->zOffset ) return; - initStringBuffer(&sb); - for(i=0; inMatch; i++){ - struct snippetMatch *pMatch = &p->aMatch[i]; - if( pMatch->iTerm>=0 ){ - /* If snippetMatch.iTerm is less than 0, then the match was - ** discarded as part of processing the NEAR operator (see the - ** trimSnippetOffsetsForNear() function for details). Ignore - ** it in this case - */ - zBuf[0] = ' '; - sqlite3_snprintf(sizeof(zBuf)-1, &zBuf[cnt>0], "%d %d %d %d", - pMatch->iCol, pMatch->iTerm, pMatch->iStart, pMatch->nByte); - append(&sb, zBuf); - cnt++; - } - } - p->zOffset = stringBufferData(&sb); - p->nOffset = stringBufferLength(&sb); -} -#endif - -/* -** zDoc[0..nDoc-1] is phrase of text. aMatch[0..nMatch-1] are a set -** of matching words some of which might be in zDoc. zDoc is column -** number iCol. -** -** iBreak is suggested spot in zDoc where we could begin or end an -** excerpt. Return a value similar to iBreak but possibly adjusted -** to be a little left or right so that the break point is better. -*/ -static int wordBoundary( - int iBreak, /* The suggested break point */ - const char *zDoc, /* Document text */ - int nDoc, /* Number of bytes in zDoc[] */ - struct snippetMatch *aMatch, /* Matching words */ - int nMatch, /* Number of entries in aMatch[] */ - int iCol /* The column number for zDoc[] */ -){ - int i; - if( iBreak<=10 ){ - return 0; - } - if( iBreak>=nDoc-10 ){ - return nDoc; - } - for(i=0; i0 && aMatch[i-1].iStart+aMatch[i-1].nByte>=iBreak ){ - return aMatch[i-1].iStart; - } - } - for(i=1; i<=10; i++){ - if( safe_isspace(zDoc[iBreak-i]) ){ - return iBreak - i + 1; - } - if( safe_isspace(zDoc[iBreak+i]) ){ - return iBreak + i + 1; - } - } - return iBreak; -} - - - -/* -** Allowed values for Snippet.aMatch[].snStatus -*/ -#define SNIPPET_IGNORE 0 /* It is ok to omit this match from the snippet */ -#define SNIPPET_DESIRED 1 /* We want to include this match in the snippet */ - -/* -** Generate the text of a snippet. -*/ -static void snippetText( - fulltext_cursor *pCursor, /* The cursor we need the snippet for */ - const char *zStartMark, /* Markup to appear before each match */ - const char *zEndMark, /* Markup to appear after each match */ - const char *zEllipsis /* Ellipsis mark */ -){ - int i, j; - struct snippetMatch *aMatch; - int nMatch; - int nDesired; - StringBuffer sb; - int tailCol; - int tailOffset; - int iCol; - int nDoc; - const char *zDoc; - int iStart, iEnd; - int tailEllipsis = 0; - int iMatch; - - - sqlite3_free(pCursor->snippet.zSnippet); - pCursor->snippet.zSnippet = 0; - aMatch = pCursor->snippet.aMatch; - nMatch = pCursor->snippet.nMatch; - initStringBuffer(&sb); - - for(i=0; iq.nTerms; i++){ - for(j=0; j0; i++){ - if( aMatch[i].snStatus!=SNIPPET_DESIRED ) continue; - nDesired--; - iCol = aMatch[i].iCol; - zDoc = (const char*)sqlite3_column_text(pCursor->pStmt, iCol+1); - nDoc = sqlite3_column_bytes(pCursor->pStmt, iCol+1); - iStart = aMatch[i].iStart - 40; - iStart = wordBoundary(iStart, zDoc, nDoc, aMatch, nMatch, iCol); - if( iStart<=10 ){ - iStart = 0; - } - if( iCol==tailCol && iStart<=tailOffset+20 ){ - iStart = tailOffset; - } - if( (iCol!=tailCol && tailCol>=0) || iStart!=tailOffset ){ - trimWhiteSpace(&sb); - appendWhiteSpace(&sb); - append(&sb, zEllipsis); - appendWhiteSpace(&sb); - } - iEnd = aMatch[i].iStart + aMatch[i].nByte + 40; - iEnd = wordBoundary(iEnd, zDoc, nDoc, aMatch, nMatch, iCol); - if( iEnd>=nDoc-10 ){ - iEnd = nDoc; - tailEllipsis = 0; - }else{ - tailEllipsis = 1; - } - while( iMatchsnippet.zSnippet = stringBufferData(&sb); - pCursor->snippet.nSnippet = stringBufferLength(&sb); -} - - -/* -** Close the cursor. For additional information see the documentation -** on the xClose method of the virtual table interface. -*/ -static int fulltextClose(sqlite3_vtab_cursor *pCursor){ - fulltext_cursor *c = (fulltext_cursor *) pCursor; - FTSTRACE(("FTS3 Close %p\n", c)); - sqlite3_finalize(c->pStmt); - queryClear(&c->q); - snippetClear(&c->snippet); - g_string_free (c->offsets, TRUE); - if( c->result.nData!=0 ) dlrDestroy(&c->reader); - dataBufferDestroy(&c->result); - sqlite3_free(c); - return SQLITE_OK; -} - -static int fulltextNext(sqlite3_vtab_cursor *pCursor){ - fulltext_cursor *c = (fulltext_cursor *) pCursor; - fulltext_vtab *v = cursor_vtab (c); - int rc; - PLReader plReader; - gboolean first_pos = TRUE; - - FTSTRACE(("FTS3 Next %p\n", pCursor)); - snippetClear(&c->snippet); - if( c->iCursorType < QUERY_FULLTEXT ){ - /* TODO(shess) Handle SQLITE_SCHEMA AND SQLITE_BUSY. */ - rc = sqlite3_step(c->pStmt); - switch( rc ){ - case SQLITE_ROW: - c->eof = 0; - return SQLITE_OK; - case SQLITE_DONE: - c->eof = 1; - return SQLITE_OK; - default: - c->eof = 1; - return rc; - } - } else { /* full-text query */ - rc = sqlite3_reset(c->pStmt); - if( rc!=SQLITE_OK ) return rc; - - if( c->result.nData==0 || dlrAtEnd(&c->reader) ){ - c->eof = 1; - return SQLITE_OK; - } - c->currentDocid = dlrDocid(&c->reader); -#ifdef STORE_CATEGORY - c->currentCatid = dlrCatid(&c->reader); -#endif - - /* (tracker) read position offsets here */ - - - c->offsets = g_string_assign (c->offsets, ""); - c->rank = 0; - - plrInit(&plReader, &c->reader); - - - for ( ; !plrAtEnd(&plReader); plrStep(&plReader) ){ - gchar *uri = NULL; - int col = plrColumn (&plReader); - - c->rank += get_metadata_weight (v, col, &uri); - - if (uri && first_pos) { - g_string_append_printf (c->offsets, "%s,%d", uri, plrPosition (&plReader)); - first_pos = FALSE; - } else if (uri) { - g_string_append_printf (c->offsets, ",%s,%d", uri, plrPosition (&plReader)); - } else { - g_warning ("Type '%d' for FTS offset doesn't exist in ontology", col); - } - - g_free (uri); - } - - plrDestroy(&plReader); - - dlrStep(&c->reader); - - c->eof = 0; - return SQLITE_OK; - } -} - - -/* TODO(shess) If we pushed LeafReader to the top of the file, or to -** another file, term_select() could be pushed above -** docListOfTerm(). -*/ -static int termSelect(fulltext_vtab *v, int iColumn, - const char *pTerm, int nTerm, int isPrefix, - DocListType iType, DataBuffer *out); - -/* -** Return a DocList corresponding to the phrase *pPhrase. -** -** The resulting DL_DOCIDS doclist is stored in pResult, which is -** overwritten. -*/ -static int docListOfTerm( - fulltext_vtab *v, /* The full text index */ - int iColumn, /* column to restrict to. No restriction if >=nColumn */ - QueryTerm *pQTerm, /* Term we are looking for, or 1st term of a phrase */ - DataBuffer *pResult /* Write the result here */ -){ - DataBuffer left, right, new; - int i, rc; - - /* No phrase search if no position info. */ - assert( pQTerm->nPhrase==0 || DL_DEFAULT!=DL_DOCIDS ); - - /* This code should never be called with buffered updates. */ - assert( v->nPendingData<0 ); - - dataBufferInit(&left, 0); - - #ifdef RANK - rc = termSelect(v, iColumn, pQTerm->pTerm, pQTerm->nTerm, pQTerm->isPrefix, - DL_POSITIONS, &left); - #else - rc = termSelect(v, iColumn, pQTerm->pTerm, pQTerm->nTerm, pQTerm->isPrefix, - (0nPhrase ? DL_POSITIONS : DL_DOCIDS), &left); - #endif - - if( rc ) return rc; - for(i=1; i<=pQTerm->nPhrase && left.nData>0; i++){ - /* If this token is connected to the next by a NEAR operator, and - ** the next token is the start of a phrase, then set nPhraseRight - ** to the number of tokens in the phrase. Otherwise leave it at 1. - */ - int nPhraseRight = 1; - while( (i+nPhraseRight)<=pQTerm->nPhrase - && pQTerm[i+nPhraseRight].nNear==0 - ){ - nPhraseRight++; - } - - dataBufferInit(&right, 0); - rc = termSelect(v, iColumn, pQTerm[i].pTerm, pQTerm[i].nTerm, - pQTerm[i].isPrefix, DL_POSITIONS, &right); - if( rc ){ - dataBufferDestroy(&left); - return rc; - } - dataBufferInit(&new, 0); - - #ifdef RANK - docListPhraseMerge(left.pData, left.nData, right.pData, right.nData, - pQTerm[i-1].nNear, pQTerm[i-1].iPhrase + nPhraseRight, - DL_POSITIONS, - &new, i); - - #else - docListPhraseMerge(left.pData, left.nData, right.pData, right.nData, - pQTerm[i-1].nNear, pQTerm[i-1].iPhrase + nPhraseRight, - ((inPhrase) ? DL_POSITIONS : DL_DOCIDS), - &new, i); - - #endif - dataBufferDestroy(&left); - dataBufferDestroy(&right); - left = new; - } - *pResult = left; - return SQLITE_OK; -} - -/* Add a new term pTerm[0..nTerm-1] to the query *q. -*/ -static void queryAdd(Query *q, const char *pTerm, int nTerm){ - QueryTerm *t; - ++q->nTerms; - q->pTerms = sqlite3_realloc(q->pTerms, q->nTerms * sizeof(q->pTerms[0])); - if( q->pTerms==0 ){ - q->nTerms = 0; - return; - } - t = &q->pTerms[q->nTerms - 1]; - CLEAR(t); - t->pTerm = sqlite3_malloc(nTerm+1); - memcpy(t->pTerm, pTerm, nTerm); - t->pTerm[nTerm] = 0; - t->nTerm = nTerm; - t->isOr = q->nextIsOr; - t->isPrefix = 0; - q->nextIsOr = 0; - t->iColumn = q->nextColumn; - q->nextColumn = q->dfltColumn; -} - -#if 0 -/* -** Check to see if the string zToken[0...nToken-1] matches any -** column name in the virtual table. If it does, -** return the zero-indexed column number. If not, return -1. -*/ -static int checkColumnSpecifier( - fulltext_vtab *pVtab, /* The virtual table */ - const char *zToken, /* Text of the token */ - int nToken /* Number of characters in the token */ -){ - int i; - for(i=0; inColumn; i++){ - if( memcmp(pVtab->azColumn[i], zToken, nToken)==0 - && pVtab->azColumn[i][nToken]==0 ){ - return i; - } - } - return -1; -} -#endif - -/* -** Parse the text at pSegment[0..nSegment-1]. Add additional terms -** to the query being assemblied in pQuery. -** -** inPhrase is true if pSegment[0..nSegement-1] is contained within -** double-quotes. If inPhrase is true, then the first term -** is marked with the number of terms in the phrase less one and -** OR and "-" syntax is ignored. If inPhrase is false, then every -** term found is marked with nPhrase=0 and OR and "-" syntax is significant. -*/ -static int tokenizeSegment( - fulltext_vtab *v, /* The tokenizer to use */ - const char *pSegment, int nSegment, /* Query expression being parsed */ - int inPhrase, /* True if within "..." */ - Query *pQuery /* Append results here */ -){ - TrackerParser *parser = v->parser; - int firstIndex = pQuery->nTerms; - int nTerm = 1; - int nWords; - int last_near_offset = -1; - - FTSTRACE (("FTS parsing started for Segments, limiting '%d' bytes to '%d' words", - nSegment, v->max_words)); - - tracker_parser_reset (parser, - pSegment, - nSegment, - v->max_word_length, - v->enable_stemmer, - v->enable_unaccent, - v->ignore_stop_words, - FALSE, - v->ignore_numbers); - - nWords = 0; - while(nWords < v->max_words){ - const char *pToken; - int nToken, iBegin, iEnd, iPos, stop_word; - - - pToken = tracker_parser_next (parser, &iPos, - &iBegin, - &iEnd, - &stop_word, - &nToken); - if (!pToken) { - break; - } - - if (last_near_offset > 0 && iEnd <= last_near_offset) { - /* Skip this word */ - continue; - } - - nWords ++; - -// printf("token being indexed is %s, pos is %d, begin is %d, end is %d and length is %d\n", pToken, iPos, iBegin, iEnd, nToken); - -#if 0 - if( !inPhrase && - pSegment[iEnd]==':') { - - int len = iEnd - iBegin; - char *field = g_strndup (pSegment + iBegin, len); - - // printf ("field is %s\n", field); - - if ((iCol = checkColumnSpecifier(pQuery->pFts, field, len))>=0 ){ - pQuery->nextColumn = iCol; - g_free (field); - continue; - } - } -#endif - - if( !inPhrase && pQuery->nTerms>0 && nToken==2 - && pToken[0] == 'o' && pToken[1] == 'r' - ){ - pQuery->nextIsOr = 1; - continue; - } - if( !inPhrase && pQuery->nTerms>0 && !pQuery->nextIsOr && nToken==4 - && pToken[0]=='n' - && pToken[1]=='e' - && pToken[2]=='a' - && pToken[3]=='r' - ){ - QueryTerm *pTerm; - - /* Make sure pQuery->pTerms is non-NULL */ - g_return_val_if_fail (pQuery->pTerms, SQLITE_ERROR); - - pTerm = &pQuery->pTerms[pQuery->nTerms-1]; - if( (iBegin+6)='0' && pSegment[iBegin+5]<='9' - ){ - pTerm->nNear = (pSegment[iBegin+5] - '0'); - nToken += 2; - if( pSegment[iBegin+6]>='0' && pSegment[iBegin+6]<='9' ){ - pTerm->nNear = pTerm->nNear * 10 + (pSegment[iBegin+6] - '0'); - nToken++; - } - - /* Set last near offset, so that any new word that comes - * after the near which ends before this last near offset is - * discarded. This is done because NEAR/10 will actually get - * split into 3 words, "NEAR", "/" and "10" */ - last_near_offset = iBegin + nToken; - } else { - pTerm->nNear = SQLITE_FTS3_DEFAULT_NEAR_PARAM; - } - pTerm->nNear++; - continue; - } - - /* If prefix search ignore the word length limit and stop words */ - if (!(iEndmin_word_length) { - continue; - } - if (v->ignore_stop_words && stop_word) { - continue; - } - } - - queryAdd(pQuery, pToken, nToken); - - /* After queryAdd, make sure pQuery->pTerms is non-NULL */ - g_return_val_if_fail (pQuery->pTerms, SQLITE_ERROR); - - if( !inPhrase && iBegin>0) { - - // printf("first char is %c, prev char is %c\n", pSegment[iBegin], pSegment[iBegin-1]); - - if (pSegment[iBegin-1]=='-' ){ - pQuery->pTerms[pQuery->nTerms-1].isNot = 1; - } - } - if( iEndpTerms[pQuery->nTerms-1].isPrefix = 1; - } - pQuery->pTerms[pQuery->nTerms-1].iPhrase = nTerm; - if( inPhrase ){ - nTerm++; - } - } - - if( inPhrase && pQuery->nTerms>firstIndex ){ - g_return_val_if_fail (pQuery->pTerms, SQLITE_ERROR); - pQuery->pTerms[firstIndex].nPhrase = pQuery->nTerms - firstIndex - 1; - } - - return SQLITE_OK; -} - -/* Parse a query string, yielding a Query object pQuery. -** -** The calling function will need to queryClear() to clean up -** the dynamically allocated memory held by pQuery. -*/ -static int parseQuery( - fulltext_vtab *v, /* The fulltext index */ - const char *zInput, /* Input text of the query string */ - int nInput, /* Size of the input text */ - int dfltColumn, /* Default column of the index to match against */ - Query *pQuery /* Write the parse results here. */ -){ - int iInput, inPhrase = 0; - - if( zInput==0 ) nInput = 0; - if( nInput<0 ) nInput = strlen(zInput); - pQuery->nTerms = 0; - pQuery->pTerms = NULL; - pQuery->nextIsOr = 0; - pQuery->nextColumn = dfltColumn; - pQuery->dfltColumn = dfltColumn; - pQuery->pFts = v; - - for(iInput=0; iInputiInput ){ - tokenizeSegment(v, zInput+iInput, i-iInput, inPhrase, - pQuery); - } - iInput = i; - if( ipTerms) { - QueryTerm *aTerm; - int ii; - - /* Modify the values of the QueryTerm.nPhrase variables to account for - ** the NEAR operator. For the purposes of QueryTerm.nPhrase, phrases - ** and tokens connected by the NEAR operator are handled as a single - ** phrase. See comments above the QueryTerm structure for details. - */ - aTerm = pQuery->pTerms; - for(ii=0; iinTerms; ii++){ - if( aTerm[ii].nNear || aTerm[ii].nPhrase ){ - while (aTerm[ii+aTerm[ii].nPhrase].nNear) { - aTerm[ii].nPhrase += (1 + aTerm[ii+aTerm[ii].nPhrase+1].nPhrase); - } - } -#if PRINT_PARSED_QUERY - g_debug ("\n" - "[Term %d] '%s' (%d)\n" - " nPhrase: %d\n" - " iPhrase: %d\n" - " iColumn: %d\n" - " nNear: %d\n" - " isOr: %s\n" - " isNot: %s\n" - " isPrefix: %s\n", - ii, aTerm[ii].pTerm, aTerm[ii].nTerm, - aTerm[ii].nPhrase, - aTerm[ii].iPhrase, - aTerm[ii].iColumn, - aTerm[ii].nNear, - aTerm[ii].isOr ? "yes" : "no", - aTerm[ii].isNot ? "yes" : "no", - aTerm[ii].isPrefix ? "yes" : "no"); -#endif /* PRINT_PARSED_QUERY */ - } - } - - return SQLITE_OK; -} - -/* TODO(shess) Refactor the code to remove this forward decl. */ -static int flushPendingTerms(fulltext_vtab *v); - -/* Perform a full-text query using the search expression in -** zInput[0..nInput-1]. Return a list of matching documents -** in pResult. -** -** Queries must match column iColumn. Or if iColumn>=nColumn -** they are allowed to match against any column. -*/ -static int fulltextQuery( - fulltext_vtab *v, /* The full text index */ - int iColumn, /* Match against this column by default */ - const char *zInput, /* The query string */ - int nInput, /* Number of bytes in zInput[] */ - DataBuffer *pResult, /* Write the result doclist here */ - Query *pQuery /* Put parsed query string here */ -){ - int i, iNext, rc; - DataBuffer left, right, or, new; - int nNot = 0; - QueryTerm *aTerm; - - /* TODO(shess) Instead of flushing pendingTerms, we could query for - ** the relevant term and merge the doclist into what we receive from - ** the database. Wait and see if this is a common issue, first. - ** - ** A good reason not to flush is to not generate update-related - ** error codes from here. - */ - - /* Flush any buffered updates before executing the query. */ - rc = flushPendingTerms(v); - if( rc!=SQLITE_OK ) return rc; - - /* TODO(shess) I think that the queryClear() calls below are not - ** necessary, because fulltextClose() already clears the query. - */ - rc = parseQuery(v, zInput, nInput, iColumn, pQuery); - if( rc!=SQLITE_OK ) return rc; - - /* Empty or NULL queries return no results. */ - if( pQuery->nTerms==0 ){ - dataBufferInit(pResult, 0); - return SQLITE_OK; - } - - /* Initialize empty buffers */ - dataBufferInit (&left, 0); - dataBufferInit (&right, 0); - dataBufferInit (&or, 0); - dataBufferInit (&new, 0); - - /* Merge AND terms. */ - /* TODO(shess) I think we can early-exit if( i>nNot && left.nData==0 ). */ - aTerm = pQuery->pTerms; - for(i = 0; inTerms; i=iNext){ - if( aTerm[i].isNot ){ - /* Handle all NOT terms in a separate pass */ - nNot++; - iNext = i + aTerm[i].nPhrase+1; - continue; - } - iNext = i + aTerm[i].nPhrase + 1; - rc = docListOfTerm(v, aTerm[i].iColumn, &aTerm[i], &right); - if( rc ){ - if( i!=nNot ) dataBufferDestroy(&left); - queryClear(pQuery); - return rc; - } - while( iNextnTerms && aTerm[iNext].isOr ){ - rc = docListOfTerm(v, aTerm[iNext].iColumn, &aTerm[iNext], &or); - iNext += aTerm[iNext].nPhrase + 1; - if( rc ){ - if( i!=nNot ) dataBufferDestroy(&left); - dataBufferDestroy(&right); - queryClear(pQuery); - return rc; - } - dataBufferInit(&new, 0); - docListOrMerge(right.pData, right.nData, or.pData, or.nData, &new); - dataBufferDestroy(&right); - dataBufferDestroy(&or); - right = new; - } - if( i==nNot ){ /* first term processed. */ - left = right; - }else{ - dataBufferInit(&new, 0); - docListAndMerge(left.pData, left.nData, right.pData, right.nData, &new); - dataBufferDestroy(&right); - dataBufferDestroy(&left); - left = new; - } - } - - if( nNot==pQuery->nTerms ){ - /* We do not yet know how to handle a query of only NOT terms */ - return SQLITE_ERROR; - } - - /* Do the EXCEPT terms */ - for(i=0; inTerms; i += aTerm[i].nPhrase + 1){ - if( !aTerm[i].isNot ) continue; - rc = docListOfTerm(v, aTerm[i].iColumn, &aTerm[i], &right); - if( rc ){ - queryClear(pQuery); - dataBufferDestroy(&left); - return rc; - } - dataBufferInit(&new, 0); - docListExceptMerge(left.pData, left.nData, right.pData, right.nData, &new); - dataBufferDestroy(&right); - dataBufferDestroy(&left); - left = new; - } - - *pResult = left; - return rc; -} - -/* -** This is the xFilter interface for the virtual table. See -** the virtual table xFilter method documentation for additional -** information. -** -** If idxNum==QUERY_GENERIC then do a full table scan against -** the %_content table. -** -** If idxNum==QUERY_DOCID then do a docid lookup for a single entry -** in the %_content table. -** -** If idxNum>=QUERY_FULLTEXT then use the full text index. The -** column on the left-hand side of the MATCH operator is column -** number idxNum-QUERY_FULLTEXT, 0 indexed. argv[0] is the right-hand -** side of the MATCH operator. -*/ -/* TODO(shess) Upgrade the cursor initialization and destruction to -** account for fulltextFilter() being called multiple times on the -** same cursor. The current solution is very fragile. Apply fix to -** fts3 as appropriate. -*/ -static int fulltextFilter( - sqlite3_vtab_cursor *pCursor, /* The cursor used for this query */ - int idxNum, const char *idxStr, /* Which indexing scheme to use */ - int argc, sqlite3_value **argv /* Arguments for the indexing scheme */ -){ - fulltext_cursor *c = (fulltext_cursor *) pCursor; - fulltext_vtab *v = cursor_vtab (c); - int rc; - int i; - StringBuffer sb; - - FTSTRACE(("FTS3 Filter %p\n",pCursor)); - - initStringBuffer(&sb); - append(&sb, "SELECT docid"); - - for (i = 0; i < v->nColumn; i++) { - append(&sb, ", NULL"); - } - - append(&sb, " FROM %_content"); - if( idxNum!=QUERY_GENERIC ) append(&sb, " WHERE docid = ?"); - sqlite3_finalize(c->pStmt); - rc = sql_prepare(v->db, v->zDb, v->zName, &c->pStmt, stringBufferData(&sb)); - stringBufferDestroy(&sb); - if( rc!=SQLITE_OK ) return rc; - - c->iCursorType = idxNum; - switch( idxNum ){ - case QUERY_GENERIC: - break; - - case QUERY_DOCID: - rc = sqlite3_bind_int64(c->pStmt, 1, sqlite3_value_int64(argv[0])); - if( rc!=SQLITE_OK ) return rc; - break; - - default: /* full-text search */ - { - const char *zQuery = (const char *)sqlite3_value_text(argv[0]); - assert( idxNum<=QUERY_FULLTEXT+v->nColumn); - assert( argc==1 ); - queryClear(&c->q); - if( c->result.nData!=0 ){ - /* This case happens if the same cursor is used repeatedly. */ - dlrDestroy(&c->reader); - dataBufferReset(&c->result); - }else{ - dataBufferInit(&c->result, 0); - } - rc = fulltextQuery(v, idxNum-QUERY_FULLTEXT, zQuery, -1, &c->result, &c->q); - if( rc!=SQLITE_OK ) return rc; - if( c->result.nData!=0 ){ - -#ifdef RANK - dlrInit(&c->reader, DL_POSITIONS, c->result.pData, c->result.nData); -#else - dlrInit(&c->reader, DL_DOCIDS, c->result.pData, c->result.nData); - -#endif - - } - break; - } - } - - return fulltextNext(pCursor); -} - -/* This is the xEof method of the virtual table. The SQLite core -** calls this routine to find out if it has reached the end of -** a query's results set. -*/ -static int fulltextEof(sqlite3_vtab_cursor *pCursor){ - fulltext_cursor *c = (fulltext_cursor *) pCursor; - return c->eof; -} - -/* This is the xColumn method of the virtual table. The SQLite -** core calls this method during a query when it needs the value -** of a column from the virtual table. This method needs to use -** one of the sqlite3_result_*() routines to store the requested -** value back in the pContext. -*/ -static int fulltextColumn(sqlite3_vtab_cursor *pCursor, - sqlite3_context *pContext, int idxCol){ - fulltext_cursor *c = (fulltext_cursor *) pCursor; - fulltext_vtab *v = cursor_vtab (c); - -#ifdef STORE_CATEGORY - if (idxCol == 0) { - sqlite3_result_int (pContext, c->currentCatid); - return SQLITE_OK; - } -#endif - - if( idxColnColumn ){ - sqlite3_value *pVal = sqlite3_column_value(c->pStmt, idxCol+1); - sqlite3_result_value(pContext, pVal); - }else if( idxCol==v->nColumn ){ - /* The extra column whose name is the same as the table. - ** Return a blob which is a pointer to the cursor - */ - sqlite3_result_blob(pContext, &c, sizeof(c), SQLITE_TRANSIENT); - }else if( idxCol==v->nColumn+1 ){ - /* The docid column, which is an alias for rowid. */ - sqlite3_value *pVal = sqlite3_column_value(c->pStmt, 0); - sqlite3_result_value(pContext, pVal); - } - return SQLITE_OK; -} - -/* This is the xRowid method. The SQLite core calls this routine to -** retrieve the rowid for the current row of the result set. fts3 -** exposes %_content.docid as the rowid for the virtual table. The -** rowid should be written to *pRowid. -*/ -static int fulltextRowid(sqlite3_vtab_cursor *pCursor, sqlite_int64 *pRowid){ - fulltext_cursor *c = (fulltext_cursor *) pCursor; - - *pRowid = c->currentDocid; - return SQLITE_OK; -} - -/* Add all terms in [zText] to pendingTerms table. If [iColumn] > 0, -** we also store positions and offsets in the hash table using that -** column number. -*/ -static int buildTerms(fulltext_vtab *v, sqlite_int64 iDocid, - -#ifdef STORE_CATEGORY -int Catid, -#endif - const char *zText, int iColumn, - gboolean limit_word_length){ - - const char *pToken; - int nTokenBytes; - int iStartOffset, iEndOffset, iPosition, stop_word; - int rc; - TrackerParser *parser = v->parser; - DLCollector *p; - int nData; /* Size of doclist before our update. */ - gint nText; - gint nWords; - - if (!zText) return SQLITE_OK; - - nText = strlen (zText); - - if (!nText) return SQLITE_OK; - - FTSTRACE (("FTS parsing started for Terms, limiting '%d' bytes to '%d' words", - nText, v->max_words)); - - tracker_parser_reset (parser, - zText, - nText, - v->max_word_length, - v->enable_stemmer, - v->enable_unaccent, - v->ignore_stop_words, - TRUE, - v->ignore_numbers); - nWords = 0; - while(nWords < v->max_words){ - - pToken = tracker_parser_next (parser, &iPosition, - &iStartOffset, - &iEndOffset, - &stop_word, - &nTokenBytes); - if (!pToken) { - break; - } - - if (limit_word_length && nTokenBytes < v->min_word_length) { - continue; - } - - nWords++; - - // printf("token being indexed is %s, begin is %d, end is %d and length is %d\n", pToken, iStartOffset, iEndOffset, nTokenBytes); - - if (v->ignore_stop_words && stop_word) { - continue; - } - - /* Positions can't be negative; we use -1 as a terminator - * internally. Token can't be NULL or empty. */ - if( iPosition<0 || pToken == NULL || nTokenBytes == 0 ){ - rc = SQLITE_ERROR; - break; - } - - p = fts3HashFind(&v->pendingTerms, pToken, nTokenBytes); - if( p==NULL ){ - nData = 0; - -#ifdef STORE_CATEGORY - p = dlcNew(iDocid, DL_DEFAULT, Catid); -#else - p = dlcNew(iDocid, DL_DEFAULT); -#endif - - fts3HashInsert(&v->pendingTerms, pToken, nTokenBytes, p); - - /* Overhead for our hash table entry, the key, and the value. */ - v->nPendingData += sizeof(struct fts3HashElem)+sizeof(*p)+nTokenBytes; - }else{ - nData = p->b.nData; - if( p->dlw.iPrevDocid!=iDocid ) { -#ifdef STORE_CATEGORY - dlcNext(p, iDocid, Catid); -#else - dlcNext(p, iDocid); -#endif - - - } - } - if( iColumn>=0 ){ - dlcAddPos(p, iColumn, iPosition, iStartOffset, iEndOffset); - } - - /* Accumulate data added by dlcNew or dlcNext, and dlcAddPos. */ - v->nPendingData += p->b.nData-nData; - } - - /* TODO(shess) Check return? Should this be able to cause errors at - ** this point? Actually, same question about sqlite3_finalize(), - ** though one could argue that failure there means that the data is - ** not durable. *ponder* - */ - - return SQLITE_OK; - -} - -#if 0 -/* Add doclists for all terms in [pValues] to pendingTerms table. */ -static int insertTerms(fulltext_vtab *v, sqlite_int64 iDocid, - sqlite3_value **pValues){ - int i; - -#ifdef STORE_CATEGORY - - /* tracker- category is at column 0 so we dont want to add that value to index */ - for(i = 1; i < v->nColumn ; ++i){ - char *zText = (char*)sqlite3_value_text(pValues[i]); - - /* tracker - as for col id we want col 0 to be the default metadata field (file:contents or email:body) , - col 1 to be meatdata id 1, col 2 to be metadat id 2 etc so need to decrement i here */ - int rc = buildTerms(v, iDocid, sqlite3_value_int (pValues[0]), zText, i-1); - if( rc!=SQLITE_OK ) return rc; - } - -#else - - for(i = 0; i < v->nColumn ; ++i){ - char *zText = (char*)sqlite3_value_text(pValues[i]); - int rc = buildTerms(v, iDocid, zText, i); - if( rc!=SQLITE_OK ) return rc; - } - -#endif - - return SQLITE_OK; -} - -/* Add empty doclists for all terms in the given row's content to -** pendingTerms. -*/ -static int deleteTerms(fulltext_vtab *v, sqlite_int64 iDocid){ - const char **pValues; - int i, rc; - - /* TODO(shess) Should we allow such tables at all? */ - if( DL_DEFAULT==DL_DOCIDS ) return SQLITE_ERROR; - - rc = content_select(v, iDocid, &pValues); - if( rc!=SQLITE_OK ) return rc; - -#ifdef STORE_CATEGORY - - for(i = 1 ; i < v->nColumn; ++i) { - rc = buildTerms(v, iDocid, atoi(pValues[0]), pValues[i], -1); - if( rc!=SQLITE_OK ) break; - } - -#else - for(i = 0 ; i < v->nColumn; ++i) { - rc = buildTerms(v, iDocid, pValues[i], -1); - if( rc!=SQLITE_OK ) break; - } -#endif - - freeStringArray(v->nColumn, pValues); - return SQLITE_OK; -} -#endif - -/* TODO(shess) Refactor the code to remove this forward decl. */ -static int initPendingTerms(fulltext_vtab *v, sqlite_int64 iDocid); - -#if 0 -/* Insert a row into the %_content table; set *piDocid to be the ID of the -** new row. Add doclists for terms to pendingTerms. -*/ -static int index_insert(fulltext_vtab *v, sqlite3_value *pRequestDocid, - sqlite3_value **pValues, sqlite_int64 *piDocid){ - return content_insert(v, pRequestDocid, pValues); /* execute an SQL INSERT */ -} - -/* Delete a row from the %_content table; add empty doclists for terms -** to pendingTerms. -*/ -static int index_delete(fulltext_vtab *v, sqlite_int64 iRow){ - return content_delete(v, iRow); /* execute an SQL DELETE */ -} - -/* Update a row in the %_content table; add delete doclists to -** pendingTerms for old terms not in the new data, add insert doclists -** to pendingTerms for terms in the new data. -*/ -static int index_update(fulltext_vtab *v, sqlite_int64 iRow, - sqlite3_value **pValues){ - int i; - int delete; - - int rc = initPendingTerms(v, iRow); - if( rc!=SQLITE_OK ) return rc; - - /* delete if magic column is set to -1, - otherwise insert */ - delete = (sqlite3_value_int (pValues[v->nColumn]) == -1); - -#ifdef STORE_CATEGORY - - /* tracker- category is at column 0 so we dont want to add that value to index */ - for(i = 1; i < v->nColumn ; ++i){ - char *zText = (char*)sqlite3_value_text(pValues[i]); - - /* tracker - as for col id we want col 0 to be the default metadata field (file:contents or email:body) , - col 1 to be meatdata id 1, col 2 to be metadat id 2 etc so need to decrement i here */ - int rc = buildTerms(v, iRow, sqlite3_value_int (pValues[0]), zText, delete ? -1 : (i-1), TRUE); - if( rc!=SQLITE_OK ) return rc; - } - -#else - - for(i = 0; i < v->nColumn ; ++i){ - char *zText = (char*)sqlite3_value_text(pValues[i]); - rc = buildTerms(v, iRow, zText, delete ? -1 : i, TRUE); - if( rc!=SQLITE_OK ) return rc; - } - -#endif - - return SQLITE_OK; -} -#endif - -/*******************************************************************/ -/* InteriorWriter is used to collect terms and block references into -** interior nodes in %_segments. See commentary at top of file for -** format. -*/ - -/* How large interior nodes can grow. */ -#define INTERIOR_MAX 2048 - -/* Minimum number of terms per interior node (except the root). This -** prevents large terms from making the tree too skinny - must be >0 -** so that the tree always makes progress. Note that the min tree -** fanout will be INTERIOR_MIN_TERMS+1. -*/ -#define INTERIOR_MIN_TERMS 7 -#if INTERIOR_MIN_TERMS<1 -# error INTERIOR_MIN_TERMS must be greater than 0. -#endif - -/* ROOT_MAX controls how much data is stored inline in the segment -** directory. -*/ -/* TODO(shess) Push ROOT_MAX down to whoever is writing things. It's -** only here so that interiorWriterRootInfo() and leafWriterRootInfo() -** can both see it, but if the caller passed it in, we wouldn't even -** need a define. -*/ -#define ROOT_MAX 1024 -#if ROOT_MAXterm, 0); - dataBufferReplace(&block->term, pTerm, nTerm); - - n = fts3PutVarint(c, iHeight); - n += fts3PutVarint(c+n, iChildBlock); - dataBufferInit(&block->data, INTERIOR_MAX); - dataBufferReplace(&block->data, c, n); - } - return block; -} - -#ifndef NDEBUG -/* Verify that the data is readable as an interior node. */ -static void interiorBlockValidate(InteriorBlock *pBlock){ - const char *pData = pBlock->data.pData; - int nData = pBlock->data.nData; - int n, iDummy; - sqlite_int64 iBlockid; - - assert( nData>0 ); - assert( pData!=0 ); - assert( pData+nData>pData ); - - /* Must lead with height of node as a varint(n), n>0 */ - n = fts3GetVarint32(pData, &iDummy); - assert( n>0 ); - assert( iDummy>0 ); - assert( n0 ); - assert( n<=nData ); - pData += n; - nData -= n; - - /* Zero or more terms of positive length */ - if( nData!=0 ){ - /* First term is not delta-encoded. */ - n = fts3GetVarint32(pData, &iDummy); - assert( n>0 ); - assert( iDummy>0 ); - assert( n+iDummy>0); - assert( n+iDummy<=nData ); - pData += n+iDummy; - nData -= n+iDummy; - - /* Following terms delta-encoded. */ - while( nData!=0 ){ - /* Length of shared prefix. */ - n = fts3GetVarint32(pData, &iDummy); - assert( n>0 ); - assert( iDummy>=0 ); - assert( n0 ); - assert( iDummy>0 ); - assert( n+iDummy>0); - assert( n+iDummy<=nData ); - pData += n+iDummy; - nData -= n+iDummy; - } - } -} -#define ASSERT_VALID_INTERIOR_BLOCK(x) interiorBlockValidate(x) -#else -#define ASSERT_VALID_INTERIOR_BLOCK(x) assert( 1 ) -#endif - -typedef struct InteriorWriter { - int iHeight; /* from 0 at leaves. */ - InteriorBlock *first, *last; - struct InteriorWriter *parentWriter; - - DataBuffer term; /* Last term written to block "last". */ - sqlite_int64 iOpeningChildBlock; /* First child block in block "last". */ -#ifndef NDEBUG - sqlite_int64 iLastChildBlock; /* for consistency checks. */ -#endif -} InteriorWriter; - -/* Initialize an interior node where pTerm[nTerm] marks the leftmost -** term in the tree. iChildBlock is the leftmost child block at the -** next level down the tree. -*/ -static void interiorWriterInit(int iHeight, const char *pTerm, int nTerm, - sqlite_int64 iChildBlock, - InteriorWriter *pWriter){ - InteriorBlock *block; - assert( iHeight>0 ); - CLEAR(pWriter); - - pWriter->iHeight = iHeight; - pWriter->iOpeningChildBlock = iChildBlock; -#ifndef NDEBUG - pWriter->iLastChildBlock = iChildBlock; -#endif - block = interiorBlockNew(iHeight, iChildBlock, pTerm, nTerm); - pWriter->last = pWriter->first = block; - ASSERT_VALID_INTERIOR_BLOCK(pWriter->last); - dataBufferInit(&pWriter->term, 0); -} - -/* Append the child node rooted at iChildBlock to the interior node, -** with pTerm[nTerm] as the leftmost term in iChildBlock's subtree. -*/ -static void interiorWriterAppend(InteriorWriter *pWriter, - const char *pTerm, int nTerm, - sqlite_int64 iChildBlock){ - char c[VARINT_MAX+VARINT_MAX]; - int n, nPrefix = 0; - - ASSERT_VALID_INTERIOR_BLOCK(pWriter->last); - - /* The first term written into an interior node is actually - ** associated with the second child added (the first child was added - ** in interiorWriterInit, or in the if clause at the bottom of this - ** function). That term gets encoded straight up, with nPrefix left - ** at 0. - */ - if( pWriter->term.nData==0 ){ - n = fts3PutVarint(c, nTerm); - }else{ - while( nPrefixterm.nData && - pTerm[nPrefix]==pWriter->term.pData[nPrefix] ){ - nPrefix++; - } - - n = fts3PutVarint(c, nPrefix); - n += fts3PutVarint(c+n, nTerm-nPrefix); - } - -#ifndef NDEBUG - pWriter->iLastChildBlock++; -#endif - assert( pWriter->iLastChildBlock==iChildBlock ); - - /* Overflow to a new block if the new term makes the current block - ** too big, and the current block already has enough terms. - */ - if( pWriter->last->data.nData+n+nTerm-nPrefix>INTERIOR_MAX && - iChildBlock-pWriter->iOpeningChildBlock>INTERIOR_MIN_TERMS ){ - pWriter->last->next = interiorBlockNew(pWriter->iHeight, iChildBlock, - pTerm, nTerm); - pWriter->last = pWriter->last->next; - pWriter->iOpeningChildBlock = iChildBlock; - dataBufferReset(&pWriter->term); - }else{ - dataBufferAppend2(&pWriter->last->data, c, n, - pTerm+nPrefix, nTerm-nPrefix); - dataBufferReplace(&pWriter->term, pTerm, nTerm); - } - ASSERT_VALID_INTERIOR_BLOCK(pWriter->last); -} - -/* Free the space used by pWriter, including the linked-list of -** InteriorBlocks, and parentWriter, if present. -*/ -static int interiorWriterDestroy(InteriorWriter *pWriter){ - InteriorBlock *block = pWriter->first; - - while( block!=NULL ){ - InteriorBlock *b = block; - block = block->next; - dataBufferDestroy(&b->term); - dataBufferDestroy(&b->data); - sqlite3_free(b); - } - if( pWriter->parentWriter!=NULL ){ - interiorWriterDestroy(pWriter->parentWriter); - sqlite3_free(pWriter->parentWriter); - } - dataBufferDestroy(&pWriter->term); - SCRAMBLE(pWriter); - return SQLITE_OK; -} - -/* If pWriter can fit entirely in ROOT_MAX, return it as the root info -** directly, leaving *piEndBlockid unchanged. Otherwise, flush -** pWriter to %_segments, building a new layer of interior nodes, and -** recursively ask for their root into. -*/ -static int interiorWriterRootInfo(fulltext_vtab *v, InteriorWriter *pWriter, - char **ppRootInfo, int *pnRootInfo, - sqlite_int64 *piEndBlockid){ - InteriorBlock *block = pWriter->first; - sqlite_int64 iBlockid = 0; - int rc; - - /* If we can fit the segment inline */ - if( block==pWriter->last && block->data.nDatadata.pData; - *pnRootInfo = block->data.nData; - return SQLITE_OK; - } - - /* Flush the first block to %_segments, and create a new level of - ** interior node. - */ - ASSERT_VALID_INTERIOR_BLOCK(block); - rc = block_insert(v, block->data.pData, block->data.nData, &iBlockid); - if( rc!=SQLITE_OK ) return rc; - *piEndBlockid = iBlockid; - - pWriter->parentWriter = sqlite3_malloc(sizeof(*pWriter->parentWriter)); - interiorWriterInit(pWriter->iHeight+1, - block->term.pData, block->term.nData, - iBlockid, pWriter->parentWriter); - - /* Flush additional blocks and append to the higher interior - ** node. - */ - for(block=block->next; block!=NULL; block=block->next){ - ASSERT_VALID_INTERIOR_BLOCK(block); - rc = block_insert(v, block->data.pData, block->data.nData, &iBlockid); - if( rc!=SQLITE_OK ) return rc; - *piEndBlockid = iBlockid; - - interiorWriterAppend(pWriter->parentWriter, - block->term.pData, block->term.nData, iBlockid); - } - - /* Parent node gets the chance to be the root. */ - return interiorWriterRootInfo(v, pWriter->parentWriter, - ppRootInfo, pnRootInfo, piEndBlockid); -} - -/****************************************************************/ -/* InteriorReader is used to read off the data from an interior node -** (see comment at top of file for the format). -*/ -typedef struct InteriorReader { - const char *pData; - int nData; - - DataBuffer term; /* previous term, for decoding term delta. */ - - sqlite_int64 iBlockid; -} InteriorReader; - -static void interiorReaderDestroy(InteriorReader *pReader){ - dataBufferDestroy(&pReader->term); - SCRAMBLE(pReader); -} - -/* TODO(shess) The assertions are great, but what if we're in NDEBUG -** and the blob is empty or otherwise contains suspect data? -*/ -static void interiorReaderInit(const char *pData, int nData, - InteriorReader *pReader){ - int n, nTerm; - - /* Require at least the leading flag byte */ - assert( nData>0 ); - assert( pData[0]!='\0' ); - - CLEAR(pReader); - - /* Decode the base blockid, and set the cursor to the first term. */ - n = fts3GetVarint(pData+1, &pReader->iBlockid); - assert( 1+n<=nData ); - pReader->pData = pData+1+n; - pReader->nData = nData-(1+n); - - /* A single-child interior node (such as when a leaf node was too - ** large for the segment directory) won't have any terms. - ** Otherwise, decode the first term. - */ - if( pReader->nData==0 ){ - dataBufferInit(&pReader->term, 0); - }else{ - n = fts3GetVarint32(pReader->pData, &nTerm); - dataBufferInit(&pReader->term, nTerm); - dataBufferReplace(&pReader->term, pReader->pData+n, nTerm); - assert( n+nTerm<=pReader->nData ); - pReader->pData += n+nTerm; - pReader->nData -= n+nTerm; - } -} - -static int interiorReaderAtEnd(InteriorReader *pReader){ - return pReader->term.nData==0; -} - -static sqlite_int64 interiorReaderCurrentBlockid(InteriorReader *pReader){ - return pReader->iBlockid; -} - -static int interiorReaderTermBytes(InteriorReader *pReader){ - assert( !interiorReaderAtEnd(pReader) ); - return pReader->term.nData; -} -static const char *interiorReaderTerm(InteriorReader *pReader){ - assert( !interiorReaderAtEnd(pReader) ); - return pReader->term.pData; -} - -/* Step forward to the next term in the node. */ -static void interiorReaderStep(InteriorReader *pReader){ - assert( !interiorReaderAtEnd(pReader) ); - - /* If the last term has been read, signal eof, else construct the - ** next term. - */ - if( pReader->nData==0 ){ - dataBufferReset(&pReader->term); - }else{ - int n, nPrefix, nSuffix; - - n = fts3GetVarint32(pReader->pData, &nPrefix); - n += fts3GetVarint32(pReader->pData+n, &nSuffix); - - /* Truncate the current term and append suffix data. */ - pReader->term.nData = nPrefix; - dataBufferAppend(&pReader->term, pReader->pData+n, nSuffix); - - assert( n+nSuffix<=pReader->nData ); - pReader->pData += n+nSuffix; - pReader->nData -= n+nSuffix; - } - pReader->iBlockid++; -} - -/* Compare the current term to pTerm[nTerm], returning strcmp-style -** results. If isPrefix, equality means equal through nTerm bytes. -*/ -static int interiorReaderTermCmp(InteriorReader *pReader, - const char *pTerm, int nTerm, int isPrefix){ - const char *pReaderTerm = interiorReaderTerm(pReader); - int nReaderTerm = interiorReaderTermBytes(pReader); - int c, n = nReaderTerm0 ) return -1; - if( nTerm>0 ) return 1; - return 0; - } - - c = memcmp(pReaderTerm, pTerm, n); - if( c!=0 ) return c; - if( isPrefix && n==nTerm ) return 0; - return nReaderTerm - nTerm; -} - -/****************************************************************/ -/* LeafWriter is used to collect terms and associated doclist data -** into leaf blocks in %_segments (see top of file for format info). -** Expected usage is: -** -** LeafWriter writer; -** leafWriterInit(0, 0, &writer); -** while( sorted_terms_left_to_process ){ -** // data is doclist data for that term. -** rc = leafWriterStep(v, &writer, pTerm, nTerm, pData, nData); -** if( rc!=SQLITE_OK ) goto err; -** } -** rc = leafWriterFinalize(v, &writer); -**err: -** leafWriterDestroy(&writer); -** return rc; -** -** leafWriterStep() may write a collected leaf out to %_segments. -** leafWriterFinalize() finishes writing any buffered data and stores -** a root node in %_segdir. leafWriterDestroy() frees all buffers and -** InteriorWriters allocated as part of writing this segment. -** -** TODO(shess) Document leafWriterStepMerge(). -*/ - -/* Put terms with data this big in their own block. */ -#define STANDALONE_MIN 1024 - -/* Keep leaf blocks below this size. */ -#define LEAF_MAX 2048 - -typedef struct LeafWriter { - int iLevel; - int idx; - sqlite_int64 iStartBlockid; /* needed to create the root info */ - sqlite_int64 iEndBlockid; /* when we're done writing. */ - - DataBuffer term; /* previous encoded term */ - DataBuffer data; /* encoding buffer */ - - /* bytes of first term in the current node which distinguishes that - ** term from the last term of the previous node. - */ - int nTermDistinct; - - InteriorWriter parentWriter; /* if we overflow */ - int has_parent; -} LeafWriter; - -static void leafWriterInit(int iLevel, int idx, LeafWriter *pWriter){ - CLEAR(pWriter); - pWriter->iLevel = iLevel; - pWriter->idx = idx; - - dataBufferInit(&pWriter->term, 32); - - /* Start out with a reasonably sized block, though it can grow. */ - dataBufferInit(&pWriter->data, LEAF_MAX); -} - -#ifndef NDEBUG -/* Verify that the data is readable as a leaf node. */ -static void leafNodeValidate(const char *pData, int nData){ - int n, iDummy; - - if( nData==0 ) return; - assert( nData>0 ); - assert( pData!=0 ); - assert( pData+nData>pData ); - - /* Must lead with a varint(0) */ - n = fts3GetVarint32(pData, &iDummy); - assert( iDummy==0 ); - assert( n>0 ); - assert( n0 ); - assert( iDummy>0 ); - assert( n+iDummy>0 ); - assert( n+iDummy0 ); - assert( iDummy>0 ); - assert( n+iDummy>0 ); - assert( n+iDummy<=nData ); - ASSERT_VALID_DOCLIST(DL_DEFAULT, pData+n, iDummy, NULL); - pData += n+iDummy; - nData -= n+iDummy; - - /* Verify that trailing terms and doclists also are readable. */ - while( nData!=0 ){ - n = fts3GetVarint32(pData, &iDummy); - assert( n>0 ); - assert( iDummy>=0 ); - assert( n0 ); - assert( iDummy>0 ); - assert( n+iDummy>0 ); - assert( n+iDummy0 ); - assert( iDummy>0 ); - assert( n+iDummy>0 ); - assert( n+iDummy<=nData ); - ASSERT_VALID_DOCLIST(DL_DEFAULT, pData+n, iDummy, NULL); - pData += n+iDummy; - nData -= n+iDummy; - } -} -#define ASSERT_VALID_LEAF_NODE(p, n) leafNodeValidate(p, n) -#else -#define ASSERT_VALID_LEAF_NODE(p, n) assert( 1 ) -#endif - -/* Flush the current leaf node to %_segments, and adding the resulting -** blockid and the starting term to the interior node which will -** contain it. -*/ -static int leafWriterInternalFlush(fulltext_vtab *v, LeafWriter *pWriter, - int iData, int nData){ - sqlite_int64 iBlockid = 0; - const char *pStartingTerm; - int nStartingTerm, rc, n; - - /* Must have the leading varint(0) flag, plus at least some - ** valid-looking data. - */ - assert( nData>2 ); - assert( iData>=0 ); - assert( iData+nData<=pWriter->data.nData ); - ASSERT_VALID_LEAF_NODE(pWriter->data.pData+iData, nData); - - rc = block_insert(v, pWriter->data.pData+iData, nData, &iBlockid); - if( rc!=SQLITE_OK ) return rc; - assert( iBlockid!=0 ); - - /* Reconstruct the first term in the leaf for purposes of building - ** the interior node. - */ - n = fts3GetVarint32(pWriter->data.pData+iData+1, &nStartingTerm); - pStartingTerm = pWriter->data.pData+iData+1+n; - assert( pWriter->data.nData>iData+1+n+nStartingTerm ); - assert( pWriter->nTermDistinct>0 ); - assert( pWriter->nTermDistinct<=nStartingTerm ); - nStartingTerm = pWriter->nTermDistinct; - - if( pWriter->has_parent ){ - interiorWriterAppend(&pWriter->parentWriter, - pStartingTerm, nStartingTerm, iBlockid); - }else{ - interiorWriterInit(1, pStartingTerm, nStartingTerm, iBlockid, - &pWriter->parentWriter); - pWriter->has_parent = 1; - } - - /* Track the span of this segment's leaf nodes. */ - if( pWriter->iEndBlockid==0 ){ - pWriter->iEndBlockid = pWriter->iStartBlockid = iBlockid; - }else{ - pWriter->iEndBlockid++; - assert( iBlockid==pWriter->iEndBlockid ); - } - - return SQLITE_OK; -} -static int leafWriterFlush(fulltext_vtab *v, LeafWriter *pWriter){ - int rc = leafWriterInternalFlush(v, pWriter, 0, pWriter->data.nData); - if( rc!=SQLITE_OK ) return rc; - - /* Re-initialize the output buffer. */ - dataBufferReset(&pWriter->data); - - return SQLITE_OK; -} - -/* Fetch the root info for the segment. If the entire leaf fits -** within ROOT_MAX, then it will be returned directly, otherwise it -** will be flushed and the root info will be returned from the -** interior node. *piEndBlockid is set to the blockid of the last -** interior or leaf node written to disk (0 if none are written at -** all). -*/ -static int leafWriterRootInfo(fulltext_vtab *v, LeafWriter *pWriter, - char **ppRootInfo, int *pnRootInfo, - sqlite_int64 *piEndBlockid){ - /* we can fit the segment entirely inline */ - if( !pWriter->has_parent && pWriter->data.nDatadata.pData; - *pnRootInfo = pWriter->data.nData; - *piEndBlockid = 0; - return SQLITE_OK; - } - - /* Flush remaining leaf data. */ - if( pWriter->data.nData>0 ){ - int rc = leafWriterFlush(v, pWriter); - if( rc!=SQLITE_OK ) return rc; - } - - /* We must have flushed a leaf at some point. */ - assert( pWriter->has_parent ); - - /* Tenatively set the end leaf blockid as the end blockid. If the - ** interior node can be returned inline, this will be the final - ** blockid, otherwise it will be overwritten by - ** interiorWriterRootInfo(). - */ - *piEndBlockid = pWriter->iEndBlockid; - - return interiorWriterRootInfo(v, &pWriter->parentWriter, - ppRootInfo, pnRootInfo, piEndBlockid); -} - -/* Collect the rootInfo data and store it into the segment directory. -** This has the effect of flushing the segment's leaf data to -** %_segments, and also flushing any interior nodes to %_segments. -*/ -static int leafWriterFinalize(fulltext_vtab *v, LeafWriter *pWriter){ - sqlite_int64 iEndBlockid; - char *pRootInfo; - int rc, nRootInfo; - - rc = leafWriterRootInfo(v, pWriter, &pRootInfo, &nRootInfo, &iEndBlockid); - if( rc!=SQLITE_OK ) return rc; - - /* Don't bother storing an entirely empty segment. */ - if( iEndBlockid==0 && nRootInfo==0 ) return SQLITE_OK; - - return segdir_set(v, pWriter->iLevel, pWriter->idx, - pWriter->iStartBlockid, pWriter->iEndBlockid, - iEndBlockid, pRootInfo, nRootInfo); -} - -static void leafWriterDestroy(LeafWriter *pWriter){ - if( pWriter->has_parent ) interiorWriterDestroy(&pWriter->parentWriter); - dataBufferDestroy(&pWriter->term); - dataBufferDestroy(&pWriter->data); -} - -/* Encode a term into the leafWriter, delta-encoding as appropriate. -** Returns the length of the new term which distinguishes it from the -** previous term, which can be used to set nTermDistinct when a node -** boundary is crossed. -*/ -static int leafWriterEncodeTerm(LeafWriter *pWriter, - const char *pTerm, int nTerm){ - char c[VARINT_MAX+VARINT_MAX]; - int n, nPrefix = 0; - - assert( nTerm>0 ); - while( nPrefixterm.nData && - pTerm[nPrefix]==pWriter->term.pData[nPrefix] ){ - nPrefix++; - /* Failing this implies that the terms weren't in order. */ - assert( nPrefixdata.nData==0 ){ - /* Encode the node header and leading term as: - ** varint(0) - ** varint(nTerm) - ** char pTerm[nTerm] - */ - n = fts3PutVarint(c, '\0'); - n += fts3PutVarint(c+n, nTerm); - dataBufferAppend2(&pWriter->data, c, n, pTerm, nTerm); - }else{ - /* Delta-encode the term as: - ** varint(nPrefix) - ** varint(nSuffix) - ** char pTermSuffix[nSuffix] - */ - n = fts3PutVarint(c, nPrefix); - n += fts3PutVarint(c+n, nTerm-nPrefix); - dataBufferAppend2(&pWriter->data, c, n, pTerm+nPrefix, nTerm-nPrefix); - } - dataBufferReplace(&pWriter->term, pTerm, nTerm); - - return nPrefix+1; -} - -/* Used to avoid a memmove when a large amount of doclist data is in -** the buffer. This constructs a node and term header before -** iDoclistData and flushes the resulting complete node using -** leafWriterInternalFlush(). -*/ -static int leafWriterInlineFlush(fulltext_vtab *v, LeafWriter *pWriter, - const char *pTerm, int nTerm, - int iDoclistData){ - char c[VARINT_MAX+VARINT_MAX]; - int iData, n = fts3PutVarint(c, 0); - n += fts3PutVarint(c+n, nTerm); - - /* There should always be room for the header. Even if pTerm shared - ** a substantial prefix with the previous term, the entire prefix - ** could be constructed from earlier data in the doclist, so there - ** should be room. - */ - assert( iDoclistData>=n+nTerm ); - - iData = iDoclistData-(n+nTerm); - memcpy(pWriter->data.pData+iData, c, n); - memcpy(pWriter->data.pData+iData+n, pTerm, nTerm); - - return leafWriterInternalFlush(v, pWriter, iData, pWriter->data.nData-iData); -} - -/* Push pTerm[nTerm] along with the doclist data to the leaf layer of -** %_segments. -*/ -static int leafWriterStepMerge(fulltext_vtab *v, LeafWriter *pWriter, - const char *pTerm, int nTerm, - DLReader *pReaders, int nReaders){ - char c[VARINT_MAX+VARINT_MAX]; - int iTermData = pWriter->data.nData, iDoclistData; - int i, nData, n, nActualData, nActual, rc, nTermDistinct; - - ASSERT_VALID_LEAF_NODE(pWriter->data.pData, pWriter->data.nData); - nTermDistinct = leafWriterEncodeTerm(pWriter, pTerm, nTerm); - - /* Remember nTermDistinct if opening a new node. */ - if( iTermData==0 ) pWriter->nTermDistinct = nTermDistinct; - - iDoclistData = pWriter->data.nData; - - /* Estimate the length of the merged doclist so we can leave space - ** to encode it. - */ - for(i=0, nData=0; idata, c, n); - - docListMerge(&pWriter->data, pReaders, nReaders); - ASSERT_VALID_DOCLIST(DL_DEFAULT, - pWriter->data.pData+iDoclistData+n, - pWriter->data.nData-iDoclistData-n, NULL); - - /* The actual amount of doclist data at this point could be smaller - ** than the length we encoded. Additionally, the space required to - ** encode this length could be smaller. For small doclists, this is - ** not a big deal, we can just use memmove() to adjust things. - */ - nActualData = pWriter->data.nData-(iDoclistData+n); - nActual = fts3PutVarint(c, nActualData); - assert( nActualData<=nData ); - assert( nActual<=n ); - - /* If the new doclist is big enough for force a standalone leaf - ** node, we can immediately flush it inline without doing the - ** memmove(). - */ - /* TODO(shess) This test matches leafWriterStep(), which does this - ** test before it knows the cost to varint-encode the term and - ** doclist lengths. At some point, change to - ** pWriter->data.nData-iTermData>STANDALONE_MIN. - */ - if( nTerm+nActualData>STANDALONE_MIN ){ - /* Push leaf node from before this term. */ - if( iTermData>0 ){ - rc = leafWriterInternalFlush(v, pWriter, 0, iTermData); - if( rc!=SQLITE_OK ) return rc; - - pWriter->nTermDistinct = nTermDistinct; - } - - /* Fix the encoded doclist length. */ - iDoclistData += n - nActual; - memcpy(pWriter->data.pData+iDoclistData, c, nActual); - - /* Push the standalone leaf node. */ - rc = leafWriterInlineFlush(v, pWriter, pTerm, nTerm, iDoclistData); - if( rc!=SQLITE_OK ) return rc; - - /* Leave the node empty. */ - dataBufferReset(&pWriter->data); - - return rc; - } - - /* At this point, we know that the doclist was small, so do the - ** memmove if indicated. - */ - if( nActualdata.pData+iDoclistData+nActual, - pWriter->data.pData+iDoclistData+n, - pWriter->data.nData-(iDoclistData+n)); - pWriter->data.nData -= n-nActual; - } - - /* Replace written length with actual length. */ - memcpy(pWriter->data.pData+iDoclistData, c, nActual); - - /* If the node is too large, break things up. */ - /* TODO(shess) This test matches leafWriterStep(), which does this - ** test before it knows the cost to varint-encode the term and - ** doclist lengths. At some point, change to - ** pWriter->data.nData>LEAF_MAX. - */ - if( iTermData+nTerm+nActualData>LEAF_MAX ){ - /* Flush out the leading data as a node */ - rc = leafWriterInternalFlush(v, pWriter, 0, iTermData); - if( rc!=SQLITE_OK ) return rc; - - pWriter->nTermDistinct = nTermDistinct; - - /* Rebuild header using the current term */ - n = fts3PutVarint(pWriter->data.pData, 0); - n += fts3PutVarint(pWriter->data.pData+n, nTerm); - memcpy(pWriter->data.pData+n, pTerm, nTerm); - n += nTerm; - - /* There should always be room, because the previous encoding - ** included all data necessary to construct the term. - */ - assert( ndata.nData-iDoclistDatadata.pData+n, - pWriter->data.pData+iDoclistData, - pWriter->data.nData-iDoclistData); - pWriter->data.nData -= iDoclistData-n; - } - ASSERT_VALID_LEAF_NODE(pWriter->data.pData, pWriter->data.nData); - - return SQLITE_OK; -} - -/* Push pTerm[nTerm] along with the doclist data to the leaf layer of -** %_segments. -*/ -/* TODO(shess) Revise writeZeroSegment() so that doclists are -** constructed directly in pWriter->data. -*/ -static int leafWriterStep(fulltext_vtab *v, LeafWriter *pWriter, - const char *pTerm, int nTerm, - const char *pData, int nData){ - int rc; - DLReader reader; - - dlrInit(&reader, DL_DEFAULT, pData, nData); - rc = leafWriterStepMerge(v, pWriter, pTerm, nTerm, &reader, 1); - dlrDestroy(&reader); - - return rc; -} - - -/****************************************************************/ -/* LeafReader is used to iterate over an individual leaf node. */ -typedef struct LeafReader { - DataBuffer term; /* copy of current term. */ - - const char *pData; /* data for current term. */ - int nData; -} LeafReader; - -static void leafReaderDestroy(LeafReader *pReader){ - dataBufferDestroy(&pReader->term); - SCRAMBLE(pReader); -} - -static int leafReaderAtEnd(LeafReader *pReader){ - return pReader->nData<=0; -} - -/* Access the current term. */ -static int leafReaderTermBytes(LeafReader *pReader){ - return pReader->term.nData; -} -static const char *leafReaderTerm(LeafReader *pReader){ - assert( pReader->term.nData>0 ); - return pReader->term.pData; -} - -/* Access the doclist data for the current term. */ -static int leafReaderDataBytes(LeafReader *pReader){ - int nData; - assert( pReader->term.nData>0 ); - fts3GetVarint32(pReader->pData, &nData); - return nData; -} -static const char *leafReaderData(LeafReader *pReader){ - int n, nData; - assert( pReader->term.nData>0 ); - n = fts3GetVarint32(pReader->pData, &nData); - return pReader->pData+n; -} - -static void leafReaderInit(const char *pData, int nData, - LeafReader *pReader){ - int nTerm, n; - - assert( nData>0 ); - assert( pData[0]=='\0' ); - - CLEAR(pReader); - - /* Read the first term, skipping the header byte. */ - n = fts3GetVarint32(pData+1, &nTerm); - dataBufferInit(&pReader->term, nTerm); - dataBufferReplace(&pReader->term, pData+1+n, nTerm); - - /* Position after the first term. */ - assert( 1+n+nTermpData = pData+1+n+nTerm; - pReader->nData = nData-1-n-nTerm; -} - -/* Step the reader forward to the next term. */ -static void leafReaderStep(LeafReader *pReader){ - int n, nData, nPrefix, nSuffix; - assert( !leafReaderAtEnd(pReader) ); - - /* Skip previous entry's data block. */ - n = fts3GetVarint32(pReader->pData, &nData); - assert( n+nData<=pReader->nData ); - pReader->pData += n+nData; - pReader->nData -= n+nData; - - if( !leafReaderAtEnd(pReader) ){ - /* Construct the new term using a prefix from the old term plus a - ** suffix from the leaf data. - */ - n = fts3GetVarint32(pReader->pData, &nPrefix); - n += fts3GetVarint32(pReader->pData+n, &nSuffix); - assert( n+nSuffixnData ); - pReader->term.nData = nPrefix; - dataBufferAppend(&pReader->term, pReader->pData+n, nSuffix); - - pReader->pData += n+nSuffix; - pReader->nData -= n+nSuffix; - } -} - -/* strcmp-style comparison of pReader's current term against pTerm. -** If isPrefix, equality means equal through nTerm bytes. -*/ -static int leafReaderTermCmp(LeafReader *pReader, - const char *pTerm, int nTerm, int isPrefix){ - int c, n = pReader->term.nDataterm.nData : nTerm; - if( n==0 ){ - if( pReader->term.nData>0 ) return -1; - if(nTerm>0 ) return 1; - return 0; - } - - c = memcmp(pReader->term.pData, pTerm, n); - if( c!=0 ) return c; - if( isPrefix && n==nTerm ) return 0; - return pReader->term.nData - nTerm; -} - - -/****************************************************************/ -/* LeavesReader wraps LeafReader to allow iterating over the entire -** leaf layer of the tree. -*/ -typedef struct LeavesReader { - int idx; /* Index within the segment. */ - - sqlite3_stmt *pStmt; /* Statement we're streaming leaves from. */ - int eof; /* we've seen SQLITE_DONE from pStmt. */ - - LeafReader leafReader; /* reader for the current leaf. */ - DataBuffer rootData; /* root data for inline. */ -} LeavesReader; - -/* Access the current term. */ -static int leavesReaderTermBytes(LeavesReader *pReader){ - assert( !pReader->eof ); - return leafReaderTermBytes(&pReader->leafReader); -} -static const char *leavesReaderTerm(LeavesReader *pReader){ - assert( !pReader->eof ); - return leafReaderTerm(&pReader->leafReader); -} - -/* Access the doclist data for the current term. */ -static int leavesReaderDataBytes(LeavesReader *pReader){ - assert( !pReader->eof ); - return leafReaderDataBytes(&pReader->leafReader); -} -static const char *leavesReaderData(LeavesReader *pReader){ - assert( !pReader->eof ); - return leafReaderData(&pReader->leafReader); -} - -static int leavesReaderAtEnd(LeavesReader *pReader){ - return pReader->eof; -} - -/* loadSegmentLeaves() may not read all the way to SQLITE_DONE, thus -** leaving the statement handle open, which locks the table. -*/ -/* TODO(shess) This "solution" is not satisfactory. Really, there -** should be check-in function for all statement handles which -** arranges to call sqlite3_reset(). This most likely will require -** modification to control flow all over the place, though, so for now -** just punt. -** -** Note the the current system assumes that segment merges will run to -** completion, which is why this particular probably hasn't arisen in -** this case. Probably a brittle assumption. -*/ -static int leavesReaderReset(LeavesReader *pReader){ - return sqlite3_reset(pReader->pStmt); -} - -static void leavesReaderDestroy(LeavesReader *pReader){ - /* If idx is -1, that means we're using a non-cached statement - ** handle in the optimize() case, so we need to release it. - */ - if( pReader->pStmt!=NULL && pReader->idx==-1 ){ - sqlite3_finalize(pReader->pStmt); - } - leafReaderDestroy(&pReader->leafReader); - dataBufferDestroy(&pReader->rootData); - SCRAMBLE(pReader); -} - -/* Initialize pReader with the given root data (if iStartBlockid==0 -** the leaf data was entirely contained in the root), or from the -** stream of blocks between iStartBlockid and iEndBlockid, inclusive. -*/ -static int leavesReaderInit(fulltext_vtab *v, - int idx, - sqlite_int64 iStartBlockid, - sqlite_int64 iEndBlockid, - const char *pRootData, int nRootData, - LeavesReader *pReader){ - CLEAR(pReader); - pReader->idx = idx; - - dataBufferInit(&pReader->rootData, 0); - if( iStartBlockid==0 ){ - /* Entire leaf level fit in root data. */ - dataBufferReplace(&pReader->rootData, pRootData, nRootData); - leafReaderInit(pReader->rootData.pData, pReader->rootData.nData, - &pReader->leafReader); - }else{ - sqlite3_stmt *s; - int rc = sql_get_leaf_statement(v, idx, &s); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_int64(s, 1, iStartBlockid); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_int64(s, 2, iEndBlockid); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_step(s); - if( rc==SQLITE_DONE ){ - pReader->eof = 1; - return SQLITE_OK; - } - if( rc!=SQLITE_ROW ) return rc; - - pReader->pStmt = s; - leafReaderInit(sqlite3_column_blob(pReader->pStmt, 0), - sqlite3_column_bytes(pReader->pStmt, 0), - &pReader->leafReader); - } - return SQLITE_OK; -} - -/* Step the current leaf forward to the next term. If we reach the -** end of the current leaf, step forward to the next leaf block. -*/ -static int leavesReaderStep(fulltext_vtab *v, LeavesReader *pReader){ - assert( !leavesReaderAtEnd(pReader) ); - leafReaderStep(&pReader->leafReader); - - if( leafReaderAtEnd(&pReader->leafReader) ){ - int rc; - if( pReader->rootData.pData ){ - pReader->eof = 1; - return SQLITE_OK; - } - rc = sqlite3_step(pReader->pStmt); - if( rc!=SQLITE_ROW ){ - pReader->eof = 1; - return rc==SQLITE_DONE ? SQLITE_OK : rc; - } - leafReaderDestroy(&pReader->leafReader); - leafReaderInit(sqlite3_column_blob(pReader->pStmt, 0), - sqlite3_column_bytes(pReader->pStmt, 0), - &pReader->leafReader); - } - return SQLITE_OK; -} - -/* Order LeavesReaders by their term, ignoring idx. Readers at eof -** always sort to the end. -*/ -static int leavesReaderTermCmp(LeavesReader *lr1, LeavesReader *lr2){ - if( leavesReaderAtEnd(lr1) ){ - if( leavesReaderAtEnd(lr2) ) return 0; - return 1; - } - if( leavesReaderAtEnd(lr2) ) return -1; - - return leafReaderTermCmp(&lr1->leafReader, - leavesReaderTerm(lr2), leavesReaderTermBytes(lr2), - 0); -} - -/* Similar to leavesReaderTermCmp(), with additional ordering by idx -** so that older segments sort before newer segments. -*/ -static int leavesReaderCmp(LeavesReader *lr1, LeavesReader *lr2){ - int c = leavesReaderTermCmp(lr1, lr2); - if( c!=0 ) return c; - return lr1->idx-lr2->idx; -} - -/* Assume that pLr[1]..pLr[nLr] are sorted. Bubble pLr[0] into its -** sorted position. -*/ -static void leavesReaderReorder(LeavesReader *pLr, int nLr){ - while( nLr>1 && leavesReaderCmp(pLr, pLr+1)>0 ){ - LeavesReader tmp = pLr[0]; - pLr[0] = pLr[1]; - pLr[1] = tmp; - nLr--; - pLr++; - } -} - -/* Initializes pReaders with the segments from level iLevel, returning -** the number of segments in *piReaders. Leaves pReaders in sorted -** order. -*/ -static int leavesReadersInit(fulltext_vtab *v, int iLevel, - LeavesReader *pReaders, int *piReaders){ - sqlite3_stmt *s; - int i, rc = sql_get_statement(v, SEGDIR_SELECT_LEVEL_STMT, &s); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_int(s, 1, iLevel); - if( rc!=SQLITE_OK ) return rc; - - i = 0; - while( (rc = sqlite3_step(s))==SQLITE_ROW ){ - sqlite_int64 iStart = sqlite3_column_int64(s, 0); - sqlite_int64 iEnd = sqlite3_column_int64(s, 1); - const char *pRootData = sqlite3_column_blob(s, 2); - int nRootData = sqlite3_column_bytes(s, 2); - - assert( i0 ){ - leavesReaderDestroy(&pReaders[i]); - } - return rc; - } - - *piReaders = i; - - /* Leave our results sorted by term, then age. */ - while( i-- ){ - leavesReaderReorder(pReaders+i, *piReaders-i); - } - return SQLITE_OK; -} - -/* Merge doclists from pReaders[nReaders] into a single doclist, which -** is written to pWriter. Assumes pReaders is ordered oldest to -** newest. -*/ -/* TODO(shess) Consider putting this inline in segmentMerge(). */ -static int leavesReadersMerge(fulltext_vtab *v, - LeavesReader *pReaders, int nReaders, - LeafWriter *pWriter){ - DLReader dlReaders[MERGE_COUNT]; - const char *pTerm = leavesReaderTerm(pReaders); - int i, nTerm = leavesReaderTermBytes(pReaders); - - assert( nReaders<=MERGE_COUNT ); - - for(i=0; i0 ){ - rc = leavesReaderStep(v, lrs+i); - if( rc!=SQLITE_OK ) goto err; - - /* Reorder by term, then by age. */ - leavesReaderReorder(lrs+i, MERGE_COUNT-i); - } - } - - for(i=0; i0 ); - - for(rc=SQLITE_OK; rc==SQLITE_OK && !leavesReaderAtEnd(pReader); - rc=leavesReaderStep(v, pReader)){ - /* TODO(shess) Really want leavesReaderTermCmp(), but that name is - ** already taken to compare the terms of two LeavesReaders. Think - ** on a better name. [Meanwhile, break encapsulation rather than - ** use a confusing name.] - */ - int c = leafReaderTermCmp(&pReader->leafReader, pTerm, nTerm, isPrefix); - if( c>0 ) break; /* Past any possible matches. */ - if( c==0 ){ - const char *pData = leavesReaderData(pReader); - int iBuffer, nData = leavesReaderDataBytes(pReader); - - /* Find the first empty buffer. */ - for(iBuffer=0; iBuffer0 ){ - assert(pBuffers!=NULL); - memcpy(p, pBuffers, nBuffers*sizeof(*pBuffers)); - sqlite3_free(pBuffers); - } - pBuffers = p; - } - dataBufferInit(&(pBuffers[nBuffers]), 0); - nBuffers++; - } - - /* At this point, must have an empty at iBuffer. */ - assert(iBufferpData, p->nData); - - /* dataBufferReset() could allow a large doclist to blow up - ** our memory requirements. - */ - if( p->nCapacity<1024 ){ - dataBufferReset(p); - }else{ - dataBufferDestroy(p); - dataBufferInit(p, 0); - } - } - } - } - } - - /* Union all the doclists together into *out. */ - /* TODO(shess) What if *out is big? Sigh. */ - if( rc==SQLITE_OK && nBuffers>0 ){ - int iBuffer; - for(iBuffer=0; iBuffer0 ){ - if( out->nData==0 ){ - dataBufferSwap(out, &(pBuffers[iBuffer])); - }else{ - docListAccumulateUnion(out, pBuffers[iBuffer].pData, - pBuffers[iBuffer].nData); - } - } - } - } - - while( nBuffers-- ){ - dataBufferDestroy(&(pBuffers[nBuffers])); - } - if( pBuffers!=NULL ) sqlite3_free(pBuffers); - - return rc; -} - -/* Call loadSegmentLeavesInt() with pData/nData as input. */ -static int loadSegmentLeaf(fulltext_vtab *v, const char *pData, int nData, - const char *pTerm, int nTerm, int isPrefix, - DataBuffer *out){ - LeavesReader reader; - int rc; - - assert( nData>1 ); - assert( *pData=='\0' ); - rc = leavesReaderInit(v, 0, 0, 0, pData, nData, &reader); - if( rc!=SQLITE_OK ) return rc; - - rc = loadSegmentLeavesInt(v, &reader, pTerm, nTerm, isPrefix, out); - leavesReaderReset(&reader); - leavesReaderDestroy(&reader); - return rc; -} - -/* Call loadSegmentLeavesInt() with the leaf nodes from iStartLeaf to -** iEndLeaf (inclusive) as input, and merge the resulting doclist into -** out. -*/ -static int loadSegmentLeaves(fulltext_vtab *v, - sqlite_int64 iStartLeaf, sqlite_int64 iEndLeaf, - const char *pTerm, int nTerm, int isPrefix, - DataBuffer *out){ - int rc; - LeavesReader reader; - - assert( iStartLeaf<=iEndLeaf ); - rc = leavesReaderInit(v, 0, iStartLeaf, iEndLeaf, NULL, 0, &reader); - if( rc!=SQLITE_OK ) return rc; - - rc = loadSegmentLeavesInt(v, &reader, pTerm, nTerm, isPrefix, out); - leavesReaderReset(&reader); - leavesReaderDestroy(&reader); - return rc; -} - -/* Taking pData/nData as an interior node, find the sequence of child -** nodes which could include pTerm/nTerm/isPrefix. Note that the -** interior node terms logically come between the blocks, so there is -** one more blockid than there are terms (that block contains terms >= -** the last interior-node term). -*/ -/* TODO(shess) The calling code may already know that the end child is -** not worth calculating, because the end may be in a later sibling -** node. Consider whether breaking symmetry is worthwhile. I suspect -** it is not worthwhile. -*/ -static void getChildrenContaining(const char *pData, int nData, - const char *pTerm, int nTerm, int isPrefix, - sqlite_int64 *piStartChild, - sqlite_int64 *piEndChild){ - InteriorReader reader; - - assert( nData>1 ); - assert( *pData!='\0' ); - interiorReaderInit(pData, nData, &reader); - - /* Scan for the first child which could contain pTerm/nTerm. */ - while( !interiorReaderAtEnd(&reader) ){ - if( interiorReaderTermCmp(&reader, pTerm, nTerm, 0)>0 ) break; - interiorReaderStep(&reader); - } - *piStartChild = interiorReaderCurrentBlockid(&reader); - - /* Keep scanning to find a term greater than our term, using prefix - ** comparison if indicated. If isPrefix is false, this will be the - ** same blockid as the starting block. - */ - while( !interiorReaderAtEnd(&reader) ){ - if( interiorReaderTermCmp(&reader, pTerm, nTerm, isPrefix)>0 ) break; - interiorReaderStep(&reader); - } - *piEndChild = interiorReaderCurrentBlockid(&reader); - - interiorReaderDestroy(&reader); - - /* Children must ascend, and if !prefix, both must be the same. */ - assert( *piEndChild>=*piStartChild ); - assert( isPrefix || *piStartChild==*piEndChild ); -} - -/* Read block at iBlockid and pass it with other params to -** getChildrenContaining(). -*/ -static int loadAndGetChildrenContaining( - fulltext_vtab *v, - sqlite_int64 iBlockid, - const char *pTerm, int nTerm, int isPrefix, - sqlite_int64 *piStartChild, sqlite_int64 *piEndChild -){ - sqlite3_stmt *s = NULL; - int rc; - - assert( iBlockid!=0 ); - assert( pTerm!=NULL ); - assert( nTerm!=0 ); /* TODO(shess) Why not allow this? */ - assert( piStartChild!=NULL ); - assert( piEndChild!=NULL ); - - rc = sql_get_statement(v, BLOCK_SELECT_STMT, &s); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_bind_int64(s, 1, iBlockid); - if( rc!=SQLITE_OK ) return rc; - - rc = sqlite3_step(s); - if( rc==SQLITE_DONE ) return SQLITE_ERROR; - if( rc!=SQLITE_ROW ) return rc; - - getChildrenContaining(sqlite3_column_blob(s, 0), sqlite3_column_bytes(s, 0), - pTerm, nTerm, isPrefix, piStartChild, piEndChild); - - /* We expect only one row. We must execute another sqlite3_step() - * to complete the iteration; otherwise the table will remain - * locked. */ - rc = sqlite3_step(s); - if( rc==SQLITE_ROW ) return SQLITE_ERROR; - if( rc!=SQLITE_DONE ) return rc; - - return SQLITE_OK; -} - -/* Traverse the tree represented by pData[nData] looking for -** pTerm[nTerm], placing its doclist into *out. This is internal to -** loadSegment() to make error-handling cleaner. -*/ -static int loadSegmentInt(fulltext_vtab *v, const char *pData, int nData, - sqlite_int64 iLeavesEnd, - const char *pTerm, int nTerm, int isPrefix, - DataBuffer *out){ - /* Special case where root is a leaf. */ - if( *pData=='\0' ){ - return loadSegmentLeaf(v, pData, nData, pTerm, nTerm, isPrefix, out); - }else{ - int rc; - sqlite_int64 iStartChild, iEndChild; - - /* Process pData as an interior node, then loop down the tree - ** until we find the set of leaf nodes to scan for the term. - */ - getChildrenContaining(pData, nData, pTerm, nTerm, isPrefix, - &iStartChild, &iEndChild); - while( iStartChild>iLeavesEnd ){ - sqlite_int64 iNextStart, iNextEnd; - rc = loadAndGetChildrenContaining(v, iStartChild, pTerm, nTerm, isPrefix, - &iNextStart, &iNextEnd); - if( rc!=SQLITE_OK ) return rc; - - /* If we've branched, follow the end branch, too. */ - if( iStartChild!=iEndChild ){ - sqlite_int64 iDummy; - rc = loadAndGetChildrenContaining(v, iEndChild, pTerm, nTerm, isPrefix, - &iDummy, &iNextEnd); - if( rc!=SQLITE_OK ) return rc; - } - - assert( iNextStart<=iNextEnd ); - iStartChild = iNextStart; - iEndChild = iNextEnd; - } - assert( iStartChild<=iLeavesEnd ); - assert( iEndChild<=iLeavesEnd ); - - /* Scan through the leaf segments for doclists. */ - return loadSegmentLeaves(v, iStartChild, iEndChild, - pTerm, nTerm, isPrefix, out); - } -} - -/* Call loadSegmentInt() to collect the doclist for pTerm/nTerm, then -** merge its doclist over *out (any duplicate doclists read from the -** segment rooted at pData will overwrite those in *out). -*/ -/* TODO(shess) Consider changing this to determine the depth of the -** leaves using either the first characters of interior nodes (when -** ==1, we're one level above the leaves), or the first character of -** the root (which will describe the height of the tree directly). -** Either feels somewhat tricky to me. -*/ -/* TODO(shess) The current merge is likely to be slow for large -** doclists (though it should process from newest/smallest to -** oldest/largest, so it may not be that bad). It might be useful to -** modify things to allow for N-way merging. This could either be -** within a segment, with pairwise merges across segments, or across -** all segments at once. -*/ -static int loadSegment(fulltext_vtab *v, const char *pData, int nData, - sqlite_int64 iLeavesEnd, - const char *pTerm, int nTerm, int isPrefix, - DataBuffer *out){ - DataBuffer result; - int rc; - - assert( nData>1 ); - - /* This code should never be called with buffered updates. */ - assert( v->nPendingData<0 ); - - dataBufferInit(&result, 0); - rc = loadSegmentInt(v, pData, nData, iLeavesEnd, - pTerm, nTerm, isPrefix, &result); - if( rc==SQLITE_OK && result.nData>0 ){ - if( out->nData==0 ){ - DataBuffer tmp = *out; - *out = result; - result = tmp; - }else{ - DataBuffer merged; - DLReader readers[2]; - - dlrInit(&readers[0], DL_DEFAULT, out->pData, out->nData); - dlrInit(&readers[1], DL_DEFAULT, result.pData, result.nData); - dataBufferInit(&merged, out->nData+result.nData); - docListMerge(&merged, readers, 2); - dataBufferDestroy(out); - *out = merged; - dlrDestroy(&readers[0]); - dlrDestroy(&readers[1]); - } - } - dataBufferDestroy(&result); - return rc; -} - -/* Scan the database and merge together the posting lists for the term -** into *out. -*/ -static int termSelect(fulltext_vtab *v, int iColumn, - const char *pTerm, int nTerm, int isPrefix, - DocListType iType, DataBuffer *out){ - DataBuffer doclist; - sqlite3_stmt *s; - int rc = sql_get_statement(v, SEGDIR_SELECT_ALL_STMT, &s); - if( rc!=SQLITE_OK ) return rc; - - /* This code should never be called with buffered updates. */ - assert( v->nPendingData<0 ); - - dataBufferInit(&doclist, 0); - - /* Traverse the segments from oldest to newest so that newer doclist - ** elements for given docids overwrite older elements. - */ - while( (rc = sqlite3_step(s))==SQLITE_ROW ){ - const char *pData = sqlite3_column_blob(s, 2); - const int nData = sqlite3_column_bytes(s, 2); - const sqlite_int64 iLeavesEnd = sqlite3_column_int64(s, 1); - rc = loadSegment(v, pData, nData, iLeavesEnd, pTerm, nTerm, isPrefix, - &doclist); - if( rc!=SQLITE_OK ) goto err; - } - if( rc==SQLITE_DONE ){ - if( doclist.nData!=0 ){ - /* TODO(shess) The old term_select_all() code applied the column - ** restrict as we merged segments, leading to smaller buffers. - ** This is probably worthwhile to bring back, once the new storage - ** system is checked in. - */ - if( iColumn==v->nColumn) iColumn = -1; - docListTrim(DL_DEFAULT, doclist.pData, doclist.nData, - iColumn, iType, out); - } - rc = SQLITE_OK; - } - - err: - dataBufferDestroy(&doclist); - return rc; -} - -/****************************************************************/ -/* Used to hold hashtable data for sorting. */ -typedef struct TermData { - const char *pTerm; - int nTerm; - DLCollector *pCollector; -} TermData; - -/* Orders TermData elements in strcmp fashion ( <0 for less-than, 0 -** for equal, >0 for greater-than). -*/ -static int termDataCmp(const void *av, const void *bv){ - const TermData *a = (const TermData *)av; - const TermData *b = (const TermData *)bv; - int n = a->nTermnTerm ? a->nTerm : b->nTerm; - int c = memcmp(a->pTerm, b->pTerm, n); - if( c!=0 ) return c; - return a->nTerm-b->nTerm; -} - -/* Order pTerms data by term, then write a new level 0 segment using -** LeafWriter. -*/ -static int writeZeroSegment(fulltext_vtab *v, fts3Hash *pTerms){ - fts3HashElem *e; - int idx, rc, i, n; - TermData *pData; - LeafWriter writer; - DataBuffer dl; - - /* Determine the next index at level 0, merging as necessary. */ - rc = segdirNextIndex(v, 0, &idx); - if( rc!=SQLITE_OK ) return rc; - - n = fts3HashCount(pTerms); - pData = sqlite3_malloc(n*sizeof(TermData)); - - for(i = 0, e = fts3HashFirst(pTerms); e; i++, e = fts3HashNext(e)){ - assert( i1 ) qsort(pData, n, sizeof(*pData), termDataCmp); - - /* TODO(shess) Refactor so that we can write directly to the segment - ** DataBuffer, as happens for segment merges. - */ - leafWriterInit(0, idx, &writer); - dataBufferInit(&dl, 0); - for(i=0; inPendingData>=0 ){ - fts3HashElem *e; - for(e=fts3HashFirst(&v->pendingTerms); e; e=fts3HashNext(e)){ - dlcDelete(fts3HashData(e)); - } - fts3HashClear(&v->pendingTerms); - v->nPendingData = -1; - } - return SQLITE_OK; -} - -/* If pendingTerms has data, flush it to a level-zero segment, and -** free it. -*/ -static int flushPendingTerms(fulltext_vtab *v){ - if( v->nPendingData>=0 ){ - int rc = writeZeroSegment(v, &v->pendingTerms); - if( rc==SQLITE_OK ) clearPendingTerms(v); - return rc; - } - return SQLITE_OK; -} - -/* If pendingTerms is "too big", or docid is out of order, flush it. -** Regardless, be certain that pendingTerms is initialized for use. -*/ -static int initPendingTerms(fulltext_vtab *v, sqlite_int64 iDocid){ - /* TODO(shess) Explore whether partially flushing the buffer on - ** forced-flush would provide better performance. I suspect that if - ** we ordered the doclists by size and flushed the largest until the - ** buffer was half empty, that would let the less frequent terms - ** generate longer doclists. - */ - if( iDocid<=v->iPrevDocid || v->nPendingData>kPendingThreshold ){ - int rc = flushPendingTerms(v); - if( rc!=SQLITE_OK ) return rc; - } - if( v->nPendingData<0 ){ - fts3HashInit(&v->pendingTerms, FTS3_HASH_STRING, 1); - v->nPendingData = 0; - } - v->iPrevDocid = iDocid; - return SQLITE_OK; -} - -#if 0 -/* This function implements the xUpdate callback; it is the top-level entry - * point for inserting, deleting or updating a row in a full-text table. */ -static int fulltextUpdate(sqlite3_vtab *pVtab, int nArg, sqlite3_value **ppArg, - sqlite_int64 *pRowid){ - fulltext_vtab *v = (fulltext_vtab *) pVtab; - int rc; - - FTSTRACE(("FTS3 Update %p\n", pVtab)); - - if( nArg<2 ){ - rc = index_delete(v, sqlite3_value_int64(ppArg[0])); - if( rc==SQLITE_OK ){ - /* If we just deleted the last row in the table, clear out the - ** index data. - */ - rc = content_exists(v); - if( rc==SQLITE_ROW ){ - rc = SQLITE_OK; - }else if( rc==SQLITE_DONE ){ - /* Clear the pending terms so we don't flush a useless level-0 - ** segment when the transaction closes. - */ - rc = clearPendingTerms(v); - if( rc==SQLITE_OK ){ - rc = segdir_delete_all(v); - } - } - } - } else if( sqlite3_value_type(ppArg[0]) != SQLITE_NULL ){ - /* An update: - * ppArg[0] = old rowid - * ppArg[1] = new rowid - * ppArg[2..2+v->nColumn-1] = values - * ppArg[2+v->nColumn] = value for magic column (we ignore this) - * ppArg[2+v->nColumn+1] = value for docid - */ - sqlite_int64 rowid = sqlite3_value_int64(ppArg[0]); - if( sqlite3_value_type(ppArg[1]) != SQLITE_INTEGER || - sqlite3_value_int64(ppArg[1]) != rowid ){ - rc = SQLITE_ERROR; /* we don't allow changing the rowid */ - }else if( sqlite3_value_type(ppArg[2+v->nColumn+1]) != SQLITE_INTEGER || - sqlite3_value_int64(ppArg[2+v->nColumn+1]) != rowid ){ - rc = SQLITE_ERROR; /* we don't allow changing the docid */ - }else{ - assert( nArg==2+v->nColumn+2); - rc = index_update(v, rowid, &ppArg[2]); - } - } else { - /* An insert: - * ppArg[1] = requested rowid - * ppArg[2..2+v->nColumn-1] = values - * ppArg[2+v->nColumn] = value for magic column (we ignore this) - * ppArg[2+v->nColumn+1] = value for docid - */ - sqlite3_value *pRequestDocid = ppArg[2+v->nColumn+1]; - assert( nArg==2+v->nColumn+2); - if( SQLITE_NULL != sqlite3_value_type(pRequestDocid) && - SQLITE_NULL != sqlite3_value_type(ppArg[1]) ){ - /* TODO(shess) Consider allowing this to work if the values are - ** identical. I'm inclined to discourage that usage, though, - ** given that both rowid and docid are special columns. Better - ** would be to define one or the other as the default winner, - ** but should it be fts3-centric (docid) or SQLite-centric - ** (rowid)? - */ - rc = SQLITE_ERROR; - }else{ - if( SQLITE_NULL == sqlite3_value_type(pRequestDocid) ){ - pRequestDocid = ppArg[1]; - } - rc = index_insert(v, pRequestDocid, &ppArg[2], pRowid); - } - } - - return rc; -} -#endif - -static int fulltextSync(sqlite3_vtab *pVtab){ - fulltext_vtab *v = get_fulltext_vtab (pVtab); - - FTSTRACE(("FTS3 xSync()\n")); - return flushPendingTerms(v); -} - -static int fulltextBegin(sqlite3_vtab *pVtab){ - fulltext_vtab *v = get_fulltext_vtab (pVtab); - FTSTRACE(("FTS3 xBegin()\n")); - - /* Any buffered updates should have been cleared by the previous - ** transaction. - */ - assert( v->nPendingData<0 ); - return clearPendingTerms(v); -} - -static int fulltextCommit(sqlite3_vtab *pVtab){ - fulltext_vtab *v = get_fulltext_vtab (pVtab); - FTSTRACE(("FTS3 xCommit()\n")); - - /* Buffered updates should have been cleared by fulltextSync(). */ - assert( v->nPendingData<0 ); - return clearPendingTerms(v); -} - -static int fulltextRollback(sqlite3_vtab *pVtab){ - fulltext_vtab *v = get_fulltext_vtab (pVtab); - FTSTRACE(("FTS3 xRollback()\n")); - return clearPendingTerms(v); -} - -/* -** Implementation of the snippet() function for FTS3 -*/ -static void snippetFunc( - sqlite3_context *pContext, - int argc, - sqlite3_value **argv -){ - fulltext_cursor *pCursor; - if( argc<1 ) return; - if( sqlite3_value_type(argv[0])!=SQLITE_BLOB || - sqlite3_value_bytes(argv[0])!=sizeof(pCursor) ){ - sqlite3_result_error(pContext, "illegal first argument to html_snippet",-1); - }else{ - const char *zStart = ""; - const char *zEnd = ""; - const char *zEllipsis = "..."; - memcpy(&pCursor, sqlite3_value_blob(argv[0]), sizeof(pCursor)); - if( argc>=2 ){ - zStart = (const char*)sqlite3_value_text(argv[1]); - if( argc>=3 ){ - zEnd = (const char*)sqlite3_value_text(argv[2]); - if( argc>=4 ){ - zEllipsis = (const char*)sqlite3_value_text(argv[3]); - } - } - } - snippetAllOffsets(pCursor); - snippetText(pCursor, zStart, zEnd, zEllipsis); - sqlite3_result_text(pContext, pCursor->snippet.zSnippet, - pCursor->snippet.nSnippet, SQLITE_STATIC); - } -} - - -/* -** Implementation of the rank() function for FTS3 -*/ -static void rankFunc( - sqlite3_context *pContext, - int argc, - sqlite3_value **argv -){ - - // TODO - - fulltext_cursor *pCursor; - if( argc<1 ) return; - if( sqlite3_value_type(argv[0])!=SQLITE_BLOB || - sqlite3_value_bytes(argv[0])!=sizeof(pCursor) ){ - sqlite3_result_error(pContext, "illegal first argument to html_snippet",-1); - }else{ - memcpy(&pCursor, sqlite3_value_blob(argv[0]), sizeof(pCursor)); - sqlite3_result_double(pContext, pCursor->rank); - } -} - -/* -** Implementation of the offsets() function for FTS3 -** altered by tracker to omit query term position as that -** info is not stored in the poisiton data in the index -*/ -static void snippetOffsetsFunc( - sqlite3_context *pContext, - int argc, - sqlite3_value **argv -){ - fulltext_cursor *pCursor; - if( argc<1 ) return; - if( sqlite3_value_type(argv[0])!=SQLITE_BLOB || - sqlite3_value_bytes(argv[0])!=sizeof(pCursor) ){ - sqlite3_result_error(pContext, "illegal first argument to offsets",-1); - }else{ - memcpy(&pCursor, sqlite3_value_blob(argv[0]), sizeof(pCursor)); - - /* (tracker) output caches position data in column, position string format */ - sqlite3_result_text(pContext, - pCursor->offsets->str, pCursor->offsets->len, - SQLITE_STATIC); - } -} - -/* OptLeavesReader is nearly identical to LeavesReader, except that -** where LeavesReader is geared towards the merging of complete -** segment levels (with exactly MERGE_COUNT segments), OptLeavesReader -** is geared towards implementation of the optimize() function, and -** can merge all segments simultaneously. This version may be -** somewhat less efficient than LeavesReader because it merges into an -** accumulator rather than doing an N-way merge, but since segment -** size grows exponentially (so segment count logrithmically) this is -** probably not an immediate problem. -*/ -/* TODO(shess): Prove that assertion, or extend the merge code to -** merge tree fashion (like the prefix-searching code does). -*/ -/* TODO(shess): OptLeavesReader and LeavesReader could probably be -** merged with little or no loss of performance for LeavesReader. The -** merged code would need to handle >MERGE_COUNT segments, and would -** also need to be able to optionally optimize away deletes. -*/ -typedef struct OptLeavesReader { - /* Segment number, to order readers by age. */ - int segment; - LeavesReader reader; -} OptLeavesReader; - -static int optLeavesReaderAtEnd(OptLeavesReader *pReader){ - return leavesReaderAtEnd(&pReader->reader); -} -static int optLeavesReaderTermBytes(OptLeavesReader *pReader){ - return leavesReaderTermBytes(&pReader->reader); -} -static const char *optLeavesReaderData(OptLeavesReader *pReader){ - return leavesReaderData(&pReader->reader); -} -static int optLeavesReaderDataBytes(OptLeavesReader *pReader){ - return leavesReaderDataBytes(&pReader->reader); -} -static const char *optLeavesReaderTerm(OptLeavesReader *pReader){ - return leavesReaderTerm(&pReader->reader); -} -static int optLeavesReaderStep(fulltext_vtab *v, OptLeavesReader *pReader){ - return leavesReaderStep(v, &pReader->reader); -} -static int optLeavesReaderTermCmp(OptLeavesReader *lr1, OptLeavesReader *lr2){ - return leavesReaderTermCmp(&lr1->reader, &lr2->reader); -} -/* Order by term ascending, segment ascending (oldest to newest), with -** exhausted readers to the end. -*/ -static int optLeavesReaderCmp(OptLeavesReader *lr1, OptLeavesReader *lr2){ - int c = optLeavesReaderTermCmp(lr1, lr2); - if( c!=0 ) return c; - return lr1->segment-lr2->segment; -} -/* Bubble pLr[0] to appropriate place in pLr[1..nLr-1]. Assumes that -** pLr[1..nLr-1] is already sorted. -*/ -static void optLeavesReaderReorder(OptLeavesReader *pLr, int nLr){ - while( nLr>1 && optLeavesReaderCmp(pLr, pLr+1)>0 ){ - OptLeavesReader tmp = pLr[0]; - pLr[0] = pLr[1]; - pLr[1] = tmp; - nLr--; - pLr++; - } -} - -/* optimize() helper function. Put the readers in order and iterate -** through them, merging doclists for matching terms into pWriter. -** Returns SQLITE_OK on success, or the SQLite error code which -** prevented success. -*/ -static int optimizeInternal(fulltext_vtab *v, - OptLeavesReader *readers, int nReaders, - LeafWriter *pWriter){ - int i, rc = SQLITE_OK; - DataBuffer doclist, merged, tmp; - - /* Order the readers. */ - i = nReaders; - while( i-- > 0 ){ - optLeavesReaderReorder(&readers[i], nReaders-i); - } - - dataBufferInit(&doclist, LEAF_MAX); - dataBufferInit(&merged, LEAF_MAX); - - /* Exhausted readers bubble to the end, so when the first reader is - ** at eof, all are at eof. - */ - while( !optLeavesReaderAtEnd(&readers[0]) ){ - - /* Figure out how many readers share the next term. */ - for(i=1; i 0 ){ - dlrDestroy(&dlReaders[pnReaders]); - } - - /* Accumulated doclist to reader 0 for next pass. */ - dlrInit(&dlReaders[0], DL_DEFAULT, doclist.pData, doclist.nData); - } - - /* Destroy reader that was left in the pipeline. */ - dlrDestroy(&dlReaders[0]); - - /* Trim deletions from the doclist. */ - dataBufferReset(&merged); - docListTrim(DL_DEFAULT, doclist.pData, doclist.nData, - -1, DL_DEFAULT, &merged); - } - - /* Only pass doclists with hits (skip if all hits deleted). */ - if( merged.nData>0 ){ - rc = leafWriterStep(v, pWriter, - optLeavesReaderTerm(&readers[0]), - optLeavesReaderTermBytes(&readers[0]), - merged.pData, merged.nData); - if( rc!=SQLITE_OK ) goto err; - } - - /* Step merged readers to next term and reorder. */ - while( i-- > 0 ){ - rc = optLeavesReaderStep(v, &readers[i]); - if( rc!=SQLITE_OK ) goto err; - - optLeavesReaderReorder(&readers[i], nReaders-i); - } - } - - err: - dataBufferDestroy(&doclist); - dataBufferDestroy(&merged); - return rc; -} - -/* Implement optimize() function for FTS3. optimize(t) merges all -** segments in the fts index into a single segment. 't' is the magic -** table-named column. -*/ -static void optimizeFunc(sqlite3_context *pContext, - int argc, sqlite3_value **argv){ - fulltext_cursor *pCursor; - if( argc>1 ){ - sqlite3_result_error(pContext, "excess arguments to optimize()",-1); - }else if( sqlite3_value_type(argv[0])!=SQLITE_BLOB || - sqlite3_value_bytes(argv[0])!=sizeof(pCursor) ){ - sqlite3_result_error(pContext, "illegal first argument to optimize",-1); - }else{ - fulltext_vtab *v; - int i, rc, iMaxLevel = 0; - OptLeavesReader *readers; - int nReaders = 0; - LeafWriter writer; - sqlite3_stmt *s; - - memcpy(&pCursor, sqlite3_value_blob(argv[0]), sizeof(pCursor)); - v = cursor_vtab(pCursor); - - /* Flush any buffered updates before optimizing. */ - rc = flushPendingTerms(v); - if( rc!=SQLITE_OK ) goto err; - - rc = segdir_count(v, &nReaders, &iMaxLevel); - if( rc!=SQLITE_OK ) goto err; - if( nReaders==0 || nReaders==1 ){ - sqlite3_result_text(pContext, "Index already optimal", -1, - SQLITE_STATIC); - return; - } - - rc = sql_get_statement(v, SEGDIR_SELECT_ALL_STMT, &s); - if( rc!=SQLITE_OK ) goto err; - - readers = sqlite3_malloc(nReaders*sizeof(readers[0])); - if( readers==NULL ) goto err; - - /* Note that there will already be a segment at this position - ** until we call segdir_delete() on iMaxLevel. - */ - leafWriterInit(iMaxLevel, 0, &writer); - - i = 0; - while( (rc = sqlite3_step(s))==SQLITE_ROW ){ - sqlite_int64 iStart = sqlite3_column_int64(s, 0); - sqlite_int64 iEnd = sqlite3_column_int64(s, 1); - const char *pRootData = sqlite3_column_blob(s, 2); - int nRootData = sqlite3_column_bytes(s, 2); - - assert( i 0 ){ - leavesReaderDestroy(&readers[i].reader); - } - sqlite3_free(readers); - - /* If we've successfully gotten to here, delete the old segments - ** and flush the interior structure of the new segment. - */ - if( rc==SQLITE_OK ){ - for( i=0; i<=iMaxLevel; i++ ){ - rc = segdir_delete(v, i); - if( rc!=SQLITE_OK ) break; - } - - if( rc==SQLITE_OK ) rc = leafWriterFinalize(v, &writer); - } - - leafWriterDestroy(&writer); - - if( rc!=SQLITE_OK ) goto err; - - sqlite3_result_text(pContext, "Index optimized", -1, SQLITE_STATIC); - return; - - /* TODO(shess): Error-handling needs to be improved along the - ** lines of the dump_ functions. - */ - err: - { - char buf[512]; - sqlite3_snprintf(sizeof(buf), buf, "Error in optimize: %s", - sqlite3_errmsg(sqlite3_context_db_handle(pContext))); - sqlite3_result_error(pContext, buf, -1); - } - } -} - -#ifdef SQLITE_TEST -/* Generate an error of the form ": ". If msg is NULL, -** pull the error from the context's db handle. -*/ -static void generateError(sqlite3_context *pContext, - const char *prefix, const char *msg){ - char buf[512]; - if( msg==NULL ) msg = sqlite3_errmsg(sqlite3_context_db_handle(pContext)); - sqlite3_snprintf(sizeof(buf), buf, "%s: %s", prefix, msg); - sqlite3_result_error(pContext, buf, -1); -} - -/* Helper function to collect the set of terms in the segment into -** pTerms. The segment is defined by the leaf nodes between -** iStartBlockid and iEndBlockid, inclusive, or by the contents of -** pRootData if iStartBlockid is 0 (in which case the entire segment -** fit in a leaf). -*/ -static int collectSegmentTerms(fulltext_vtab *v, sqlite3_stmt *s, - fts3Hash *pTerms){ - const sqlite_int64 iStartBlockid = sqlite3_column_int64(s, 0); - const sqlite_int64 iEndBlockid = sqlite3_column_int64(s, 1); - const char *pRootData = sqlite3_column_blob(s, 2); - const int nRootData = sqlite3_column_bytes(s, 2); - LeavesReader reader; - int rc = leavesReaderInit(v, 0, iStartBlockid, iEndBlockid, - pRootData, nRootData, &reader); - if( rc!=SQLITE_OK ) return rc; - - while( rc==SQLITE_OK && !leavesReaderAtEnd(&reader) ){ - const char *pTerm = leavesReaderTerm(&reader); - const int nTerm = leavesReaderTermBytes(&reader); - void *oldValue = sqlite3Fts3HashFind(pTerms, pTerm, nTerm); - void *newValue = (void *)((char *)oldValue+1); - - /* From the comment before sqlite3Fts3HashInsert in fts3_hash.c, - ** the data value passed is returned in case of malloc failure. - */ - if( newValue==sqlite3Fts3HashInsert(pTerms, pTerm, nTerm, newValue) ){ - rc = SQLITE_NOMEM; - }else{ - rc = leavesReaderStep(v, &reader); - } - } - - leavesReaderDestroy(&reader); - return rc; -} - -/* Helper function to build the result string for dump_terms(). */ -static int generateTermsResult(sqlite3_context *pContext, fts3Hash *pTerms){ - int iTerm, nTerms, nResultBytes, iByte; - char *result; - TermData *pData; - fts3HashElem *e; - - /* Iterate pTerms to generate an array of terms in pData for - ** sorting. - */ - nTerms = fts3HashCount(pTerms); - assert( nTerms>0 ); - pData = sqlite3_malloc(nTerms*sizeof(TermData)); - if( pData==NULL ) return SQLITE_NOMEM; - - nResultBytes = 0; - for(iTerm = 0, e = fts3HashFirst(pTerms); e; iTerm++, e = fts3HashNext(e)){ - nResultBytes += fts3HashKeysize(e)+1; /* Term plus trailing space */ - assert( iTerm0 ); /* nTerms>0, nResultsBytes must be, too. */ - result = sqlite3_malloc(nResultBytes); - if( result==NULL ){ - sqlite3_free(pData); - return SQLITE_NOMEM; - } - - if( nTerms>1 ) qsort(pData, nTerms, sizeof(*pData), termDataCmp); - - /* Read the terms in order to build the result. */ - iByte = 0; - for(iTerm=0; iTerm0 ){ - rc = generateTermsResult(pContext, &terms); - if( rc==SQLITE_NOMEM ){ - generateError(pContext, "dump_terms", "out of memory"); - }else{ - assert( rc==SQLITE_OK ); - } - }else if( argc==3 ){ - /* The specific segment asked for could not be found. */ - generateError(pContext, "dump_terms", "segment not found"); - }else{ - /* No segments found. */ - /* TODO(shess): It should be impossible to reach this. This - ** case can only happen for an empty table, in which case - ** SQLite has no rows to call this function on. - */ - sqlite3_result_null(pContext); - } - } - sqlite3Fts3HashClear(&terms); - } -} - -/* Expand the DL_DEFAULT doclist in pData into a text result in -** pContext. -*/ -static void createDoclistResult(sqlite3_context *pContext, - const char *pData, int nData){ - DataBuffer dump; - DLReader dlReader; - - assert( pData!=NULL && nData>0 ); - - dataBufferInit(&dump, 0); - dlrInit(&dlReader, DL_DEFAULT, pData, nData); - for( ; !dlrAtEnd(&dlReader); dlrStep(&dlReader) ){ - char buf[256]; - PLReader plReader; - - plrInit(&plReader, &dlReader); - if( DL_DEFAULT==DL_DOCIDS || plrAtEnd(&plReader) ){ - sqlite3_snprintf(sizeof(buf), buf, "[%lld] ", dlrDocid(&dlReader)); - dataBufferAppend(&dump, buf, strlen(buf)); - }else{ - int iColumn = plrColumn(&plReader); - - sqlite3_snprintf(sizeof(buf), buf, "[%lld %d[", - dlrDocid(&dlReader), iColumn); - dataBufferAppend(&dump, buf, strlen(buf)); - - for( ; !plrAtEnd(&plReader); plrStep(&plReader) ){ - if( plrColumn(&plReader)!=iColumn ){ - iColumn = plrColumn(&plReader); - sqlite3_snprintf(sizeof(buf), buf, "] %d[", iColumn); - assert( dump.nData>0 ); - dump.nData--; /* Overwrite trailing space. */ - assert( dump.pData[dump.nData]==' '); - dataBufferAppend(&dump, buf, strlen(buf)); - } - if( DL_DEFAULT==DL_POSITIONS_OFFSETS ){ - sqlite3_snprintf(sizeof(buf), buf, "%d,%d,%d ", - plrPosition(&plReader), - plrStartOffset(&plReader), plrEndOffset(&plReader)); - }else if( DL_DEFAULT==DL_POSITIONS ){ - sqlite3_snprintf(sizeof(buf), buf, "%d ", plrPosition(&plReader)); - }else{ - assert( NULL=="Unhandled DL_DEFAULT value"); - } - dataBufferAppend(&dump, buf, strlen(buf)); - } - plrDestroy(&plReader); - - assert( dump.nData>0 ); - dump.nData--; /* Overwrite trailing space. */ - assert( dump.pData[dump.nData]==' '); - dataBufferAppend(&dump, "]] ", 3); - } - } - dlrDestroy(&dlReader); - - assert( dump.nData>0 ); - dump.nData--; /* Overwrite trailing space. */ - assert( dump.pData[dump.nData]==' '); - dump.pData[dump.nData] = '\0'; - assert( dump.nData>0 ); - - /* Passes ownership of dump's buffer to pContext. */ - sqlite3_result_text(pContext, dump.pData, dump.nData, sqlite3_free); - dump.pData = NULL; - dump.nData = dump.nCapacity = 0; -} - -/* Implements dump_doclist() for use in inspecting the fts3 index from -** tests. TEXT result containing a string representation of the -** doclist for the indicated term. dump_doclist(t, term, level, idx) -** dumps the doclist for term from the segment specified by level, idx -** (in %_segdir), while dump_doclist(t, term) dumps the logical -** doclist for the term across all segments. The per-segment doclist -** can contain deletions, while the full-index doclist will not -** (deletions are omitted). -** -** Result formats differ with the setting of DL_DEFAULTS. Examples: -** -** DL_DOCIDS: [1] [3] [7] -** DL_POSITIONS: [1 0[0 4] 1[17]] [3 1[5]] -** DL_POSITIONS_OFFSETS: [1 0[0,0,3 4,23,26] 1[17,102,105]] [3 1[5,20,23]] -** -** In each case the number after the outer '[' is the docid. In the -** latter two cases, the number before the inner '[' is the column -** associated with the values within. For DL_POSITIONS the numbers -** within are the positions, for DL_POSITIONS_OFFSETS they are the -** position, the start offset, and the end offset. -*/ -static void dumpDoclistFunc( - sqlite3_context *pContext, - int argc, sqlite3_value **argv -){ - fulltext_cursor *pCursor; - if( argc!=2 && argc!=4 ){ - generateError(pContext, "dump_doclist", "incorrect arguments"); - }else if( sqlite3_value_type(argv[0])!=SQLITE_BLOB || - sqlite3_value_bytes(argv[0])!=sizeof(pCursor) ){ - generateError(pContext, "dump_doclist", "illegal first argument"); - }else if( sqlite3_value_text(argv[1])==NULL || - sqlite3_value_text(argv[1])[0]=='\0' ){ - generateError(pContext, "dump_doclist", "empty second argument"); - }else{ - const char *pTerm = (const char *)sqlite3_value_text(argv[1]); - const int nTerm = strlen(pTerm); - fulltext_vtab *v; - int rc; - DataBuffer doclist; - - memcpy(&pCursor, sqlite3_value_blob(argv[0]), sizeof(pCursor)); - v = cursor_vtab(pCursor); - - dataBufferInit(&doclist, 0); - - /* termSelect() yields the same logical doclist that queries are - ** run against. - */ - if( argc==2 ){ - rc = termSelect(v, v->nColumn, pTerm, nTerm, 0, DL_DEFAULT, &doclist); - }else{ - sqlite3_stmt *s = NULL; - - /* Get our specific segment's information. */ - rc = sql_get_statement(v, SEGDIR_SELECT_SEGMENT_STMT, &s); - if( rc==SQLITE_OK ){ - rc = sqlite3_bind_int(s, 1, sqlite3_value_int(argv[2])); - if( rc==SQLITE_OK ){ - rc = sqlite3_bind_int(s, 2, sqlite3_value_int(argv[3])); - } - } - - if( rc==SQLITE_OK ){ - rc = sqlite3_step(s); - - if( rc==SQLITE_DONE ){ - dataBufferDestroy(&doclist); - generateError(pContext, "dump_doclist", "segment not found"); - return; - } - - /* Found a segment, load it into doclist. */ - if( rc==SQLITE_ROW ){ - const sqlite_int64 iLeavesEnd = sqlite3_column_int64(s, 1); - const char *pData = sqlite3_column_blob(s, 2); - const int nData = sqlite3_column_bytes(s, 2); - - /* loadSegment() is used by termSelect() to load each - ** segment's data. - */ - rc = loadSegment(v, pData, nData, iLeavesEnd, pTerm, nTerm, 0, - &doclist); - if( rc==SQLITE_OK ){ - rc = sqlite3_step(s); - - /* Should not have more than one matching segment. */ - if( rc!=SQLITE_DONE ){ - sqlite3_reset(s); - dataBufferDestroy(&doclist); - generateError(pContext, "dump_doclist", "invalid segdir"); - return; - } - rc = SQLITE_OK; - } - } - } - - sqlite3_reset(s); - } - - if( rc==SQLITE_OK ){ - if( doclist.nData>0 ){ - createDoclistResult(pContext, doclist.pData, doclist.nData); - }else{ - /* TODO(shess): This can happen if the term is not present, or - ** if all instances of the term have been deleted and this is - ** an all-index dump. It may be interesting to distinguish - ** these cases. - */ - sqlite3_result_text(pContext, "", 0, SQLITE_STATIC); - } - }else if( rc==SQLITE_NOMEM ){ - /* Handle out-of-memory cases specially because if they are - ** generated in fts3 code they may not be reflected in the db - ** handle. - */ - /* TODO(shess): Handle this more comprehensively. - ** sqlite3ErrStr() has what I need, but is internal. - */ - generateError(pContext, "dump_doclist", "out of memory"); - }else{ - generateError(pContext, "dump_doclist", NULL); - } - - dataBufferDestroy(&doclist); - } -} -#endif - -/* -** This routine implements the xFindFunction method for the FTS3 -** virtual table. -*/ -static int fulltextFindFunction( - sqlite3_vtab *pVtab, - int nArg, - const char *zName, - void (**pxFunc)(sqlite3_context*,int,sqlite3_value**), - void **ppArg -){ - if( strcmp(zName,"snippet")==0 ){ - *pxFunc = snippetFunc; - return 1; - }else if( strcmp(zName,"offsets")==0 ){ - *pxFunc = snippetOffsetsFunc; - return 1; - }else if( strcmp(zName,"rank")==0 ){ - *pxFunc = rankFunc; - return 1; - }else if( strcmp(zName,"optimize")==0 ){ - *pxFunc = optimizeFunc; - return 1; -#ifdef SQLITE_TEST - /* NOTE(shess): These functions are present only for testing - ** purposes. No particular effort is made to optimize their - ** execution or how they build their results. - */ - }else if( strcmp(zName,"dump_terms")==0 ){ - /* fprintf(stderr, "Found dump_terms\n"); */ - *pxFunc = dumpTermsFunc; - return 1; - }else if( strcmp(zName,"dump_doclist")==0 ){ - /* fprintf(stderr, "Found dump_doclist\n"); */ - *pxFunc = dumpDoclistFunc; - return 1; -#endif - } - return 0; -} - -/* -** Rename an fts3 table. -*/ -static int fulltextRename( - sqlite3_vtab *pVtab, - const char *zName -){ - fulltext_vtab *p = get_fulltext_vtab (pVtab); - int rc = SQLITE_NOMEM; - char *zSql = sqlite3_mprintf( - "ALTER TABLE %Q.'%q_content' RENAME TO '%q_content';" - "ALTER TABLE %Q.'%q_segments' RENAME TO '%q_segments';" - "ALTER TABLE %Q.'%q_segdir' RENAME TO '%q_segdir';" - , p->zDb, p->zName, zName - , p->zDb, p->zName, zName - , p->zDb, p->zName, zName - ); - if( zSql ){ - rc = sqlite3_exec(p->db, zSql, 0, 0, 0); - sqlite3_free(zSql); - } - return rc; -} - -static const sqlite3_module fts3Module = { - /* iVersion */ 0, - /* xCreate */ fulltextCreate, - /* xConnect */ fulltextConnect, - /* xBestIndex */ fulltextBestIndex, - /* xDisconnect */ fulltextDisconnect, - /* xDestroy */ fulltextDestroy, - /* xOpen */ fulltextOpen, - /* xClose */ fulltextClose, - /* xFilter */ fulltextFilter, - /* xNext */ fulltextNext, - /* xEof */ fulltextEof, - /* xColumn */ fulltextColumn, - /* xRowid */ fulltextRowid, - /* xUpdate */ NULL, - /* xBegin */ fulltextBegin, - /* xSync */ fulltextSync, - /* xCommit */ fulltextCommit, - /* xRollback */ fulltextRollback, - /* xFindFunction */ fulltextFindFunction, - /* xRename */ fulltextRename, -}; - -int sqlite3Fts3InitHashTable(sqlite3 *, fts3Hash *, const char *); - -/* -** Initialise the fts3 extension. If this extension is built as part -** of the sqlite library, then this function is called directly by -** SQLite. If fts3 is built as a dynamically loadable extension, this -** function is called by the sqlite3_extension_init() entry point. -*/ -TrackerFts *tracker_fts_new(sqlite3 *db, int create){ - int rc = SQLITE_OK; - fulltext_vtab *v; - - if (create){ - createTables (db, "main", "fts"); - } - - v = constructVtab(db, "main", "fts", NULL); - - if (v == NULL) { - return NULL; - } - - /* Create the virtual table wrapper around the hash-table and overload - ** the two scalar functions. If this is successful, register the - ** module with sqlite. - */ - if( SQLITE_OK==rc - && SQLITE_OK==(rc = sqlite3_overload_function(db, "rank", -1)) - && SQLITE_OK==(rc = sqlite3_overload_function(db, "snippet", -1)) - && SQLITE_OK==(rc = sqlite3_overload_function(db, "offsets", -1)) - && SQLITE_OK==(rc = sqlite3_overload_function(db, "optimize", -1)) -#ifdef SQLITE_TEST - && SQLITE_OK==(rc = sqlite3_overload_function(db, "dump_terms", -1)) - && SQLITE_OK==(rc = sqlite3_overload_function(db, "dump_doclist", -1)) -#endif - ){ - rc = sqlite3_create_module_v2( - db, "trackerfts", &fts3Module, v, NULL - ); - if (SQLITE_OK != rc){ - fulltext_vtab_destroy (v); - return NULL; - } - - if (create){ - rc = sqlite3_exec(db, "CREATE VIRTUAL TABLE fts USING trackerfts", NULL, 0, NULL); - } - } - - if (SQLITE_OK != rc){ - fulltext_vtab_destroy (v); - return NULL; - } - - return v; -} - -void tracker_fts_free (TrackerFts *fts){ - fulltext_vtab_destroy (fts); -} - -int tracker_fts_update_init(TrackerFts *fts, int id){ - return initPendingTerms(fts, id); -} - -int tracker_fts_update_text(TrackerFts *fts, int id, int column_id, - const char *text, gboolean limit_word_length){ - return buildTerms(fts, id, text, column_id, limit_word_length); -} - -void tracker_fts_update_commit(TrackerFts *fts){ - flushPendingTerms(fts); - clearPendingTerms(fts); -} - -void tracker_fts_update_rollback(TrackerFts *fts){ - clearPendingTerms(fts); -} - diff -Nru tracker-0.15.1/src/libtracker-fts/tracker-fts.h tracker-0.15.2/src/libtracker-fts/tracker-fts.h --- tracker-0.15.1/src/libtracker-fts/tracker-fts.h 2012-04-19 09:16:38.000000000 +0000 +++ tracker-0.15.2/src/libtracker-fts/tracker-fts.h 2013-02-14 19:30:47.000000000 +0000 @@ -1,44 +1,43 @@ /* -** 2006 Oct 10 -** -** The author disclaims copyright to this source code. In place of -** a legal notice, here is a blessing: -** -** May you do good and not evil. -** May you find forgiveness for yourself and forgive others. -** May you share freely, never taking more than you give. -** -****************************************************************************** -** -** This header file is used by programs that want to link against the -** FTS3 library. -*/ + * Copyright (C) 2011 Nokia + * + * Author: Carlos Garnacho + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA + */ #ifndef __TRACKER_FTS_H__ #define __TRACKER_FTS_H__ #include -#include #include G_BEGIN_DECLS -typedef const gchar *(*TrackerFtsMapFunc) (gint id); +gboolean tracker_fts_init (void); +gboolean tracker_fts_init_db (sqlite3 *db); +gboolean tracker_fts_create_table (sqlite3 *db, + gchar *table_name, + GHashTable *tables, + GHashTable *grouped_columns); +gboolean tracker_fts_alter_table (sqlite3 *db, + gchar *table_name, + GHashTable *tables, + GHashTable *grouped_columns); -typedef struct fulltext_vtab TrackerFts; - -TrackerFts *tracker_fts_new (sqlite3 *db, - int create); -void tracker_fts_free (TrackerFts *fts); -int tracker_fts_update_init (TrackerFts *fts, - int id); -int tracker_fts_update_text (TrackerFts *fts, - int id, - int column_id, - const char *text, - gboolean limit_word_length); -void tracker_fts_update_commit (TrackerFts *fts); -void tracker_fts_update_rollback (TrackerFts *fts); G_END_DECLS diff -Nru tracker-0.15.1/src/libtracker-miner/tracker-password-provider-gnome.c tracker-0.15.2/src/libtracker-miner/tracker-password-provider-gnome.c --- tracker-0.15.1/src/libtracker-miner/tracker-password-provider-gnome.c 2013-01-24 17:25:23.000000000 +0000 +++ tracker-0.15.2/src/libtracker-miner/tracker-password-provider-gnome.c 2013-02-14 19:30:47.000000000 +0000 @@ -236,7 +236,7 @@ secret = secret_item_get_secret (found); } - if (secret != NULL) { + if (secret == NULL) { g_set_error_literal (error, TRACKER_PASSWORD_PROVIDER_ERROR, TRACKER_PASSWORD_PROVIDER_ERROR_NOTFOUND, @@ -249,7 +249,7 @@ if (username) { /* Make sure it is always set */ attributes = secret_item_get_attributes (found); - *username = g_hash_table_lookup (attributes, "user"); + *username = g_strdup (g_hash_table_lookup (attributes, "username")); g_hash_table_unref (attributes); } diff -Nru tracker-0.15.1/src/plugins/firefox/install.rdf tracker-0.15.2/src/plugins/firefox/install.rdf --- tracker-0.15.1/src/plugins/firefox/install.rdf 2013-01-24 17:25:36.000000000 +0000 +++ tracker-0.15.2/src/plugins/firefox/install.rdf 2013-02-15 11:28:59.000000000 +0000 @@ -4,7 +4,7 @@ trackerfox@bustany.org 2 TrackerFox - 0.15.1 + 0.15.2 Adrien Bustany Makes your bookmarks searchable from Tracker diff -Nru tracker-0.15.1/src/plugins/thunderbird/install.rdf tracker-0.15.2/src/plugins/thunderbird/install.rdf --- tracker-0.15.1/src/plugins/thunderbird/install.rdf 2013-01-24 17:25:36.000000000 +0000 +++ tracker-0.15.2/src/plugins/thunderbird/install.rdf 2013-02-15 11:28:58.000000000 +0000 @@ -4,7 +4,7 @@ trackerbird@bustany.org 2 TrackerBird - 0.15.1 + 0.15.2 Adrien Bustany Index your Thunderbird emails with Tracker diff -Nru tracker-0.15.1/src/tracker-extract/tracker-extract-gstreamer.c tracker-0.15.2/src/tracker-extract/tracker-extract-gstreamer.c --- tracker-0.15.1/src/tracker-extract/tracker-extract-gstreamer.c 2013-01-04 14:23:07.000000000 +0000 +++ tracker-0.15.2/src/tracker-extract/tracker-extract-gstreamer.c 2013-02-14 19:30:47.000000000 +0000 @@ -44,7 +44,8 @@ #endif #if defined(GSTREAMER_BACKEND_GUPNP_DLNA) -#include +#include +#include #endif #include @@ -135,13 +136,12 @@ GList *streams; #endif -#if defined(GSTREAMER_BACKEND_DISCOVERER) +#if defined(GSTREAMER_BACKEND_DISCOVERER) || \ + defined(GSTREAMER_BACKEND_GUPNP_DLNA) GstDiscoverer *discoverer; #endif #if defined(GSTREAMER_BACKEND_GUPNP_DLNA) - GUPnPDLNADiscoverer *discoverer; - GUPnPDLNAInformation *dlna_info; const gchar *dlna_profile; const gchar *dlna_mime; #endif @@ -1289,11 +1289,6 @@ gst_discoverer_stream_info_list_free (extractor->streams); if (extractor->discoverer) g_object_unref (extractor->discoverer); -#if defined(GSTREAMER_BACKEND_GUPNP_DLNA) - if (extractor->dlna_info) - g_object_unref (extractor->dlna_info); -#endif /* GSTREAMER_BACKEND_GUPNP_DLNA */ - } static gboolean @@ -1317,43 +1312,6 @@ extractor->has_video = FALSE; extractor->has_audio = FALSE; -#if defined(GSTREAMER_BACKEND_GUPNP_DLNA) - extractor->discoverer = gupnp_dlna_discoverer_new (5 * GST_SECOND, TRUE, FALSE); - -#if defined(GST_TYPE_DISCOVERER_FLAGS) - /* Tell the discoverer to use *only* Tagreadbin backend. - * See https://bugzilla.gnome.org/show_bug.cgi?id=656345 - */ - g_debug ("Using Tagreadbin backend in the GUPnP-DLNA discoverer..."); - g_object_set (extractor->discoverer, - "flags", GST_DISCOVERER_FLAGS_EXTRACT_LIGHTWEIGHT, - NULL); -#endif - - /* Uri is const, the API should be const, but it isn't and it - * calls gst_discoverer_discover_uri() - */ - extractor->dlna_info = gupnp_dlna_discoverer_discover_uri_sync (extractor->discoverer, - uri, - &error); - if (error) { - g_warning ("Call to gupnp_dlna_discoverer_discover_uri_sync() failed: %s", - error->message); - g_error_free (error); - return FALSE; - } - - if (!extractor->dlna_info) { - g_warning ("No DLNA info discovered, bailing out"); - return TRUE; - } - - /* Get DLNA profile */ - extractor->dlna_profile = gupnp_dlna_information_get_name (extractor->dlna_info); - extractor->dlna_mime = gupnp_dlna_information_get_mime (extractor->dlna_info); - - info = (GstDiscovererInfo *) gupnp_dlna_information_get_info (extractor->dlna_info); -#else /* GSTREAMER_BACKEND_GUPNP_DLNA */ extractor->discoverer = gst_discoverer_new (5 * GST_SECOND, &error); if (!extractor->discoverer) { g_warning ("Couldn't create discoverer: %s", @@ -1381,13 +1339,32 @@ g_error_free (error); return FALSE; } -#endif /* GSTREAMER_BACKEND_GUPNP_DLNA */ if (!info) { g_warning ("Nothing discovered, bailing out"); return TRUE; } +#if defined(GSTREAMER_BACKEND_GUPNP_DLNA) + { + GUPnPDLNAProfile *profile; + GUPnPDLNAInformation *dlna_info; + GUPnPDLNAProfileGuesser *guesser; + + dlna_info = gupnp_dlna_gst_utils_information_from_discoverer_info (info); + guesser = gupnp_dlna_profile_guesser_new (TRUE, FALSE); + profile = gupnp_dlna_profile_guesser_guess_profile_from_info (guesser, dlna_info); + + if (profile) { + extractor->dlna_profile = gupnp_dlna_profile_get_name (profile); + extractor->dlna_mime = gupnp_dlna_profile_get_mime (profile); + } + + g_object_unref (guesser); + g_object_unref (dlna_info); + } +#endif + extractor->duration = gst_discoverer_info_get_duration (info) / GST_SECOND; /* Retrieve global tags */ diff -Nru tracker-0.15.1/src/tracker-extract/tracker-extract-playlist.c tracker-0.15.2/src/tracker-extract/tracker-extract-playlist.c --- tracker-0.15.1/src/tracker-extract/tracker-extract-playlist.c 2013-01-21 12:47:20.000000000 +0000 +++ tracker-0.15.2/src/tracker-extract/tracker-extract-playlist.c 2013-02-06 09:30:29.000000000 +0000 @@ -48,12 +48,27 @@ typedef struct { guint32 track_counter; gint64 total_time; + gchar *title; TrackerSparqlBuilder *metadata; } PlaylistMetadata; static void +playlist_started (TotemPlParser *parser, + gchar *to_uri, + TotemPlParserMetadata *to_metadata, + gpointer user_data) +{ + PlaylistMetadata *data; + + data = (PlaylistMetadata *) user_data; + + /* Avoid looking up every time */ + data->title = g_strdup (g_hash_table_lookup (to_metadata, TOTEM_PL_PARSER_FIELD_TITLE)); +} + +static void entry_parsed (TotemPlParser *parser, - const gchar *to_uri, + gchar *to_uri, GHashTable *to_metadata, gpointer user_data) { @@ -108,48 +123,51 @@ tracker_extract_get_metadata (TrackerExtractInfo *info) { TotemPlParser *pl; - TotemPlParserResult result; - TrackerSparqlBuilder *metadata = tracker_extract_info_get_metadata_builder (info); - PlaylistMetadata data = { 0, 0, metadata }; + TrackerSparqlBuilder *metadata; + PlaylistMetadata data; GFile *file; gchar *uri; pl = totem_pl_parser_new (); file = tracker_extract_info_get_file (info); uri = g_file_get_uri (file); + metadata = tracker_extract_info_get_metadata_builder (info); + + data.track_counter = PLAYLIST_DEFAULT_NO_TRACKS; + data.total_time = PLAYLIST_DEFAULT_DURATION; + data.title = NULL; + data.metadata = metadata; g_object_set (pl, "recurse", FALSE, "disable-unsafe", TRUE, NULL); - g_signal_connect (G_OBJECT (pl), "entry-parsed", - G_CALLBACK (entry_parsed), &data); + g_signal_connect (G_OBJECT (pl), "playlist-started", G_CALLBACK (playlist_started), &data); + g_signal_connect (G_OBJECT (pl), "entry-parsed", G_CALLBACK (entry_parsed), &data); tracker_sparql_builder_predicate (metadata, "a"); tracker_sparql_builder_object (metadata, "nmm:Playlist"); tracker_sparql_builder_object (metadata, "nfo:MediaList"); - result = totem_pl_parser_parse (pl, uri, FALSE); - - switch (result) { - case TOTEM_PL_PARSER_RESULT_SUCCESS: - break; - case TOTEM_PL_PARSER_RESULT_IGNORED: - case TOTEM_PL_PARSER_RESULT_ERROR: - case TOTEM_PL_PARSER_RESULT_UNHANDLED: - data.total_time = PLAYLIST_DEFAULT_NO_TRACKS; - data.track_counter = PLAYLIST_DEFAULT_DURATION; - break; - default: - g_warning ("Undefined result in totem-plparser"); - } + if (totem_pl_parser_parse (pl, uri, FALSE) == TOTEM_PL_PARSER_RESULT_SUCCESS) { + if (data.title != NULL) { + g_message ("Playlist title:'%s'", data.title); + tracker_sparql_builder_predicate (metadata, "nie:title"); + tracker_sparql_builder_object_unvalidated (metadata, data.title); + g_free (data.title); + } else { + g_message ("Playlist has no title"); + } - if (data.total_time > 0) { - tracker_sparql_builder_predicate (metadata, "nfo:listDuration"); - tracker_sparql_builder_object_int64 (metadata, data.total_time); - } + if (data.total_time > 0) { + tracker_sparql_builder_predicate (metadata, "nfo:listDuration"); + tracker_sparql_builder_object_int64 (metadata, data.total_time); + } - if (data.track_counter > 0) { - tracker_sparql_builder_predicate (metadata, "nfo:entryCounter"); - tracker_sparql_builder_object_int64 (metadata, data.track_counter); + if (data.track_counter > 0) { + tracker_sparql_builder_predicate (metadata, "nfo:entryCounter"); + tracker_sparql_builder_object_int64 (metadata, data.track_counter); + } + } else { + g_warning ("Playlist could not be parsed, no error given"); } g_object_unref (pl); diff -Nru tracker-0.15.1/src/tracker-needle/tracker-needle.c tracker-0.15.2/src/tracker-needle/tracker-needle.c --- tracker-0.15.1/src/tracker-needle/tracker-needle.c 2013-01-24 16:46:16.000000000 +0000 +++ tracker-0.15.2/src/tracker-needle/tracker-needle.c 2013-02-15 11:38:43.000000000 +0000 @@ -389,15 +389,18 @@ _tmp6_ = self->priv->categories_model; tracker_result_store_add_query (_tmp6_, TRACKER_QUERY_TYPE_MUSIC, TRACKER_QUERY_MATCH_FTS_INDIRECT, "?urn", "nie:url(?urn)", "tracker:coalesce(nie:title(?urn), nfo:fileName(?urn))", "fn:string-join((?performer, ?album), \" - \")", "nfo:duration(?urn)", "nie:url(?urn)", NULL); _tmp7_ = self->priv->categories_model; - tracker_result_store_add_query (_tmp7_, TRACKER_QUERY_TYPE_VIDEOS, TRACKER_QUERY_MATCH_FTS, "?urn", "nie:url(?urn)", "tracker:coalesce(nie:title(?urn), nfo:fileName(?urn))", "\"\"", "nfo:duration(?urn)", "nie:url(?urn)", NULL); + tracker_result_store_add_query (_tmp7_, TRACKER_QUERY_TYPE_VIDEOS, TRACKER_QUERY_MATCH_FTS, "?urn", "nie:url(?urn)", "tracker:coalesce(fts:snippet(?urn),nie:title(?urn), nfo:fileName(?urn)" \ +")", "\"\"", "nfo:duration(?urn)", "nie:url(?urn)", NULL); _tmp8_ = self->priv->categories_model; - tracker_result_store_add_query (_tmp8_, TRACKER_QUERY_TYPE_DOCUMENTS, TRACKER_QUERY_MATCH_FTS, "?urn", "nie:url(?urn)", "tracker:coalesce(nie:title(?urn), nfo:fileName(?urn))", "tracker:coalesce(nco:fullname(?creator), nco:fullname(?publisher))", "nfo:pageCount(?urn)", "nie:url(?urn)", NULL); + tracker_result_store_add_query (_tmp8_, TRACKER_QUERY_TYPE_DOCUMENTS, TRACKER_QUERY_MATCH_FTS_INDIRECT, "?urn", "nie:url(?urn)", "tracker:coalesce(nie:title(?urn), nfo:fileName(?urn))", "tracker:coalesce(fts:snippet(?urn),nco:fullname(?creator), nco:fullnam" \ +"e(?publisher))", "nfo:pageCount(?urn)", "nie:url(?urn)", NULL); _tmp9_ = self->priv->categories_model; - tracker_result_store_add_query (_tmp9_, TRACKER_QUERY_TYPE_MAIL, TRACKER_QUERY_MATCH_FTS, "?urn", "nie:url(?urn)", "nmo:messageSubject(?urn)", "tracker:coalesce(nco:fullname(?sender), nco:nickname(?sender), nco:ema" \ -"ilAddress(?sender))", "nmo:receivedDate(?urn)", "fn:concat(\"To: \", tracker:coalesce(nco:fullname(?to), nco:nickname(?" \ + tracker_result_store_add_query (_tmp9_, TRACKER_QUERY_TYPE_MAIL, TRACKER_QUERY_MATCH_FTS, "?urn", "nie:url(?urn)", "nmo:messageSubject(?urn)", "tracker:coalesce(fts:snippet(?urn),nco:fullname(?sender), nco:nickname" \ +"(?sender), nco:emailAddress(?sender))", "nmo:receivedDate(?urn)", "fn:concat(\"To: \", tracker:coalesce(nco:fullname(?to), nco:nickname(?" \ "to), nco:emailAddress(?to)))", NULL); _tmp10_ = self->priv->categories_model; - tracker_result_store_add_query (_tmp10_, TRACKER_QUERY_TYPE_FOLDERS, TRACKER_QUERY_MATCH_FTS, "?urn", "nie:url(?urn)", "tracker:coalesce(nie:title(?urn), nfo:fileName(?urn))", "nie:url(?parent)", "nfo:fileLastModified(?urn)", "?tooltip", NULL); + tracker_result_store_add_query (_tmp10_, TRACKER_QUERY_TYPE_FOLDERS, TRACKER_QUERY_MATCH_FTS, "?urn", "nie:url(?urn)", "tracker:coalesce(fts:snippet(?urn),nie:title(?urn), nfo:fileName(?urn)" \ +")", "nie:url(?parent)", "nfo:fileLastModified(?urn)", "?tooltip", NULL); _tmp11_ = self->priv->categories_model; tracker_result_store_add_query (_tmp11_, TRACKER_QUERY_TYPE_BOOKMARKS, TRACKER_QUERY_MATCH_FTS, "?urn", "nie:url(?bookmark)", "nie:title(?urn)", "nie:url(?bookmark)", "nie:contentLastModified(?urn)", "nie:url(?bookmark)", NULL); _tmp12_ = tracker_result_store_new (7); diff -Nru tracker-0.15.1/src/tracker-needle/tracker-needle.desktop tracker-0.15.2/src/tracker-needle/tracker-needle.desktop --- tracker-0.15.1/src/tracker-needle/tracker-needle.desktop 2013-01-24 17:25:43.000000000 +0000 +++ tracker-0.15.2/src/tracker-needle/tracker-needle.desktop 2013-02-15 11:38:44.000000000 +0000 @@ -63,5 +63,5 @@ X-GNOME-Bugzilla-Bugzilla=GNOME X-GNOME-Bugzilla-Product=tracker X-GNOME-Bugzilla-Component=Tracker Needle -X-GNOME-Bugzilla-Version=0.15.1 +X-GNOME-Bugzilla-Version=0.15.2 diff -Nru tracker-0.15.1/src/tracker-needle/tracker-needle.vala tracker-0.15.2/src/tracker-needle/tracker-needle.vala --- tracker-0.15.1/src/tracker-needle/tracker-needle.vala 2012-08-07 19:05:10.000000000 +0000 +++ tracker-0.15.2/src/tracker-needle/tracker-needle.vala 2013-02-14 19:30:47.000000000 +0000 @@ -105,16 +105,16 @@ Tracker.Query.Match.FTS, "?urn", "nie:url(?urn)", - "tracker:coalesce(nie:title(?urn), nfo:fileName(?urn))", + "tracker:coalesce(fts:snippet(?urn),nie:title(?urn), nfo:fileName(?urn))", "\"\"", "nfo:duration(?urn)", "nie:url(?urn)"); categories_model.add_query (Tracker.Query.Type.DOCUMENTS, - Tracker.Query.Match.FTS, + Tracker.Query.Match.FTS_INDIRECT, "?urn", "nie:url(?urn)", "tracker:coalesce(nie:title(?urn), nfo:fileName(?urn))", - "tracker:coalesce(nco:fullname(?creator), nco:fullname(?publisher))", + "tracker:coalesce(fts:snippet(?urn),nco:fullname(?creator), nco:fullname(?publisher))", "nfo:pageCount(?urn)", "nie:url(?urn)"); categories_model.add_query (Tracker.Query.Type.MAIL, @@ -122,14 +122,14 @@ "?urn", "nie:url(?urn)", "nmo:messageSubject(?urn)", - "tracker:coalesce(nco:fullname(?sender), nco:nickname(?sender), nco:emailAddress(?sender))", + "tracker:coalesce(fts:snippet(?urn),nco:fullname(?sender), nco:nickname(?sender), nco:emailAddress(?sender))", "nmo:receivedDate(?urn)", "fn:concat(\"To: \", tracker:coalesce(nco:fullname(?to), nco:nickname(?to), nco:emailAddress(?to)))"); categories_model.add_query (Tracker.Query.Type.FOLDERS, Tracker.Query.Match.FTS, "?urn", "nie:url(?urn)", - "tracker:coalesce(nie:title(?urn), nfo:fileName(?urn))", + "tracker:coalesce(fts:snippet(?urn),nie:title(?urn), nfo:fileName(?urn))", "nie:url(?parent)", "nfo:fileLastModified(?urn)", "?tooltip"); diff -Nru tracker-0.15.1/src/tracker-needle/tracker-query.c tracker-0.15.2/src/tracker-needle/tracker-query.c --- tracker-0.15.1/src/tracker-needle/tracker-query.c 2013-01-24 16:46:16.000000000 +0000 +++ tracker-0.15.2/src/tracker-needle/tracker-query.c 2013-02-15 11:38:43.000000000 +0000 @@ -455,7 +455,7 @@ _inner_error_ = NULL; _tmp2_ = e; _tmp3_ = _tmp2_->message; - g_warning ("tracker-query.vala:220: Could not get Sparql connection: %s", _tmp3_); + g_warning ("tracker-query.vala:228: Could not get Sparql connection: %s", _tmp3_); _g_error_free0 (e); } __finally3: @@ -598,8 +598,10 @@ TrackerQueryType _tmp6_; gboolean _tmp11_; gboolean _tmp12_ = FALSE; - TrackerQueryType _tmp13_; - gboolean _tmp21_; + gboolean _tmp13_ = FALSE; + TrackerQueryType _tmp14_; + gboolean _tmp16_; + gboolean _tmp24_; g_return_val_if_fail (self != NULL, FALSE); _tmp1_ = query_type; if (_tmp1_ != TRACKER_QUERY_TYPE_IMAGES) { @@ -613,7 +615,7 @@ if (_tmp3_) { TrackerQueryType _tmp4_; _tmp4_ = query_type; - g_critical ("tracker-query.vala:245: You can not use a non-IMAGES query (%d) with N" \ + g_critical ("tracker-query.vala:253: You can not use a non-IMAGES query (%d) with N" \ "ONE matching", (gint) _tmp4_); result = FALSE; return result; @@ -638,47 +640,55 @@ } _tmp11_ = _tmp5_; if (_tmp11_) { - g_critical ("tracker-query.vala:251: You can not use a MUSIC query with match TITLE" \ + g_critical ("tracker-query.vala:259: You can not use a MUSIC query with match TITLE" \ "S or FTS, INDIRECT required"); result = FALSE; return result; } - _tmp13_ = query_type; - if (_tmp13_ != TRACKER_QUERY_TYPE_MUSIC) { - gboolean _tmp14_ = FALSE; - gboolean _tmp15_ = FALSE; - TrackerQueryMatch _tmp16_; - gboolean _tmp18_; - gboolean _tmp20_; - _tmp16_ = match_type; - if (_tmp16_ == TRACKER_QUERY_MATCH_NONE) { - _tmp15_ = TRUE; + _tmp14_ = query_type; + if (_tmp14_ != TRACKER_QUERY_TYPE_MUSIC) { + TrackerQueryType _tmp15_; + _tmp15_ = query_type; + _tmp13_ = _tmp15_ != TRACKER_QUERY_TYPE_DOCUMENTS; + } else { + _tmp13_ = FALSE; + } + _tmp16_ = _tmp13_; + if (_tmp16_) { + gboolean _tmp17_ = FALSE; + gboolean _tmp18_ = FALSE; + TrackerQueryMatch _tmp19_; + gboolean _tmp21_; + gboolean _tmp23_; + _tmp19_ = match_type; + if (_tmp19_ == TRACKER_QUERY_MATCH_NONE) { + _tmp18_ = TRUE; } else { - TrackerQueryMatch _tmp17_; - _tmp17_ = match_type; - _tmp15_ = _tmp17_ == TRACKER_QUERY_MATCH_FTS; - } - _tmp18_ = _tmp15_; - if (_tmp18_) { - _tmp14_ = TRUE; + TrackerQueryMatch _tmp20_; + _tmp20_ = match_type; + _tmp18_ = _tmp20_ == TRACKER_QUERY_MATCH_FTS; + } + _tmp21_ = _tmp18_; + if (_tmp21_) { + _tmp17_ = TRUE; } else { - TrackerQueryMatch _tmp19_; - _tmp19_ = match_type; - _tmp14_ = _tmp19_ == TRACKER_QUERY_MATCH_TITLES; + TrackerQueryMatch _tmp22_; + _tmp22_ = match_type; + _tmp17_ = _tmp22_ == TRACKER_QUERY_MATCH_TITLES; } - _tmp20_ = _tmp14_; - _tmp12_ = !_tmp20_; + _tmp23_ = _tmp17_; + _tmp12_ = !_tmp23_; } else { _tmp12_ = FALSE; } - _tmp21_ = _tmp12_; - if (_tmp21_) { - TrackerQueryType _tmp22_; - TrackerQueryMatch _tmp23_; - _tmp22_ = query_type; - _tmp23_ = match_type; - g_critical ("tracker-query.vala:258: You can not use a non-MUSIC query (%d) with IN" \ -"DIRECT matching (%d)", (gint) _tmp22_, (gint) _tmp23_); + _tmp24_ = _tmp12_; + if (_tmp24_) { + TrackerQueryType _tmp25_; + TrackerQueryMatch _tmp26_; + _tmp25_ = query_type; + _tmp26_ = match_type; + g_critical ("tracker-query.vala:267: You can not use a non-MUSIC or non-DOCUMENTS q" \ +"uery (%d) with INDIRECT matching (%d)", (gint) _tmp25_, (gint) _tmp26_); result = FALSE; return result; } @@ -806,7 +816,7 @@ } } _data_->_tmp14_ = _data_->match_type; - g_debug ("tracker-query.vala:282: match_type:%d", (gint) _data_->_tmp14_); + g_debug ("tracker-query.vala:291: match_type:%d", (gint) _data_->_tmp14_); _data_->_tmp18_ = _data_->match_type; if (_data_->_tmp18_ != TRACKER_QUERY_MATCH_NONE) { _data_->_tmp19_ = _data_->match_type; @@ -839,7 +849,7 @@ } _data_->_tmp29_ = _data_->_tmp15_; if (_data_->_tmp29_) { - g_warning ("tracker-query.vala:287: Criteria was NULL or an empty string no query " \ + g_warning ("tracker-query.vala:296: Criteria was NULL or an empty string no query " \ "performed"); _data_->result = (guint) 0; _g_object_unref0 (_data_->cursor); @@ -987,7 +997,7 @@ _data_->_inner_error_ = NULL; _data_->_tmp91_ = _data_->e; _data_->_tmp92_ = _data_->_tmp91_->message; - g_warning ("tracker-query.vala:322: Could not run Sparql count query: %s", _data_->_tmp92_); + g_warning ("tracker-query.vala:331: Could not run Sparql count query: %s", _data_->_tmp92_); _g_error_free0 (_data_->e); } __finally4: @@ -1183,7 +1193,7 @@ } _data_->_tmp28_ = _data_->_tmp14_; if (_data_->_tmp28_) { - g_warning ("tracker-query.vala:350: Criteria was NULL or an empty string no query " \ + g_warning ("tracker-query.vala:359: Criteria was NULL or an empty string no query " \ "performed"); _data_->result = NULL; _g_object_unref0 (_data_->cursor); @@ -1197,7 +1207,7 @@ } _data_->_tmp29_ = _data_->self->priv->_limit; if (_data_->_tmp29_ < ((guint) 1)) { - g_warning ("tracker-query.vala:355: Limit was < 1, no query performed"); + g_warning ("tracker-query.vala:364: Limit was < 1, no query performed"); _data_->result = NULL; _g_object_unref0 (_data_->cursor); if (_data_->_state_ == 0) { @@ -1333,7 +1343,7 @@ _g_free0 (_data_->_tmp97_); _g_free0 (_data_->_tmp95_); _data_->_tmp98_ = _data_->self->priv->_query; - g_debug ("tracker-query.vala:387: Running query: '%s'", _data_->_tmp98_); + g_debug ("tracker-query.vala:396: Running query: '%s'", _data_->_tmp98_); { _data_->_tmp99_ = tracker_query_connection; _data_->_tmp100_ = _data_->self->priv->_query; @@ -1357,7 +1367,7 @@ _data_->_inner_error_ = NULL; _data_->_tmp103_ = _data_->e; _data_->_tmp104_ = _data_->_tmp103_->message; - g_warning ("tracker-query.vala:392: Could not run Sparql query: %s", _data_->_tmp104_); + g_warning ("tracker-query.vala:401: Could not run Sparql query: %s", _data_->_tmp104_); _g_error_free0 (_data_->e); } __finally5: @@ -1382,7 +1392,7 @@ return FALSE; } } - g_debug ("tracker-query.vala:395: Done"); + g_debug ("tracker-query.vala:404: Done"); _data_->result = _data_->cursor; _g_free0 (_data_->match); if (_data_->_state_ == 0) { @@ -1722,9 +1732,17 @@ " %s\n" \ " }"); _tmp14_ = g_strdup ("WHERE {\n" \ -" ?urn a nfo:Document ;\n" \ -" nie:url ?tooltip .\n" \ -" %s\n" \ +" {\n" \ +" ?urn nco:creator ?match\n" \ +" } UNION {\n" \ +" ?urn nco:publisher ?match\n" \ +" } UNION {\n" \ +" ?urn a nfo:Document .\n" \ +" ?match a nfo:Document\n" \ +" FILTER (?urn = ?match)\n" \ +" }\n" \ +" %s .\n" \ +" ?urn nie:url ?tooltip .\n" \ " OPTIONAL {\n" \ " ?urn nco:creator ?creator .\n" \ " }\n" \ diff -Nru tracker-0.15.1/src/tracker-needle/tracker-query.vala tracker-0.15.2/src/tracker-needle/tracker-query.vala --- tracker-0.15.1/src/tracker-needle/tracker-query.vala 2012-08-07 19:05:10.000000000 +0000 +++ tracker-0.15.2/src/tracker-needle/tracker-query.vala 2013-02-06 09:30:03.000000000 +0000 @@ -129,9 +129,17 @@ // DOCUMENTS "WHERE { - ?urn a nfo:Document ; - nie:url ?tooltip . - %s + { + ?urn nco:creator ?match + } UNION { + ?urn nco:publisher ?match + } UNION { + ?urn a nfo:Document . + ?match a nfo:Document + FILTER (?urn = ?match) + } + %s . + ?urn nie:url ?tooltip . OPTIONAL { ?urn nco:creator ?creator . } @@ -252,10 +260,11 @@ return false; } - if (query_type != Type.MUSIC && !(match_type == Match.NONE || - match_type == Match.FTS || - match_type == Match.TITLES)) { - critical ("You can not use a non-MUSIC query (%d) with INDIRECT matching (%d)", query_type, match_type); + if ((query_type != Type.MUSIC && query_type != Type.DOCUMENTS) && + !(match_type == Match.NONE || + match_type == Match.FTS || + match_type == Match.TITLES)) { + critical ("You can not use a non-MUSIC or non-DOCUMENTS query (%d) with INDIRECT matching (%d)", query_type, match_type); return false; } diff -Nru tracker-0.15.1/src/tracker-needle/tracker-view.c tracker-0.15.2/src/tracker-needle/tracker-view.c --- tracker-0.15.1/src/tracker-needle/tracker-view.c 2013-01-24 16:46:16.000000000 +0000 +++ tracker-0.15.2/src/tracker-needle/tracker-view.c 2013-02-15 11:38:43.000000000 +0000 @@ -59,6 +59,8 @@ #define _gtk_tree_path_free0(var) ((var == NULL) ? NULL : (var = (gtk_tree_path_free (var), NULL))) #define TRACKER_QUERY_TYPE_TYPE (tracker_query_type_get_type ()) +#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL))) +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) #define __g_list_free__gtk_tree_path_free0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__gtk_tree_path_free0_ (var), NULL))) typedef struct _Block5Data Block5Data; @@ -1025,6 +1027,74 @@ } +static gchar* string_replace (const gchar* self, const gchar* old, const gchar* replacement) { + gchar* result = NULL; + GError * _inner_error_ = NULL; + g_return_val_if_fail (self != NULL, NULL); + g_return_val_if_fail (old != NULL, NULL); + g_return_val_if_fail (replacement != NULL, NULL); + { + const gchar* _tmp0_; + gchar* _tmp1_ = NULL; + gchar* _tmp2_; + GRegex* _tmp3_; + GRegex* _tmp4_; + GRegex* regex; + GRegex* _tmp5_; + const gchar* _tmp6_; + gchar* _tmp7_ = NULL; + gchar* _tmp8_; + _tmp0_ = old; + _tmp1_ = g_regex_escape_string (_tmp0_, -1); + _tmp2_ = _tmp1_; + _tmp3_ = g_regex_new (_tmp2_, 0, 0, &_inner_error_); + _tmp4_ = _tmp3_; + _g_free0 (_tmp2_); + regex = _tmp4_; + if (_inner_error_ != NULL) { + if (_inner_error_->domain == G_REGEX_ERROR) { + goto __catch31_g_regex_error; + } + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return NULL; + } + _tmp5_ = regex; + _tmp6_ = replacement; + _tmp7_ = g_regex_replace_literal (_tmp5_, self, (gssize) (-1), 0, _tmp6_, 0, &_inner_error_); + _tmp8_ = _tmp7_; + if (_inner_error_ != NULL) { + _g_regex_unref0 (regex); + if (_inner_error_->domain == G_REGEX_ERROR) { + goto __catch31_g_regex_error; + } + _g_regex_unref0 (regex); + g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return NULL; + } + result = _tmp8_; + _g_regex_unref0 (regex); + return result; + } + goto __finally31; + __catch31_g_regex_error: + { + GError* e = NULL; + e = _inner_error_; + _inner_error_ = NULL; + g_assert_not_reached (); + _g_error_free0 (e); + } + __finally31: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return NULL; + } +} + + static void tracker_view_text_renderer_func (TrackerView* self, GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter) { gchar* text = NULL; gchar* subtext = NULL; @@ -1038,8 +1108,8 @@ GtkTreeIter _tmp5_; gint _tmp6_ = 0; gint _tmp7_; - GtkCellRenderer* _tmp46_; - const gchar* _tmp47_; + GtkCellRenderer* _tmp48_; + const gchar* _tmp49_; g_return_if_fail (self != NULL); g_return_if_fail (cell_layout != NULL); g_return_if_fail (cell != NULL); @@ -1181,36 +1251,42 @@ _tmp36_ = subtext; if (_tmp36_ != NULL) { const gchar* _tmp37_; - const gchar* _tmp38_; - gchar* _tmp39_ = NULL; - gchar* _tmp40_; + gchar* _tmp38_ = NULL; + const gchar* _tmp39_; + const gchar* _tmp40_; gchar* _tmp41_ = NULL; gchar* _tmp42_; - gchar* _tmp43_; - _tmp37_ = markup; - _tmp38_ = subtext; - _tmp39_ = g_markup_escape_text (_tmp38_, (gssize) (-1)); - _tmp40_ = _tmp39_; - _tmp41_ = g_strdup_printf ("\n%s", _tmp40_); + gchar* _tmp43_ = NULL; + gchar* _tmp44_; + gchar* _tmp45_; + _tmp37_ = subtext; + _tmp38_ = string_replace (_tmp37_, "\n", " "); + _g_free0 (subtext); + subtext = _tmp38_; + _tmp39_ = markup; + _tmp40_ = subtext; + _tmp41_ = g_markup_escape_text (_tmp40_, (gssize) (-1)); _tmp42_ = _tmp41_; - _tmp43_ = g_strconcat (_tmp37_, _tmp42_, NULL); + _tmp43_ = g_strdup_printf ("\n%s", _tmp42_); + _tmp44_ = _tmp43_; + _tmp45_ = g_strconcat (_tmp39_, _tmp44_, NULL); _g_free0 (markup); - markup = _tmp43_; + markup = _tmp45_; + _g_free0 (_tmp44_); _g_free0 (_tmp42_); - _g_free0 (_tmp40_); } } else { - const gchar* _tmp44_ = NULL; - gchar* _tmp45_ = NULL; - _tmp44_ = _ ("Loading..."); - _tmp45_ = g_strdup_printf ("%s\n", _tmp44_); + const gchar* _tmp46_ = NULL; + gchar* _tmp47_ = NULL; + _tmp46_ = _ ("Loading..."); + _tmp47_ = g_strdup_printf ("%s\n", _tmp46_); _g_free0 (markup); - markup = _tmp45_; + markup = _tmp47_; } } - _tmp46_ = cell; - _tmp47_ = markup; - g_object_set ((GObject*) _tmp46_, "markup", _tmp47_, NULL); + _tmp48_ = cell; + _tmp49_ = markup; + g_object_set ((GObject*) _tmp48_, "markup", _tmp49_, NULL); _g_free0 (markup); _g_free0 (subtext); _g_free0 (text); @@ -1792,7 +1868,7 @@ return; } _tmp8_ = uri; - g_debug ("tracker-view.vala:535: Showing tags dialog for uri:'%s'", _tmp8_); + g_debug ("tracker-view.vala:536: Showing tags dialog for uri:'%s'", _tmp8_); _tmp9_ = _ ("Tags"); _tmp10_ = gtk_widget_get_toplevel ((GtkWidget*) self); _tmp11_ = (GtkDialog*) gtk_dialog_new_with_buttons (_tmp9_, GTK_WINDOW (_tmp10_), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL, NULL); diff -Nru tracker-0.15.1/src/tracker-needle/tracker-view.vala tracker-0.15.2/src/tracker-needle/tracker-view.vala --- tracker-0.15.1/src/tracker-needle/tracker-view.vala 2012-10-24 15:43:08.000000000 +0000 +++ tracker-0.15.2/src/tracker-needle/tracker-view.vala 2013-02-14 19:30:47.000000000 +0000 @@ -362,6 +362,7 @@ markup = Markup.escape_text (text); if (subtext != null) { + subtext = subtext.replace ("\n", " "); markup += "\n%s".printf (Markup.escape_text (subtext)); } } else { diff -Nru tracker-0.15.1/src/tracker-search-bar/org.gnome.panel.SearchBar.panel-applet tracker-0.15.2/src/tracker-search-bar/org.gnome.panel.SearchBar.panel-applet --- tracker-0.15.1/src/tracker-search-bar/org.gnome.panel.SearchBar.panel-applet 2013-01-24 17:25:43.000000000 +0000 +++ tracker-0.15.2/src/tracker-search-bar/org.gnome.panel.SearchBar.panel-applet 2013-02-15 11:38:44.000000000 +0000 @@ -15,4 +15,4 @@ X-GNOME-Bugzilla-Bugzilla=GNOME X-GNOME-Bugzilla-Product=tracker X-GNOME-Bugzilla-Component=Applet / Search Bar -X-GNOME-Bugzilla-Version=0.15.1 +X-GNOME-Bugzilla-Version=0.15.2 diff -Nru tracker-0.15.1/src/tracker-utils/tracker-info.c tracker-0.15.2/src/tracker-utils/tracker-info.c --- tracker-0.15.1/src/tracker-utils/tracker-info.c 2012-10-24 15:47:14.000000000 +0000 +++ tracker-0.15.2/src/tracker-utils/tracker-info.c 2013-02-14 19:30:47.000000000 +0000 @@ -120,8 +120,8 @@ retval = g_hash_table_new_full (g_str_hash, g_str_equal, - NULL, - NULL); + g_free, + g_free); /* FIXME: Would like to get this in the same SPARQL that we * use to get the info, but doesn't seem possible at the @@ -401,7 +401,7 @@ GError *error = NULL; gchar *uri; gchar *query; - gchar *urn; + gchar *urn = NULL; if (!turtle) { g_print ("%s:'%s'\n", _("Querying information for entity"), *p); @@ -495,6 +495,8 @@ } g_print ("\n"); + + g_free (urn); } g_hash_table_unref (prefixes); diff -Nru tracker-0.15.1/src/tracker-utils/tracker-sparql.c tracker-0.15.2/src/tracker-utils/tracker-sparql.c --- tracker-0.15.1/src/tracker-utils/tracker-sparql.c 2013-01-21 12:49:30.000000000 +0000 +++ tracker-0.15.2/src/tracker-utils/tracker-sparql.c 2013-02-14 19:30:47.000000000 +0000 @@ -103,6 +103,68 @@ { NULL } }; +static GHashTable * +get_prefixes (TrackerSparqlConnection *connection) +{ + TrackerSparqlCursor *cursor; + GError *error = NULL; + GHashTable *retval; + const gchar *query; + + retval = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, + g_free); + + /* FIXME: Would like to get this in the same SPARQL that we + * use to get the info, but doesn't seem possible at the + * moment with the limited string manipulation features we + * support in SPARQL. + */ + query = "SELECT ?ns ?prefix " + "WHERE {" + " ?ns a tracker:Namespace ;" + " tracker:prefix ?prefix " + "}"; + + cursor = tracker_sparql_connection_query (connection, query, NULL, &error); + + if (error) { + g_printerr ("%s, %s\n", + _("Unable to retrieve namespace prefixes"), + error->message); + + g_error_free (error); + return retval; + } + + if (!cursor) { + g_printerr ("%s\n", _("No namespace prefixes were returned")); + return retval; + } + + while (tracker_sparql_cursor_next (cursor, NULL, NULL)) { + const gchar *key, *value; + + key = tracker_sparql_cursor_get_string (cursor, 0, NULL); + value = tracker_sparql_cursor_get_string (cursor, 1, NULL); + + if (!key || !value) { + continue; + } + + g_hash_table_insert (retval, + g_strndup (key, strlen (key) - 1), + g_strdup (value)); + } + + if (cursor) { + g_object_unref (cursor); + } + + return retval; +} + static gchar * get_class_from_prefix (TrackerSparqlConnection *connection, const gchar *prefix) @@ -183,6 +245,138 @@ return TRUE; } +inline static gchar * +get_shorthand (GHashTable *prefixes, + const gchar *namespace) +{ + gchar *hash; + + hash = strrchr (namespace, '#'); + + if (hash) { + gchar *property; + const gchar *prefix; + + property = hash + 1; + *hash = '\0'; + + prefix = g_hash_table_lookup (prefixes, namespace); + + return g_strdup_printf ("%s:%s", prefix, property); + } + + return g_strdup (namespace); +} + +inline static gchar * +get_shorthand_for_offsets (GHashTable *prefixes, + const gchar *str) +{ + GString *result = NULL; + gchar **properties; + gint i; + + if (!str) { + return NULL; + } + + properties = g_strsplit (str, ",", -1); + if (!properties) { + return NULL; + } + + for (i = 0; properties[i] != NULL && properties[i + 1] != NULL; i += 2) { + const gchar *property; + const gchar *offset; + gchar *shorthand; + + property = properties[i]; + offset = properties[i + 1]; + + if (!property || !offset) { + g_warning ("Expected property AND offset to be valid for fts:offset results"); + continue; + } + + shorthand = get_shorthand (prefixes, property); + /* shorthand = g_hash_table_lookup (prefixes, property); */ + + if (!shorthand) { + shorthand = g_strdup (property); + } + + if (!result) { + result = g_string_new (""); + } else { + result = g_string_append_c (result, ' '); + } + + g_string_append_printf (result, "%s:%s", shorthand, offset); + g_free (shorthand); + } + + g_strfreev (properties); + + return result ? g_string_free (result, FALSE) : NULL; +} + +static void +print_cursor_with_ftsoffsets (TrackerSparqlCursor *cursor, + GHashTable *prefixes, + const gchar *none_found, + const gchar *heading, + gboolean only_first_col) +{ + if (!cursor) { + g_print ("%s\n", none_found); + } else { + gint count = 0; + + g_print ("%s:\n", heading); + + if (only_first_col) { + while (tracker_sparql_cursor_next (cursor, NULL, NULL)) { + const gchar *str; + gchar *shorthand; + + str = tracker_sparql_cursor_get_string (cursor, 0, NULL); + shorthand = get_shorthand_for_offsets (prefixes, str); + g_print (" %s\n", shorthand ? shorthand : str); + g_free (shorthand); + count++; + } + } else { + while (tracker_sparql_cursor_next (cursor, NULL, NULL)) { + gint col; + + for (col = 0; col < tracker_sparql_cursor_get_n_columns (cursor); col++) { + const gchar *str; + gchar *shorthand; + + str = tracker_sparql_cursor_get_string (cursor, col, NULL); + shorthand = get_shorthand_for_offsets (prefixes, str); + g_print ("%c %s", + col == 0 ? ' ' : ',', + shorthand ? shorthand : str); + g_free (shorthand); + } + + g_print ("\n"); + + count++; + } + } + + if (count == 0) { + g_print (" %s\n", _("None")); + } + + g_print ("\n"); + + g_object_unref (cursor); + } +} + static void print_cursor (TrackerSparqlCursor *cursor, const gchar *none_found, @@ -595,6 +789,12 @@ } #endif } else { + GHashTable *prefixes = NULL; + + if (strstr (query, "fts:offsets")) { + prefixes = get_prefixes (connection); + } + cursor = tracker_sparql_connection_query (connection, query, NULL, &error); if (error) { @@ -603,10 +803,19 @@ error->message); g_error_free (error); + if (prefixes) { + g_hash_table_unref (prefixes); + } + return EXIT_FAILURE; } - print_cursor (cursor, _("No results found matching your query"), _("Results"), FALSE); + if (G_UNLIKELY (prefixes)) { + print_cursor_with_ftsoffsets (cursor, prefixes, _("No results found matching your query"), _("Results"), FALSE); + g_hash_table_unref (prefixes); + } else { + print_cursor (cursor, _("No results found matching your query"), _("Results"), FALSE); + } } } diff -Nru tracker-0.15.1/tests/functional-tests/test-ontologies/add-class/11-rdf.ontology tracker-0.15.2/tests/functional-tests/test-ontologies/add-class/11-rdf.ontology --- tracker-0.15.1/tests/functional-tests/test-ontologies/add-class/11-rdf.ontology 2011-08-03 12:53:16.000000000 +0000 +++ tracker-0.15.2/tests/functional-tests/test-ontologies/add-class/11-rdf.ontology 2013-02-15 09:58:12.000000000 +0000 @@ -95,11 +95,6 @@ rdfs:domain rdf:Property ; rdfs:range xsd:boolean . -tracker:fulltextNoLimit a rdf:Property ; - nrl:maxCardinality 1 ; - rdfs:domain rdf:Property ; - rdfs:range xsd:boolean . - tracker:transient a rdf:Property ; nrl:maxCardinality 1 ; rdfs:domain rdf:Property ; diff -Nru tracker-0.15.1/tests/functional-tests/test-ontologies/add-domainIndex/11-rdf.ontology tracker-0.15.2/tests/functional-tests/test-ontologies/add-domainIndex/11-rdf.ontology --- tracker-0.15.1/tests/functional-tests/test-ontologies/add-domainIndex/11-rdf.ontology 2011-08-03 12:53:16.000000000 +0000 +++ tracker-0.15.2/tests/functional-tests/test-ontologies/add-domainIndex/11-rdf.ontology 2013-02-15 09:58:12.000000000 +0000 @@ -95,11 +95,6 @@ rdfs:domain rdf:Property ; rdfs:range xsd:boolean . -tracker:fulltextNoLimit a rdf:Property ; - nrl:maxCardinality 1 ; - rdfs:domain rdf:Property ; - rdfs:range xsd:boolean . - tracker:transient a rdf:Property ; nrl:maxCardinality 1 ; rdfs:domain rdf:Property ; diff -Nru tracker-0.15.1/tests/functional-tests/test-ontologies/add-prop/11-rdf.ontology tracker-0.15.2/tests/functional-tests/test-ontologies/add-prop/11-rdf.ontology --- tracker-0.15.1/tests/functional-tests/test-ontologies/add-prop/11-rdf.ontology 2011-08-03 12:53:16.000000000 +0000 +++ tracker-0.15.2/tests/functional-tests/test-ontologies/add-prop/11-rdf.ontology 2013-02-15 09:58:12.000000000 +0000 @@ -95,11 +95,6 @@ rdfs:domain rdf:Property ; rdfs:range xsd:boolean . -tracker:fulltextNoLimit a rdf:Property ; - nrl:maxCardinality 1 ; - rdfs:domain rdf:Property ; - rdfs:range xsd:boolean . - tracker:transient a rdf:Property ; nrl:maxCardinality 1 ; rdfs:domain rdf:Property ; diff -Nru tracker-0.15.1/tests/functional-tests/test-ontologies/basic/11-rdf.ontology tracker-0.15.2/tests/functional-tests/test-ontologies/basic/11-rdf.ontology --- tracker-0.15.1/tests/functional-tests/test-ontologies/basic/11-rdf.ontology 2011-08-03 12:53:16.000000000 +0000 +++ tracker-0.15.2/tests/functional-tests/test-ontologies/basic/11-rdf.ontology 2013-02-15 09:58:12.000000000 +0000 @@ -95,11 +95,6 @@ rdfs:domain rdf:Property ; rdfs:range xsd:boolean . -tracker:fulltextNoLimit a rdf:Property ; - nrl:maxCardinality 1 ; - rdfs:domain rdf:Property ; - rdfs:range xsd:boolean . - tracker:transient a rdf:Property ; nrl:maxCardinality 1 ; rdfs:domain rdf:Property ; diff -Nru tracker-0.15.1/tests/functional-tests/test-ontologies/basic-future/11-rdf.ontology tracker-0.15.2/tests/functional-tests/test-ontologies/basic-future/11-rdf.ontology --- tracker-0.15.1/tests/functional-tests/test-ontologies/basic-future/11-rdf.ontology 2011-08-03 12:53:16.000000000 +0000 +++ tracker-0.15.2/tests/functional-tests/test-ontologies/basic-future/11-rdf.ontology 2013-02-15 09:58:12.000000000 +0000 @@ -95,11 +95,6 @@ rdfs:domain rdf:Property ; rdfs:range xsd:boolean . -tracker:fulltextNoLimit a rdf:Property ; - nrl:maxCardinality 1 ; - rdfs:domain rdf:Property ; - rdfs:range xsd:boolean . - tracker:transient a rdf:Property ; nrl:maxCardinality 1 ; rdfs:domain rdf:Property ; diff -Nru tracker-0.15.1/tests/functional-tests/test-ontologies/cardinality/11-rdf.ontology tracker-0.15.2/tests/functional-tests/test-ontologies/cardinality/11-rdf.ontology --- tracker-0.15.1/tests/functional-tests/test-ontologies/cardinality/11-rdf.ontology 2011-08-03 12:53:16.000000000 +0000 +++ tracker-0.15.2/tests/functional-tests/test-ontologies/cardinality/11-rdf.ontology 2013-02-15 09:58:12.000000000 +0000 @@ -95,11 +95,6 @@ rdfs:domain rdf:Property ; rdfs:range xsd:boolean . -tracker:fulltextNoLimit a rdf:Property ; - nrl:maxCardinality 1 ; - rdfs:domain rdf:Property ; - rdfs:range xsd:boolean . - tracker:transient a rdf:Property ; nrl:maxCardinality 1 ; rdfs:domain rdf:Property ; diff -Nru tracker-0.15.1/tests/functional-tests/test-ontologies/indexed/11-rdf.ontology tracker-0.15.2/tests/functional-tests/test-ontologies/indexed/11-rdf.ontology --- tracker-0.15.1/tests/functional-tests/test-ontologies/indexed/11-rdf.ontology 2011-08-03 12:53:16.000000000 +0000 +++ tracker-0.15.2/tests/functional-tests/test-ontologies/indexed/11-rdf.ontology 2013-02-15 09:58:12.000000000 +0000 @@ -95,11 +95,6 @@ rdfs:domain rdf:Property ; rdfs:range xsd:boolean . -tracker:fulltextNoLimit a rdf:Property ; - nrl:maxCardinality 1 ; - rdfs:domain rdf:Property ; - rdfs:range xsd:boolean . - tracker:transient a rdf:Property ; nrl:maxCardinality 1 ; rdfs:domain rdf:Property ; diff -Nru tracker-0.15.1/tests/functional-tests/test-ontologies/notify/11-rdf.ontology tracker-0.15.2/tests/functional-tests/test-ontologies/notify/11-rdf.ontology --- tracker-0.15.1/tests/functional-tests/test-ontologies/notify/11-rdf.ontology 2011-08-03 12:53:16.000000000 +0000 +++ tracker-0.15.2/tests/functional-tests/test-ontologies/notify/11-rdf.ontology 2013-02-15 09:58:12.000000000 +0000 @@ -95,11 +95,6 @@ rdfs:domain rdf:Property ; rdfs:range xsd:boolean . -tracker:fulltextNoLimit a rdf:Property ; - nrl:maxCardinality 1 ; - rdfs:domain rdf:Property ; - rdfs:range xsd:boolean . - tracker:transient a rdf:Property ; nrl:maxCardinality 1 ; rdfs:domain rdf:Property ; diff -Nru tracker-0.15.1/tests/functional-tests/test-ontologies/property-promotion/11-rdf.ontology tracker-0.15.2/tests/functional-tests/test-ontologies/property-promotion/11-rdf.ontology --- tracker-0.15.1/tests/functional-tests/test-ontologies/property-promotion/11-rdf.ontology 2011-08-03 12:53:16.000000000 +0000 +++ tracker-0.15.2/tests/functional-tests/test-ontologies/property-promotion/11-rdf.ontology 2013-02-15 09:58:12.000000000 +0000 @@ -95,11 +95,6 @@ rdfs:domain rdf:Property ; rdfs:range xsd:boolean . -tracker:fulltextNoLimit a rdf:Property ; - nrl:maxCardinality 1 ; - rdfs:domain rdf:Property ; - rdfs:range xsd:boolean . - tracker:transient a rdf:Property ; nrl:maxCardinality 1 ; rdfs:domain rdf:Property ; diff -Nru tracker-0.15.1/tests/functional-tests/test-ontologies/property-range-int-to-string/11-rdf.ontology tracker-0.15.2/tests/functional-tests/test-ontologies/property-range-int-to-string/11-rdf.ontology --- tracker-0.15.1/tests/functional-tests/test-ontologies/property-range-int-to-string/11-rdf.ontology 2011-08-03 12:53:16.000000000 +0000 +++ tracker-0.15.2/tests/functional-tests/test-ontologies/property-range-int-to-string/11-rdf.ontology 2013-02-15 09:58:12.000000000 +0000 @@ -95,11 +95,6 @@ rdfs:domain rdf:Property ; rdfs:range xsd:boolean . -tracker:fulltextNoLimit a rdf:Property ; - nrl:maxCardinality 1 ; - rdfs:domain rdf:Property ; - rdfs:range xsd:boolean . - tracker:transient a rdf:Property ; nrl:maxCardinality 1 ; rdfs:domain rdf:Property ; diff -Nru tracker-0.15.1/tests/functional-tests/test-ontologies/property-range-string-to-date/11-rdf.ontology tracker-0.15.2/tests/functional-tests/test-ontologies/property-range-string-to-date/11-rdf.ontology --- tracker-0.15.1/tests/functional-tests/test-ontologies/property-range-string-to-date/11-rdf.ontology 2011-08-03 12:53:16.000000000 +0000 +++ tracker-0.15.2/tests/functional-tests/test-ontologies/property-range-string-to-date/11-rdf.ontology 2013-02-15 09:58:12.000000000 +0000 @@ -95,11 +95,6 @@ rdfs:domain rdf:Property ; rdfs:range xsd:boolean . -tracker:fulltextNoLimit a rdf:Property ; - nrl:maxCardinality 1 ; - rdfs:domain rdf:Property ; - rdfs:range xsd:boolean . - tracker:transient a rdf:Property ; nrl:maxCardinality 1 ; rdfs:domain rdf:Property ; diff -Nru tracker-0.15.1/tests/functional-tests/test-ontologies/superclass-remove/11-rdf.ontology tracker-0.15.2/tests/functional-tests/test-ontologies/superclass-remove/11-rdf.ontology --- tracker-0.15.1/tests/functional-tests/test-ontologies/superclass-remove/11-rdf.ontology 2011-08-03 12:53:16.000000000 +0000 +++ tracker-0.15.2/tests/functional-tests/test-ontologies/superclass-remove/11-rdf.ontology 2013-02-15 09:58:12.000000000 +0000 @@ -95,11 +95,6 @@ rdfs:domain rdf:Property ; rdfs:range xsd:boolean . -tracker:fulltextNoLimit a rdf:Property ; - nrl:maxCardinality 1 ; - rdfs:domain rdf:Property ; - rdfs:range xsd:boolean . - tracker:transient a rdf:Property ; nrl:maxCardinality 1 ; rdfs:domain rdf:Property ; diff -Nru tracker-0.15.1/tests/libtracker-fts/data.ontology tracker-0.15.2/tests/libtracker-fts/data.ontology --- tracker-0.15.1/tests/libtracker-fts/data.ontology 2011-04-20 08:05:59.000000000 +0000 +++ tracker-0.15.2/tests/libtracker-fts/data.ontology 2013-02-15 09:58:12.000000000 +0000 @@ -25,5 +25,4 @@ nrl:maxCardinality 1 ; rdfs:domain test:A ; rdfs:range xsd:string ; - tracker:fulltextIndexed true ; - tracker:fulltextNoLimit true . + tracker:fulltextIndexed true . diff -Nru tracker-0.15.1/tests/libtracker-fts/limits/fts3limits-1.out tracker-0.15.2/tests/libtracker-fts/limits/fts3limits-1.out --- tracker-0.15.1/tests/libtracker-fts/limits/fts3limits-1.out 2011-04-20 08:05:59.000000000 +0000 +++ tracker-0.15.2/tests/libtracker-fts/limits/fts3limits-1.out 2013-02-15 09:58:12.000000000 +0000 @@ -1,3 +1,4 @@ +"http://www.example.org/test#2" "http://www.example.org/test#3" "http://www.example.org/test#4" "http://www.example.org/test#5" diff -Nru tracker-0.15.1/tests/libtracker-fts/limits/fts3limits-2.out tracker-0.15.2/tests/libtracker-fts/limits/fts3limits-2.out --- tracker-0.15.1/tests/libtracker-fts/limits/fts3limits-2.out 2011-04-20 08:05:59.000000000 +0000 +++ tracker-0.15.2/tests/libtracker-fts/limits/fts3limits-2.out 2013-02-15 09:58:12.000000000 +0000 @@ -0,0 +1 @@ +"http://www.example.org/test#2" diff -Nru tracker-0.15.1/tests/libtracker-fts/limits/fts3limits-4.out tracker-0.15.2/tests/libtracker-fts/limits/fts3limits-4.out --- tracker-0.15.1/tests/libtracker-fts/limits/fts3limits-4.out 2011-04-20 08:05:59.000000000 +0000 +++ tracker-0.15.2/tests/libtracker-fts/limits/fts3limits-4.out 2013-02-15 09:58:12.000000000 +0000 @@ -0,0 +1 @@ +"http://www.example.org/test#2" diff -Nru tracker-0.15.1/tests/libtracker-fts/prefix/fts3prefix-2.out tracker-0.15.2/tests/libtracker-fts/prefix/fts3prefix-2.out --- tracker-0.15.1/tests/libtracker-fts/prefix/fts3prefix-2.out 2011-04-20 08:05:59.000000000 +0000 +++ tracker-0.15.2/tests/libtracker-fts/prefix/fts3prefix-2.out 2013-02-15 09:58:12.000000000 +0000 @@ -1,3 +1,4 @@ +"http://www.example.org/test#2" "http://www.example.org/test#3" "http://www.example.org/test#4" "http://www.example.org/test#5"