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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions