Datalog column references should not be resolved at compile-time

Bug #1426193 reported by Tim Hinrichs
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
congress
Fix Released
High
Tim Hinrichs

Bug Description

Currently we resolve column-references in Datalog rules at compile time. For example, p(x) :- nova:servers(id=x) is translated into p(x) :- nova:servers(x, y0, y1, ..., yn) when the rule is read into memory. This is problematic because it assumes we know the schema for the 'nova' service at the time the rule is submitted. But 'nova' might be a service loaded *after* the rule is submitted, and until it is loaded we do not necessarily know which datasource driver class 'nova' references.

Resolving the rule at the time the datasource is loaded isn't great either since then we lose the ability to change the 'nova' service to a different class later. Not that we would necessarily want to do that, but it would be a source of confusion.

And eventually we would like to enable schemas to be declared in policy as well, in which case the user can change the schema at any time.

All told it makes sense to build column-references directly into the evaluation engine. This would require the Literal class, the safety checks, and the unifier to be aware of schemas.

Tim Hinrichs (thinrichs)
Changed in congress:
status: New → In Progress
Tim Hinrichs (thinrichs)
Changed in congress:
status: In Progress → Fix Committed
Tim Hinrichs (thinrichs)
Changed in congress:
milestone: none → kilo-3
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.