Skip to content

Commit 24427b2

Browse files
author
Montana Low
committed
remove necessity of superuser to break the cache
1 parent 57ebe61 commit 24427b2

File tree

2 files changed

+42
-28
lines changed

2 files changed

+42
-28
lines changed

pgml-extension/pgml_extension/model.py

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -964,31 +964,27 @@ def deploy(self, strategy):
964964

965965
plpy.execute(
966966
f"""
967-
CREATE OR REPLACE FUNCTION pgml.predict(
968-
project_name TEXT, -- Human-friendly project name
969-
features DOUBLE PRECISION[] -- Must match the training data column order
970-
)
971-
RETURNS DOUBLE PRECISION
972-
AS $$
973-
from pgml_extension.model import Project
974-
975-
return float(Project.find_by_name(project_name, {q(deployment_id)}).deployed_model.predict(features))
976-
$$ LANGUAGE plpython3u;
967+
CREATE OR REPLACE FUNCTION pgml.predict(
968+
project_name TEXT, -- Human-friendly project name
969+
features DOUBLE PRECISION[] -- Must match the training data column order
970+
)
971+
RETURNS DOUBLE PRECISION
972+
AS $$
973+
SELECT pgml.predict_versioned(project_name, features, {q(deployment_id)});
974+
$$ LANGUAGE SQL;
977975
"""
978976
)
979977

980978
plpy.execute(
981979
f"""
982-
CREATE OR REPLACE FUNCTION pgml.predict_joint(
983-
project_name TEXT, -- Human-friendly project name
984-
features DOUBLE PRECISION[] -- Must match the training data column order
985-
)
986-
RETURNS DOUBLE PRECISION[]
987-
AS $$
988-
from pgml_extension.model import Project
989-
990-
return Project.find_by_name(project_name, {q(deployment_id)}).deployed_model.predict(features)
991-
$$ LANGUAGE plpython3u;
980+
CREATE OR REPLACE FUNCTION pgml.predict_joint(
981+
project_name TEXT, -- Human-friendly project name
982+
features DOUBLE PRECISION[] -- Must match the training data column order
983+
)
984+
RETURNS DOUBLE PRECISION[]
985+
AS $$
986+
SELECT pgml.predict_joint_versioned(project_name, features, {q(deployment_id)});
987+
$$ LANGUAGE SQL;
992988
"""
993989
)
994990

pgml-extension/pgml_extension/sql/install/models.sql

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -153,32 +153,50 @@ $$ LANGUAGE plpython3u;
153153
---
154154
--- Predict
155155
---
156-
CREATE OR REPLACE FUNCTION pgml.predict(
157-
project_name TEXT, -- Human-friendly project name
158-
features DOUBLE PRECISION[] -- Must match the training data column order
156+
CREATE OR REPLACE FUNCTION pgml.predict_versioned(
157+
project_name TEXT, -- Human-friendly project name
158+
features DOUBLE PRECISION[], -- Must match the training data column order
159+
version INTEGER DEFAULT 0
159160
)
160161
RETURNS DOUBLE PRECISION
161162
AS $$
162163
from pgml_extension.model import Project
163164

164-
return float(Project.find_by_name(project_name, 0).deployed_model.predict(features))
165+
return float(Project.find_by_name(project_name, version).deployed_model.predict(features))
165166
$$ LANGUAGE plpython3u;
166167

168+
CREATE OR REPLACE FUNCTION pgml.predict(
169+
project_name TEXT, -- Human-friendly project name
170+
features DOUBLE PRECISION[] -- Must match the training data column order
171+
)
172+
RETURNS DOUBLE PRECISION
173+
AS $$
174+
SELECT pgml.predict_versioned(project_name, features, 0);
175+
$$ LANGUAGE SQL;
167176

168177
---
169178
--- Predict w/ multiple outputs
170179
---
171-
CREATE OR REPLACE FUNCTION pgml.predict_joint(
172-
project_name TEXT, -- Human-friendly project name
173-
features DOUBLE PRECISION[] -- Must match the training data column order
180+
CREATE OR REPLACE FUNCTION pgml.predict_joint_versioned(
181+
project_name TEXT, -- Human-friendly project name
182+
features DOUBLE PRECISION[], -- Must match the training data column order
183+
version INTEGER DEFAULT 0
174184
)
175185
RETURNS DOUBLE PRECISION[]
176186
AS $$
177187
from pgml_extension.model import Project
178188

179-
return Project.find_by_name(project_name, 0).deployed_model.predict(features)
189+
return Project.find_by_name(project_name, version).deployed_model.predict(features)
180190
$$ LANGUAGE plpython3u;
181191

192+
CREATE OR REPLACE FUNCTION pgml.predict_joint(
193+
project_name TEXT, -- Human-friendly project name
194+
features DOUBLE PRECISION[] -- Must match the training data column order
195+
)
196+
RETURNS DOUBLE PRECISION[]
197+
AS $$
198+
SELECT pgml.predict_joint_versioned(project_name, features, 0);
199+
$$ LANGUAGE SQL;
182200

183201
---
184202
--- Predict using a specific model. Useful for debugging.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy