You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For the following query:
`k = scan(kmercntnorm_11_forward_Pkmer);
--kmers = select * from k;
------- original query
X = select a.sampleid as asample, b.sampleid as bsample,
case when a.norm_cnt < b.norm_cnt then a.norm_cnt else b.norm_cnt end as minv
from k a, k b
where a.kmer = b.kmer
and a.sampleid < b.sampleid;
Y = select asample, bsample, 1 - sum(minv) as BCdis
from X;
store(Y, BC);`
when push_sql is false, the query runs fine, but when push_sql is true, the compilation fails with the following trace:
Traceback (most recent call last):
File "/opt/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 570, in dispatch
return method(_args, *_kwargs)
File "/usr/local/myria-web/appengine/myria_web_main.py", line 504, in post
multiway_join=multiway_join, push_sql=push_sql)
File "/usr/local/myria-web/appengine/myria_web_main.py", line 124, in get_physical_plan
multiway_join=multiway_join, push_sql=push_sql)
File "/usr/local/myria-web/appengine/myria_web_main.py", line 110, in get_plan
push_sql=push_sql)
File "/usr/local/myria-web/appengine/raco/myrial/interpreter.py", line 451, in get_physical_plan
return self.get_physical_plan_for(target_phys_algebra, **kwargs)
File "/usr/local/myria-web/appengine/raco/myrial/interpreter.py", line 440, in get_physical_plan_for
return optimize(logical_plan, **kwargs)
File "/usr/local/myria-web/appengine/raco/compile.py", line 70, in optimize
return optimize_by_rules(expr, target.opt_rules(**kwargs))
File "/usr/local/myria-web/appengine/raco/compile.py", line 59, in optimize_by_rules
expr = recursiverule(expr)
File "/usr/local/myria-web/appengine/raco/compile.py", line 44, in recursiverule
newe = rule(e)
File "/usr/local/myria-web/appengine/raco/rules.py", line 31, in call
return self.fire(expr)
File "/usr/local/myria-web/appengine/raco/backends/myria/myria.py", line 1500, in fire
sql_plan = cat.get_sql(expr)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 247, in get_sql
return self._get_unary_sql(plan)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 185, in _get_unary_sql
input = self.get_sql(plan.input).alias("input")
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 247, in get_sql
return self._get_unary_sql(plan)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 185, in _get_unary_sql
input = self.get_sql(plan.input).alias("input")
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 247, in get_sql
return self._get_unary_sql(plan)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 185, in _get_unary_sql
input = self.get_sql(plan.input).alias("input")
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 247, in get_sql
return self._get_unary_sql(plan)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 185, in _get_unary_sql
input = self.get_sql(plan.input).alias("input")
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 247, in get_sql
return self._get_unary_sql(plan)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 185, in _get_unary_sql
input = self.get_sql(plan.input).alias("input")
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 247, in get_sql
return self._get_unary_sql(plan)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 185, in _get_unary_sql
input = self.get_sql(plan.input).alias("input")
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 247, in get_sql
return self._get_unary_sql(plan)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 190, in _get_unary_sql
cond = self._convert_expr(cols, plan.condition, input_sch)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 116, in _convert_expr
return self._convert_binary_expr(cols, expr, input_scheme)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 156, in _convert_binary_expr
right = self._convert_expr(cols, expr.right, input_scheme)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 110, in _convert_expr
return self._convert_attribute_ref(cols, expr, input_scheme)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 133, in _convert_attribute_ref
return cols[expr.position]
IndexError: list index out of range
The text was updated successfully, but these errors were encountered:
Looks like a bug in get_sql having to do with attribute indexes, perhaps after a join or after a projection. I would print out what the positions are as the plan is traversed.
For the following query:
`k = scan(kmercntnorm_11_forward_Pkmer);
--kmers = select * from k;
------- original query
X = select a.sampleid as asample, b.sampleid as bsample,
case when a.norm_cnt < b.norm_cnt then a.norm_cnt else b.norm_cnt end as minv
from k a, k b
where a.kmer = b.kmer
and a.sampleid < b.sampleid;
Y = select asample, bsample, 1 - sum(minv) as BCdis
from X;
store(Y, BC);`
when push_sql is false, the query runs fine, but when push_sql is true, the compilation fails with the following trace:
Traceback (most recent call last):
File "/opt/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 570, in dispatch
return method(_args, *_kwargs)
File "/usr/local/myria-web/appengine/myria_web_main.py", line 504, in post
multiway_join=multiway_join, push_sql=push_sql)
File "/usr/local/myria-web/appengine/myria_web_main.py", line 124, in get_physical_plan
multiway_join=multiway_join, push_sql=push_sql)
File "/usr/local/myria-web/appengine/myria_web_main.py", line 110, in get_plan
push_sql=push_sql)
File "/usr/local/myria-web/appengine/raco/myrial/interpreter.py", line 451, in get_physical_plan
return self.get_physical_plan_for(target_phys_algebra, **kwargs)
File "/usr/local/myria-web/appengine/raco/myrial/interpreter.py", line 440, in get_physical_plan_for
return optimize(logical_plan, **kwargs)
File "/usr/local/myria-web/appengine/raco/compile.py", line 70, in optimize
return optimize_by_rules(expr, target.opt_rules(**kwargs))
File "/usr/local/myria-web/appengine/raco/compile.py", line 59, in optimize_by_rules
expr = recursiverule(expr)
File "/usr/local/myria-web/appengine/raco/compile.py", line 44, in recursiverule
newe = rule(e)
File "/usr/local/myria-web/appengine/raco/rules.py", line 31, in call
return self.fire(expr)
File "/usr/local/myria-web/appengine/raco/backends/myria/myria.py", line 1500, in fire
sql_plan = cat.get_sql(expr)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 247, in get_sql
return self._get_unary_sql(plan)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 185, in _get_unary_sql
input = self.get_sql(plan.input).alias("input")
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 247, in get_sql
return self._get_unary_sql(plan)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 185, in _get_unary_sql
input = self.get_sql(plan.input).alias("input")
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 247, in get_sql
return self._get_unary_sql(plan)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 185, in _get_unary_sql
input = self.get_sql(plan.input).alias("input")
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 247, in get_sql
return self._get_unary_sql(plan)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 185, in _get_unary_sql
input = self.get_sql(plan.input).alias("input")
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 247, in get_sql
return self._get_unary_sql(plan)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 185, in _get_unary_sql
input = self.get_sql(plan.input).alias("input")
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 247, in get_sql
return self._get_unary_sql(plan)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 185, in _get_unary_sql
input = self.get_sql(plan.input).alias("input")
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 247, in get_sql
return self._get_unary_sql(plan)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 190, in _get_unary_sql
cond = self._convert_expr(cols, plan.condition, input_sch)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 116, in _convert_expr
return self._convert_binary_expr(cols, expr, input_scheme)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 156, in _convert_binary_expr
right = self._convert_expr(cols, expr.right, input_scheme)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 110, in _convert_expr
return self._convert_attribute_ref(cols, expr, input_scheme)
File "/usr/local/myria-web/appengine/raco/backends/sql/catalog.py", line 133, in _convert_attribute_ref
return cols[expr.position]
IndexError: list index out of range
The text was updated successfully, but these errors were encountered: