Skip to content

pass query parameters through to metamodel syntax #446

@riastradh-probcomp

Description

@riastradh-probcomp

Currently we do not distinguish

CREATE GENERATOR g FOR p USING m ("foo")

from

CREATE GENERATOR g FOR p USING m ('foo')

which is not at the moment blocking anything (hence the stall of #410), but which may be worth fixing soon. Furthermore, passing a verbatim string through, e.g. to provide the source code in

CREATE GENERATOR g FOR p USING cgpm (
    MODEL x GIVEN y USING venturescript (source = 'assume x = 42; ...')
)

as we kludgily do in

bdb.execute('''
CREATE GENERATOR g0 FOR satellites USING cgpm (
apogee NORMAL,
LATENT kepler_cluster_id NUMERICAL,
LATENT kepler_noise NUMERICAL,
MODEL kepler_cluster_id, kepler_noise, period
GIVEN apogee, perigee
USING venturescript (source = "{}"),
MODEL perigee GIVEN apogee USING linreg,
MODEL class_of_orbit GIVEN apogee, period, perigee
USING forest (k = 4),
SUBSAMPLE 100,
)
'''.format(kepler_source))
with Python string formatting, is not easy to do reliably. That fragment just assumes no " appears in the VentureScript code, and abuses "..." quotation, which in SQL means names, with '...' meaning strings. No quotation should be necessary on the user's part -- it should be possible to do

bdb.execute('CREATE GENERATOR ... USING venturescript (source = ?) ...', (venturescript,))

and get the same intended effect reliably.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions