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);
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;
1722
TrackerSparqlTokenType _tmp55_;
1723
_tmp55_ = tracker_sparql_pattern_current (self);
1724
_tmp51_ = _tmp55_ != TRACKER_SPARQL_TOKEN_TYPE_LIMIT;
1713
1726
_tmp51_ = FALSE;
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;
1720
1733
_tmp50_ = FALSE;
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;
1727
1740
_tmp49_ = FALSE;
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;
1734
1747
_tmp48_ = FALSE;
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;
1741
1754
_tmp47_ = FALSE;
1789
_tmp60_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_HAVING, &_inner_error_);
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_);
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_);
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_);
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_);
1777
_tmp58_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_ORDER, &_inner_error_);
1836
_tmp62_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_ORDER, &_inner_error_);
1779
1838
if (_inner_error_ != NULL) {
1780
1839
if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
1781
1840
g_propagate_error (error, _inner_error_);
1822
1881
g_string_append (sql, " ORDER BY ");
1823
1882
first_order = TRUE;
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;
1843
TrackerSparqlTokenType _tmp67_;
1844
_tmp67_ = tracker_sparql_pattern_current (self);
1845
_tmp63_ = _tmp67_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACE;
1850
TrackerSparqlTokenType _tmp68_;
1851
_tmp68_ = tracker_sparql_pattern_current (self);
1852
_tmp62_ = _tmp68_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS;
1857
TrackerSparqlTokenType _tmp69_;
1858
_tmp69_ = tracker_sparql_pattern_current (self);
1859
_tmp61_ = _tmp69_ != TRACKER_SPARQL_TOKEN_TYPE_EOF;
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;
1902
TrackerSparqlTokenType _tmp71_;
1903
_tmp71_ = tracker_sparql_pattern_current (self);
1904
_tmp67_ = _tmp71_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_BRACE;
1909
TrackerSparqlTokenType _tmp72_;
1910
_tmp72_ = tracker_sparql_pattern_current (self);
1911
_tmp66_ = _tmp72_ != TRACKER_SPARQL_TOKEN_TYPE_CLOSE_PARENS;
1916
TrackerSparqlTokenType _tmp73_;
1917
_tmp73_ = tracker_sparql_pattern_current (self);
1918
_tmp65_ = _tmp73_ != TRACKER_SPARQL_TOKEN_TYPE_EOF;
1868
1927
if (first_order) {
1869
1928
first_order = FALSE;
1948
_tmp72_ = tracker_sparql_pattern_get_last_string (self, 0);
1950
_tmp74_ = atoi (_tmp73_);
1953
_tmp75_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OFFSET, &_inner_error_);
2007
_tmp76_ = tracker_sparql_pattern_get_last_string (self, 0);
2009
_tmp78_ = atoi (_tmp77_);
2012
_tmp79_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OFFSET, &_inner_error_);
1955
2014
if (_inner_error_ != NULL) {
1956
2015
if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
1957
2016
g_propagate_error (error, _inner_error_);
2000
_tmp77_ = tracker_sparql_pattern_get_last_string (self, 0);
2002
_tmp79_ = atoi (_tmp78_);
2059
_tmp81_ = tracker_sparql_pattern_get_last_string (self, 0);
2061
_tmp83_ = atoi (_tmp82_);
2009
_tmp80_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OFFSET, &_inner_error_);
2068
_tmp84_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_OFFSET, &_inner_error_);
2011
2070
if (_inner_error_ != NULL) {
2012
2071
if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
2013
2072
g_propagate_error (error, _inner_error_);
2058
_tmp82_ = tracker_sparql_pattern_get_last_string (self, 0);
2060
_tmp84_ = atoi (_tmp83_);
2063
_tmp85_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_LIMIT, &_inner_error_);
2117
_tmp86_ = tracker_sparql_pattern_get_last_string (self, 0);
2119
_tmp88_ = atoi (_tmp87_);
2122
_tmp89_ = tracker_sparql_pattern_accept (self, TRACKER_SPARQL_TOKEN_TYPE_LIMIT, &_inner_error_);
2065
2124
if (_inner_error_ != NULL) {
2066
2125
if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
2067
2126
g_propagate_error (error, _inner_error_);
2110
_tmp87_ = tracker_sparql_pattern_get_last_string (self, 0);
2112
_tmp89_ = atoi (_tmp88_);
2169
_tmp91_ = tracker_sparql_pattern_get_last_string (self, 0);
2171
_tmp93_ = atoi (_tmp92_);
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 ();
2126
_tmp91_ = g_strdup_printf ("%i", limit);
2183
_tmp94_ = tracker_sparql_literal_binding_new ();
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);
2140
_tmp94_ = g_strdup_printf ("%i", offset);
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_);
2147
2206
_g_object_unref0 (binding);
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 ();
2157
_tmp97_ = g_strdup_printf ("%i", offset);
2214
_tmp100_ = tracker_sparql_literal_binding_new ();
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);
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);