在 postgresql-simple 中使用多维数据集
Using cubes in postgresql-simple
您打算如何使用 cube
s with postgresql-simple
?
目前,我正在做
query conn "SELECT thing FROM table WHERE coord <@ cube('?, ?') ORDER BY cube_distance(coord, cube('?')) ASC"
(In [a, b, c], In [d, e, f], In [g, h, i])
效果很好,但感觉像是对 In
的误用。在 executeMany
的情况下它也会失败。例如
executeMany conn "INSERT INTO table(thing, coord) VALUES(?, cube('?'))" lst
其中 lst :: [(String, In [Float])]
失败并显示 syntax error in multi-row template
。等效,但效率较低
mapM_ (execute conn "INSERT INTO table(thing, coord) VALUES(?, cube('?'))") lst
工作正常,所以我假设这与 executeMany
如何组织插入参数有关。
但是,文档没有提到 Cube
类型,而且我找不到它的使用示例,所以我不太确定我应该 去做。
你可以用this mini-library我写的。一旦包含它,您就可以
execute "INSERT INTO table(cube_field, name) VALUES(?, ?) RETURNING id" (Cube [[1, 2, 3]], "Testing")
而且,更重要的是,
executeMany "INSERT INTO table(cube_field, name) VALUES(?, ?) RETURNING id"
[(Cube [[1, 2]], "One"), (Cube [[3, 4]], "Two"), (Cube [[5, 6]], "Three")]
没有 fromField
实例,因此您现在不能 select Cube
。我不会添加它,因为它看起来很重要,而且我的用例不需要它,但是 patches are definitely welcome.
您打算如何使用 cube
s with postgresql-simple
?
目前,我正在做
query conn "SELECT thing FROM table WHERE coord <@ cube('?, ?') ORDER BY cube_distance(coord, cube('?')) ASC"
(In [a, b, c], In [d, e, f], In [g, h, i])
效果很好,但感觉像是对 In
的误用。在 executeMany
的情况下它也会失败。例如
executeMany conn "INSERT INTO table(thing, coord) VALUES(?, cube('?'))" lst
其中 lst :: [(String, In [Float])]
失败并显示 syntax error in multi-row template
。等效,但效率较低
mapM_ (execute conn "INSERT INTO table(thing, coord) VALUES(?, cube('?'))") lst
工作正常,所以我假设这与 executeMany
如何组织插入参数有关。
但是,文档没有提到 Cube
类型,而且我找不到它的使用示例,所以我不太确定我应该 去做。
你可以用this mini-library我写的。一旦包含它,您就可以
execute "INSERT INTO table(cube_field, name) VALUES(?, ?) RETURNING id" (Cube [[1, 2, 3]], "Testing")
而且,更重要的是,
executeMany "INSERT INTO table(cube_field, name) VALUES(?, ?) RETURNING id"
[(Cube [[1, 2]], "One"), (Cube [[3, 4]], "Two"), (Cube [[5, 6]], "Three")]
没有 fromField
实例,因此您现在不能 select Cube
。我不会添加它,因为它看起来很重要,而且我的用例不需要它,但是 patches are definitely welcome.