~ubuntu-branches/ubuntu/oneiric/tracker/oneiric

« back to all changes in this revision

Viewing changes to src/libtracker-data/tracker-sparql-pattern.c

  • Committer: Package Import Robot
  • Author(s): Michael Biebl
  • Date: 2011-08-26 00:26:14 UTC
  • mfrom: (4.3.17 sid)
  • Revision ID: package-import@ubuntu.com-20110826002614-4qjfs9jhh5gs4p13
Tags: 0.10.24-1
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
281
281
        TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACE,
282
282
        TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACKET,
283
283
        TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS,
 
284
        TRACKER_SPARQL_TOKEN_TYPE_COALESCE,
284
285
        TRACKER_SPARQL_TOKEN_TYPE_COLON,
285
286
        TRACKER_SPARQL_TOKEN_TYPE_COMMA,
286
287
        TRACKER_SPARQL_TOKEN_TYPE_CONSTRUCT,
305
306
        TRACKER_SPARQL_TOKEN_TYPE_GRAPH,
306
307
        TRACKER_SPARQL_TOKEN_TYPE_GROUP,
307
308
        TRACKER_SPARQL_TOKEN_TYPE_GROUP_CONCAT,
 
309
        TRACKER_SPARQL_TOKEN_TYPE_HAVING,
308
310
        TRACKER_SPARQL_TOKEN_TYPE_IF,
309
311
        TRACKER_SPARQL_TOKEN_TYPE_INSERT,
310
312
        TRACKER_SPARQL_TOKEN_TYPE_INTEGER,
322
324
        TRACKER_SPARQL_TOKEN_TYPE_MINUS,
323
325
        TRACKER_SPARQL_TOKEN_TYPE_NAMED,
324
326
        TRACKER_SPARQL_TOKEN_TYPE_NOT,
 
327
        TRACKER_SPARQL_TOKEN_TYPE_NULL,
325
328
        TRACKER_SPARQL_TOKEN_TYPE_OFFSET,
326
329
        TRACKER_SPARQL_TOKEN_TYPE_OP_AND,
327
330
        TRACKER_SPARQL_TOKEN_TYPE_OP_EQ,
547
550
TrackerPropertyType tracker_sparql_expression_translate_select_expression (TrackerSparqlExpression* self, GString* sql, gboolean subquery, gint variable_index, GError** error);
548
551
static void _vala_array_add5 (TrackerPropertyType** array, int* length, int* size, TrackerPropertyType value);
549
552
TrackerPropertyType tracker_sparql_expression_translate_expression (TrackerSparqlExpression* self, GString* sql, GError** error);
 
553
TrackerPropertyType tracker_sparql_expression_translate_constraint (TrackerSparqlExpression* self, GString* sql, GError** error);
550
554
void tracker_sparql_expression_translate_order_condition (TrackerSparqlExpression* self, GString* sql, GError** error);
551
555
void tracker_sparql_pattern_translate_exists (TrackerSparqlPattern* self, GString* sql, GError** error);
552
556
gchar* tracker_sparql_pattern_parse_var_or_term (TrackerSparqlPattern* self, GString* sql, gboolean* is_var, GError** error);
557
561
static void tracker_sparql_pattern_parse_object_list (TrackerSparqlPattern* self, GString* sql, gboolean in_simple_optional, GError** error);
558
562
static void tracker_sparql_pattern_parse_object (TrackerSparqlPattern* self, GString* sql, gboolean in_simple_optional, GError** error);
559
563
static void tracker_sparql_pattern_translate_filter (TrackerSparqlPattern* self, GString* sql, GError** error);
560
 
TrackerPropertyType tracker_sparql_expression_translate_constraint (TrackerSparqlExpression* self, GString* sql, GError** error);
561
564
static void tracker_sparql_pattern_skip_filter (TrackerSparqlPattern* self, GError** error);
562
565
static void tracker_sparql_pattern_start_triples_block (TrackerSparqlPattern* self, GString* sql, GError** error);
563
566
static TrackerSparqlPatternTripleContext* tracker_sparql_pattern_triple_context_new (TrackerSparqlQuery* query, TrackerSparqlContext* parent_context);
1215
1218
        gboolean _tmp30_;
1216
1219
        gboolean _tmp44_;
1217
1220
        gboolean _tmp45_;
1218
 
        gboolean _tmp58_;
1219
 
        gboolean _tmp59_;
 
1221
        gboolean _tmp62_;
 
1222
        gboolean _tmp63_;
1220
1223
        gint limit;
1221
1224
        gint offset;
1222
 
        gboolean _tmp70_;
1223
 
        gboolean _tmp71_;
1224
 
        TrackerSparqlContext* _tmp99_ = NULL;
 
1225
        gboolean _tmp74_;
 
1226
        gboolean _tmp75_;
 
1227
        TrackerSparqlContext* _tmp103_ = NULL;
1225
1228
        GError * _inner_error_ = NULL;
1226
1229
        g_return_val_if_fail (self != NULL, NULL);
1227
1230
        g_return_val_if_fail (sql != NULL, NULL);
1670
1673
        }
1671
1674
        if (_tmp45_) {
1672
1675
                gboolean first_group;
 
1676
                gboolean _tmp60_;
 
1677
                gboolean _tmp61_;
1673
1678
                tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_BY, &_inner_error_);
1674
1679
                if (_inner_error_ != NULL) {
1675
1680
                        if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
1703
1708
                                        gboolean _tmp49_ = FALSE;
1704
1709
                                        gboolean _tmp50_ = FALSE;
1705
1710
                                        gboolean _tmp51_ = FALSE;
1706
 
                                        TrackerSparqlTokenType _tmp52_;
1707
 
                                        _tmp52_ = tracker_sparql_pattern_current (self);
1708
 
                                        if (_tmp52_ != TRACKER_SPARQL_TOKEN_TYPE_ORDER) {
1709
 
                                                TrackerSparqlTokenType _tmp53_;
1710
 
                                                _tmp53_ = tracker_sparql_pattern_current (self);
1711
 
                                                _tmp51_ = _tmp53_ != TRACKER_SPARQL_TOKEN_TYPE_LIMIT;
 
1711
                                        gboolean _tmp52_ = FALSE;
 
1712
                                        TrackerSparqlTokenType _tmp53_;
 
1713
                                        _tmp53_ = tracker_sparql_pattern_current (self);
 
1714
                                        if (_tmp53_ != TRACKER_SPARQL_TOKEN_TYPE_HAVING) {
 
1715
                                                TrackerSparqlTokenType _tmp54_;
 
1716
                                                _tmp54_ = tracker_sparql_pattern_current (self);
 
1717
                                                _tmp52_ = _tmp54_ != TRACKER_SPARQL_TOKEN_TYPE_ORDER;
 
1718
                                        } else {
 
1719
                                                _tmp52_ = FALSE;
 
1720
                                        }
 
1721
                                        if (_tmp52_) {
 
1722
                                                TrackerSparqlTokenType _tmp55_;
 
1723
                                                _tmp55_ = tracker_sparql_pattern_current (self);
 
1724
                                                _tmp51_ = _tmp55_ != TRACKER_SPARQL_TOKEN_TYPE_LIMIT;
1712
1725
                                        } else {
1713
1726
                                                _tmp51_ = FALSE;
1714
1727
                                        }
1715
1728
                                        if (_tmp51_) {
1716
 
                                                TrackerSparqlTokenType _tmp54_;
1717
 
                                                _tmp54_ = tracker_sparql_pattern_current (self);
1718
 
                                                _tmp50_ = _tmp54_ != TRACKER_SPARQL_TOKEN_TYPE_OFFSET;
 
1729
                                                TrackerSparqlTokenType _tmp56_;
 
1730
                                                _tmp56_ = tracker_sparql_pattern_current (self);
 
1731
                                                _tmp50_ = _tmp56_ != TRACKER_SPARQL_TOKEN_TYPE_OFFSET;
1719
1732
                                        } else {
1720
1733
                                                _tmp50_ = FALSE;
1721
1734
                                        }
1722
1735
                                        if (_tmp50_) {
1723
 
                                                TrackerSparqlTokenType _tmp55_;
1724
 
                                                _tmp55_ = tracker_sparql_pattern_current (self);
1725
 
                                                _tmp49_ = _tmp55_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACE;
 
1736
                                                TrackerSparqlTokenType _tmp57_;
 
1737
                                                _tmp57_ = tracker_sparql_pattern_current (self);
 
1738
                                                _tmp49_ = _tmp57_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACE;
1726
1739
                                        } else {
1727
1740
                                                _tmp49_ = FALSE;
1728
1741
                                        }
1729
1742
                                        if (_tmp49_) {
1730
 
                                                TrackerSparqlTokenType _tmp56_;
1731
 
                                                _tmp56_ = tracker_sparql_pattern_current (self);
1732
 
                                                _tmp48_ = _tmp56_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS;
 
1743
                                                TrackerSparqlTokenType _tmp58_;
 
1744
                                                _tmp58_ = tracker_sparql_pattern_current (self);
 
1745
                                                _tmp48_ = _tmp58_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS;
1733
1746
                                        } else {
1734
1747
                                                _tmp48_ = FALSE;
1735
1748
                                        }
1736
1749
                                        if (_tmp48_) {
1737
 
                                                TrackerSparqlTokenType _tmp57_;
1738
 
                                                _tmp57_ = tracker_sparql_pattern_current (self);
1739
 
                                                _tmp47_ = _tmp57_ != TRACKER_SPARQL_TOKEN_TYPE_EOF;
 
1750
                                                TrackerSparqlTokenType _tmp59_;
 
1751
                                                _tmp59_ = tracker_sparql_pattern_current (self);
 
1752
                                                _tmp47_ = _tmp59_ != TRACKER_SPARQL_TOKEN_TYPE_EOF;
1740
1753
                                        } else {
1741
1754
                                                _tmp47_ = FALSE;
1742
1755
                                        }
1773
1786
                                }
1774
1787
                        }
1775
1788
                }
 
1789
                _tmp60_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_HAVING, &_inner_error_);
 
1790
                _tmp61_ = _tmp60_;
 
1791
                if (_inner_error_ != NULL) {
 
1792
                        if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
 
1793
                                g_propagate_error (error, _inner_error_);
 
1794
                                __g_list_free__g_object_unref0_0 (where_bindings);
 
1795
                                _tracker_sparql_context_unref0 (pattern);
 
1796
                                __g_list_free__g_object_unref0_0 (old_bindings);
 
1797
                                _g_string_free0 (pattern_sql);
 
1798
                                _tracker_sparql_context_unref0 (_result_);
 
1799
                                return NULL;
 
1800
                        } else {
 
1801
                                __g_list_free__g_object_unref0_0 (where_bindings);
 
1802
                                _tracker_sparql_context_unref0 (pattern);
 
1803
                                __g_list_free__g_object_unref0_0 (old_bindings);
 
1804
                                _g_string_free0 (pattern_sql);
 
1805
                                _tracker_sparql_context_unref0 (_result_);
 
1806
                                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
 
1807
                                g_clear_error (&_inner_error_);
 
1808
                                return NULL;
 
1809
                        }
 
1810
                }
 
1811
                if (_tmp61_) {
 
1812
                        g_string_append (sql, " HAVING ");
 
1813
                        tracker_sparql_expression_translate_constraint (self->priv->expression, sql, &_inner_error_);
 
1814
                        if (_inner_error_ != NULL) {
 
1815
                                if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
 
1816
                                        g_propagate_error (error, _inner_error_);
 
1817
                                        __g_list_free__g_object_unref0_0 (where_bindings);
 
1818
                                        _tracker_sparql_context_unref0 (pattern);
 
1819
                                        __g_list_free__g_object_unref0_0 (old_bindings);
 
1820
                                        _g_string_free0 (pattern_sql);
 
1821
                                        _tracker_sparql_context_unref0 (_result_);
 
1822
                                        return NULL;
 
1823
                                } else {
 
1824
                                        __g_list_free__g_object_unref0_0 (where_bindings);
 
1825
                                        _tracker_sparql_context_unref0 (pattern);
 
1826
                                        __g_list_free__g_object_unref0_0 (old_bindings);
 
1827
                                        _g_string_free0 (pattern_sql);
 
1828
                                        _tracker_sparql_context_unref0 (_result_);
 
1829
                                        g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
 
1830
                                        g_clear_error (&_inner_error_);
 
1831
                                        return NULL;
 
1832
                                }
 
1833
                        }
 
1834
                }
1776
1835
        }
1777
 
        _tmp58_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_ORDER, &_inner_error_);
1778
 
        _tmp59_ = _tmp58_;
 
1836
        _tmp62_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_ORDER, &_inner_error_);
 
1837
        _tmp63_ = _tmp62_;
1779
1838
        if (_inner_error_ != NULL) {
1780
1839
                if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
1781
1840
                        g_propagate_error (error, _inner_error_);
1796
1855
                        return NULL;
1797
1856
                }
1798
1857
        }
1799
 
        if (_tmp59_) {
 
1858
        if (_tmp63_) {
1800
1859
                gboolean first_order;
1801
1860
                tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_BY, &_inner_error_);
1802
1861
                if (_inner_error_ != NULL) {
1822
1881
                g_string_append (sql, " ORDER BY ");
1823
1882
                first_order = TRUE;
1824
1883
                {
1825
 
                        gboolean _tmp60_;
1826
 
                        _tmp60_ = TRUE;
 
1884
                        gboolean _tmp64_;
 
1885
                        _tmp64_ = TRUE;
1827
1886
                        while (TRUE) {
1828
 
                                if (!_tmp60_) {
1829
 
                                        gboolean _tmp61_ = FALSE;
1830
 
                                        gboolean _tmp62_ = FALSE;
1831
 
                                        gboolean _tmp63_ = FALSE;
1832
 
                                        gboolean _tmp64_ = FALSE;
1833
 
                                        TrackerSparqlTokenType _tmp65_;
1834
 
                                        _tmp65_ = tracker_sparql_pattern_current (self);
1835
 
                                        if (_tmp65_ != TRACKER_SPARQL_TOKEN_TYPE_LIMIT) {
1836
 
                                                TrackerSparqlTokenType _tmp66_;
1837
 
                                                _tmp66_ = tracker_sparql_pattern_current (self);
1838
 
                                                _tmp64_ = _tmp66_ != TRACKER_SPARQL_TOKEN_TYPE_OFFSET;
1839
 
                                        } else {
1840
 
                                                _tmp64_ = FALSE;
1841
 
                                        }
1842
 
                                        if (_tmp64_) {
1843
 
                                                TrackerSparqlTokenType _tmp67_;
1844
 
                                                _tmp67_ = tracker_sparql_pattern_current (self);
1845
 
                                                _tmp63_ = _tmp67_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACE;
1846
 
                                        } else {
1847
 
                                                _tmp63_ = FALSE;
1848
 
                                        }
1849
 
                                        if (_tmp63_) {
1850
 
                                                TrackerSparqlTokenType _tmp68_;
1851
 
                                                _tmp68_ = tracker_sparql_pattern_current (self);
1852
 
                                                _tmp62_ = _tmp68_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS;
1853
 
                                        } else {
1854
 
                                                _tmp62_ = FALSE;
1855
 
                                        }
1856
 
                                        if (_tmp62_) {
1857
 
                                                TrackerSparqlTokenType _tmp69_;
1858
 
                                                _tmp69_ = tracker_sparql_pattern_current (self);
1859
 
                                                _tmp61_ = _tmp69_ != TRACKER_SPARQL_TOKEN_TYPE_EOF;
1860
 
                                        } else {
1861
 
                                                _tmp61_ = FALSE;
1862
 
                                        }
1863
 
                                        if (!_tmp61_) {
 
1887
                                if (!_tmp64_) {
 
1888
                                        gboolean _tmp65_ = FALSE;
 
1889
                                        gboolean _tmp66_ = FALSE;
 
1890
                                        gboolean _tmp67_ = FALSE;
 
1891
                                        gboolean _tmp68_ = FALSE;
 
1892
                                        TrackerSparqlTokenType _tmp69_;
 
1893
                                        _tmp69_ = tracker_sparql_pattern_current (self);
 
1894
                                        if (_tmp69_ != TRACKER_SPARQL_TOKEN_TYPE_LIMIT) {
 
1895
                                                TrackerSparqlTokenType _tmp70_;
 
1896
                                                _tmp70_ = tracker_sparql_pattern_current (self);
 
1897
                                                _tmp68_ = _tmp70_ != TRACKER_SPARQL_TOKEN_TYPE_OFFSET;
 
1898
                                        } else {
 
1899
                                                _tmp68_ = FALSE;
 
1900
                                        }
 
1901
                                        if (_tmp68_) {
 
1902
                                                TrackerSparqlTokenType _tmp71_;
 
1903
                                                _tmp71_ = tracker_sparql_pattern_current (self);
 
1904
                                                _tmp67_ = _tmp71_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACE;
 
1905
                                        } else {
 
1906
                                                _tmp67_ = FALSE;
 
1907
                                        }
 
1908
                                        if (_tmp67_) {
 
1909
                                                TrackerSparqlTokenType _tmp72_;
 
1910
                                                _tmp72_ = tracker_sparql_pattern_current (self);
 
1911
                                                _tmp66_ = _tmp72_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS;
 
1912
                                        } else {
 
1913
                                                _tmp66_ = FALSE;
 
1914
                                        }
 
1915
                                        if (_tmp66_) {
 
1916
                                                TrackerSparqlTokenType _tmp73_;
 
1917
                                                _tmp73_ = tracker_sparql_pattern_current (self);
 
1918
                                                _tmp65_ = _tmp73_ != TRACKER_SPARQL_TOKEN_TYPE_EOF;
 
1919
                                        } else {
 
1920
                                                _tmp65_ = FALSE;
 
1921
                                        }
 
1922
                                        if (!_tmp65_) {
1864
1923
                                                break;
1865
1924
                                        }
1866
1925
                                }
1867
 
                                _tmp60_ = FALSE;
 
1926
                                _tmp64_ = FALSE;
1868
1927
                                if (first_order) {
1869
1928
                                        first_order = FALSE;
1870
1929
                                } else {
1896
1955
        }
1897
1956
        limit = -1;
1898
1957
        offset = -1;
1899
 
        _tmp70_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_LIMIT, &_inner_error_);
1900
 
        _tmp71_ = _tmp70_;
 
1958
        _tmp74_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_LIMIT, &_inner_error_);
 
1959
        _tmp75_ = _tmp74_;
1901
1960
        if (_inner_error_ != NULL) {
1902
1961
                if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
1903
1962
                        g_propagate_error (error, _inner_error_);
1918
1977
                        return NULL;
1919
1978
                }
1920
1979
        }
1921
 
        if (_tmp71_) {
1922
 
                gchar* _tmp72_ = NULL;
1923
 
                gchar* _tmp73_;
1924
 
                gint _tmp74_;
1925
 
                gboolean _tmp75_;
1926
 
                gboolean _tmp76_;
 
1980
        if (_tmp75_) {
 
1981
                gchar* _tmp76_ = NULL;
 
1982
                gchar* _tmp77_;
 
1983
                gint _tmp78_;
 
1984
                gboolean _tmp79_;
 
1985
                gboolean _tmp80_;
1927
1986
                tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_INTEGER, &_inner_error_);
1928
1987
                if (_inner_error_ != NULL) {
1929
1988
                        if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
1945
2004
                                return NULL;
1946
2005
                        }
1947
2006
                }
1948
 
                _tmp72_ = tracker_sparql_pattern_get_last_string (self, 0);
1949
 
                _tmp73_ = _tmp72_;
1950
 
                _tmp74_ = atoi (_tmp73_);
1951
 
                limit = _tmp74_;
1952
 
                _g_free0 (_tmp73_);
1953
 
                _tmp75_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OFFSET, &_inner_error_);
1954
 
                _tmp76_ = _tmp75_;
 
2007
                _tmp76_ = tracker_sparql_pattern_get_last_string (self, 0);
 
2008
                _tmp77_ = _tmp76_;
 
2009
                _tmp78_ = atoi (_tmp77_);
 
2010
                limit = _tmp78_;
 
2011
                _g_free0 (_tmp77_);
 
2012
                _tmp79_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OFFSET, &_inner_error_);
 
2013
                _tmp80_ = _tmp79_;
1955
2014
                if (_inner_error_ != NULL) {
1956
2015
                        if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
1957
2016
                                g_propagate_error (error, _inner_error_);
1972
2031
                                return NULL;
1973
2032
                        }
1974
2033
                }
1975
 
                if (_tmp76_) {
1976
 
                        gchar* _tmp77_ = NULL;
1977
 
                        gchar* _tmp78_;
1978
 
                        gint _tmp79_;
 
2034
                if (_tmp80_) {
 
2035
                        gchar* _tmp81_ = NULL;
 
2036
                        gchar* _tmp82_;
 
2037
                        gint _tmp83_;
1979
2038
                        tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_INTEGER, &_inner_error_);
1980
2039
                        if (_inner_error_ != NULL) {
1981
2040
                                if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
1997
2056
                                        return NULL;
1998
2057
                                }
1999
2058
                        }
2000
 
                        _tmp77_ = tracker_sparql_pattern_get_last_string (self, 0);
2001
 
                        _tmp78_ = _tmp77_;
2002
 
                        _tmp79_ = atoi (_tmp78_);
2003
 
                        offset = _tmp79_;
2004
 
                        _g_free0 (_tmp78_);
 
2059
                        _tmp81_ = tracker_sparql_pattern_get_last_string (self, 0);
 
2060
                        _tmp82_ = _tmp81_;
 
2061
                        _tmp83_ = atoi (_tmp82_);
 
2062
                        offset = _tmp83_;
 
2063
                        _g_free0 (_tmp82_);
2005
2064
                }
2006
2065
        } else {
2007
 
                gboolean _tmp80_;
2008
 
                gboolean _tmp81_;
2009
 
                _tmp80_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OFFSET, &_inner_error_);
2010
 
                _tmp81_ = _tmp80_;
 
2066
                gboolean _tmp84_;
 
2067
                gboolean _tmp85_;
 
2068
                _tmp84_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OFFSET, &_inner_error_);
 
2069
                _tmp85_ = _tmp84_;
2011
2070
                if (_inner_error_ != NULL) {
2012
2071
                        if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
2013
2072
                                g_propagate_error (error, _inner_error_);
2028
2087
                                return NULL;
2029
2088
                        }
2030
2089
                }
2031
 
                if (_tmp81_) {
2032
 
                        gchar* _tmp82_ = NULL;
2033
 
                        gchar* _tmp83_;
2034
 
                        gint _tmp84_;
2035
 
                        gboolean _tmp85_;
2036
 
                        gboolean _tmp86_;
 
2090
                if (_tmp85_) {
 
2091
                        gchar* _tmp86_ = NULL;
 
2092
                        gchar* _tmp87_;
 
2093
                        gint _tmp88_;
 
2094
                        gboolean _tmp89_;
 
2095
                        gboolean _tmp90_;
2037
2096
                        tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_INTEGER, &_inner_error_);
2038
2097
                        if (_inner_error_ != NULL) {
2039
2098
                                if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
2055
2114
                                        return NULL;
2056
2115
                                }
2057
2116
                        }
2058
 
                        _tmp82_ = tracker_sparql_pattern_get_last_string (self, 0);
2059
 
                        _tmp83_ = _tmp82_;
2060
 
                        _tmp84_ = atoi (_tmp83_);
2061
 
                        offset = _tmp84_;
2062
 
                        _g_free0 (_tmp83_);
2063
 
                        _tmp85_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_LIMIT, &_inner_error_);
2064
 
                        _tmp86_ = _tmp85_;
 
2117
                        _tmp86_ = tracker_sparql_pattern_get_last_string (self, 0);
 
2118
                        _tmp87_ = _tmp86_;
 
2119
                        _tmp88_ = atoi (_tmp87_);
 
2120
                        offset = _tmp88_;
 
2121
                        _g_free0 (_tmp87_);
 
2122
                        _tmp89_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_LIMIT, &_inner_error_);
 
2123
                        _tmp90_ = _tmp89_;
2065
2124
                        if (_inner_error_ != NULL) {
2066
2125
                                if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
2067
2126
                                        g_propagate_error (error, _inner_error_);
2082
2141
                                        return NULL;
2083
2142
                                }
2084
2143
                        }
2085
 
                        if (_tmp86_) {
2086
 
                                gchar* _tmp87_ = NULL;
2087
 
                                gchar* _tmp88_;
2088
 
                                gint _tmp89_;
 
2144
                        if (_tmp90_) {
 
2145
                                gchar* _tmp91_ = NULL;
 
2146
                                gchar* _tmp92_;
 
2147
                                gint _tmp93_;
2089
2148
                                tracker_sparql_pattern_expect (self, TRACKER_SPARQL_TOKEN_TYPE_INTEGER, &_inner_error_);
2090
2149
                                if (_inner_error_ != NULL) {
2091
2150
                                        if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
2107
2166
                                                return NULL;
2108
2167
                                        }
2109
2168
                                }
2110
 
                                _tmp87_ = tracker_sparql_pattern_get_last_string (self, 0);
2111
 
                                _tmp88_ = _tmp87_;
2112
 
                                _tmp89_ = atoi (_tmp88_);
2113
 
                                limit = _tmp89_;
2114
 
                                _g_free0 (_tmp88_);
 
2169
                                _tmp91_ = tracker_sparql_pattern_get_last_string (self, 0);
 
2170
                                _tmp92_ = _tmp91_;
 
2171
                                _tmp93_ = atoi (_tmp92_);
 
2172
                                limit = _tmp93_;
 
2173
                                _g_free0 (_tmp92_);
2115
2174
                        }
2116
2175
                }
2117
2176
        }
2118
2177
        if (limit >= 0) {
2119
 
                TrackerSparqlLiteralBinding* _tmp90_ = NULL;
 
2178
                TrackerSparqlLiteralBinding* _tmp94_ = NULL;
2120
2179
                TrackerSparqlLiteralBinding* binding;
2121
 
                gchar* _tmp91_ = NULL;
2122
 
                TrackerSparqlLiteralBinding* _tmp92_;
 
2180
                gchar* _tmp95_ = NULL;
 
2181
                TrackerSparqlLiteralBinding* _tmp96_;
2123
2182
                g_string_append (sql, " LIMIT ?");
2124
 
                _tmp90_ = tracker_sparql_literal_binding_new ();
2125
 
                binding = _tmp90_;
2126
 
                _tmp91_ = g_strdup_printf ("%i", limit);
 
2183
                _tmp94_ = tracker_sparql_literal_binding_new ();
 
2184
                binding = _tmp94_;
 
2185
                _tmp95_ = g_strdup_printf ("%i", limit);
2127
2186
                _g_free0 (binding->literal);
2128
 
                binding->literal = _tmp91_;
 
2187
                binding->literal = _tmp95_;
2129
2188
                ((TrackerSparqlDataBinding*) binding)->data_type = TRACKER_PROPERTY_TYPE_INTEGER;
2130
 
                _tmp92_ = _g_object_ref0 (binding);
2131
 
                self->priv->query->bindings = g_list_append (self->priv->query->bindings, _tmp92_);
 
2189
                _tmp96_ = _g_object_ref0 (binding);
 
2190
                self->priv->query->bindings = g_list_append (self->priv->query->bindings, _tmp96_);
2132
2191
                if (offset >= 0) {
2133
 
                        TrackerSparqlLiteralBinding* _tmp93_ = NULL;
2134
 
                        gchar* _tmp94_ = NULL;
2135
 
                        TrackerSparqlLiteralBinding* _tmp95_;
 
2192
                        TrackerSparqlLiteralBinding* _tmp97_ = NULL;
 
2193
                        gchar* _tmp98_ = NULL;
 
2194
                        TrackerSparqlLiteralBinding* _tmp99_;
2136
2195
                        g_string_append (sql, " OFFSET ?");
2137
 
                        _tmp93_ = tracker_sparql_literal_binding_new ();
 
2196
                        _tmp97_ = tracker_sparql_literal_binding_new ();
2138
2197
                        _g_object_unref0 (binding);
2139
 
                        binding = _tmp93_;
2140
 
                        _tmp94_ = g_strdup_printf ("%i", offset);
 
2198
                        binding = _tmp97_;
 
2199
                        _tmp98_ = g_strdup_printf ("%i", offset);
2141
2200
                        _g_free0 (binding->literal);
2142
 
                        binding->literal = _tmp94_;
 
2201
                        binding->literal = _tmp98_;
2143
2202
                        ((TrackerSparqlDataBinding*) binding)->data_type = TRACKER_PROPERTY_TYPE_INTEGER;
2144
 
                        _tmp95_ = _g_object_ref0 (binding);
2145
 
                        self->priv->query->bindings = g_list_append (self->priv->query->bindings, _tmp95_);
 
2203
                        _tmp99_ = _g_object_ref0 (binding);
 
2204
                        self->priv->query->bindings = g_list_append (self->priv->query->bindings, _tmp99_);
2146
2205
                }
2147
2206
                _g_object_unref0 (binding);
2148
2207
        } else {
2149
2208
                if (offset >= 0) {
2150
 
                        TrackerSparqlLiteralBinding* _tmp96_ = NULL;
 
2209
                        TrackerSparqlLiteralBinding* _tmp100_ = NULL;
2151
2210
                        TrackerSparqlLiteralBinding* binding;
2152
 
                        gchar* _tmp97_ = NULL;
2153
 
                        TrackerSparqlLiteralBinding* _tmp98_;
 
2211
                        gchar* _tmp101_ = NULL;
 
2212
                        TrackerSparqlLiteralBinding* _tmp102_;
2154
2213
                        g_string_append (sql, " LIMIT -1 OFFSET ?");
2155
 
                        _tmp96_ = tracker_sparql_literal_binding_new ();
2156
 
                        binding = _tmp96_;
2157
 
                        _tmp97_ = g_strdup_printf ("%i", offset);
 
2214
                        _tmp100_ = tracker_sparql_literal_binding_new ();
 
2215
                        binding = _tmp100_;
 
2216
                        _tmp101_ = g_strdup_printf ("%i", offset);
2158
2217
                        _g_free0 (binding->literal);
2159
 
                        binding->literal = _tmp97_;
 
2218
                        binding->literal = _tmp101_;
2160
2219
                        ((TrackerSparqlDataBinding*) binding)->data_type = TRACKER_PROPERTY_TYPE_INTEGER;
2161
 
                        _tmp98_ = _g_object_ref0 (binding);
2162
 
                        self->priv->query->bindings = g_list_append (self->priv->query->bindings, _tmp98_);
 
2220
                        _tmp102_ = _g_object_ref0 (binding);
 
2221
                        self->priv->query->bindings = g_list_append (self->priv->query->bindings, _tmp102_);
2163
2222
                        _g_object_unref0 (binding);
2164
2223
                }
2165
2224
        }
2166
 
        _tmp99_ = tracker_sparql_pattern_get_context (self);
2167
 
        tracker_sparql_pattern_set_context (self, _tmp99_->parent_context);
 
2225
        _tmp103_ = tracker_sparql_pattern_get_context (self);
 
2226
        tracker_sparql_pattern_set_context (self, _tmp103_->parent_context);
2168
2227
        _result_->type = type;
2169
2228
        result = _result_;
2170
2229
        __g_list_free__g_object_unref0_0 (where_bindings);