fix: allow cast on types with underscores/numbers

e.g. select=oid_array::_int4
This commit is contained in:
steve-chavez
2022-05-09 13:02:33 -05:00
committed by Steve Chavez
parent 867f2569a0
commit d88b16e5ab
6 changed files with 23 additions and 5 deletions
+1
View File
@@ -52,6 +52,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- #2254, Fix inferring a foreign key column as a primary key column on views - @steve-chavez
- #2070, Restrict generated many-to-many relationships - @steve-chavez
+ Only adds many-to-many relationships when: a table has FKs to two other tables and these FK columns are part of the table's PK columns.
- #2278, Allow casting to types with underscores and numbers(e.g. `select=oid_array::_int4`) - @steve-chavez
### Changed
+1 -1
View File
@@ -394,7 +394,7 @@ pFieldSelect = lexeme $
do
alias <- optionMaybe ( try(pFieldName <* aliasSeparator) )
fld <- pField
cast' <- optionMaybe (string "::" *> many letter)
cast' <- optionMaybe (string "::" *> many (letter <|> digit <|> oneOf "_"))
return (fld, toS <$> cast', alias, Nothing, Nothing)
)
<|> do
+7
View File
@@ -365,6 +365,13 @@ spec actualPgVersion = do
, matchHeaders = []
}
it "can cast types with underscore and numbers" $
get "/oid_test?select=id,oid_col::int,oid_array_col::_int4"
`shouldRespondWith` [json|
[{"id":1,"oid_col":12345,"oid_array_col":[1,2,3,4,5]}]
|]
{ matchHeaders = [matchContentTypeJson] }
it "requesting parents and children" $
get "/projects?id=eq.1&select=id, name, clients(*), tasks(id, name)" `shouldRespondWith`
[json|[{"id":1,"name":"Windows 7","clients":{"id":1,"name":"Microsoft"},"tasks":[{"id":1,"name":"Design w7"},{"id":2,"name":"Code w7"}]}]|]
+9
View File
@@ -762,3 +762,12 @@ INSERT INTO test.limited_delete_items_cpk VALUES (1, 'item-1'), (2, 'item-2'), (
TRUNCATE TABLE test.limited_delete_items_no_pk CASCADE;
INSERT INTO test.limited_delete_items_no_pk VALUES (1, 'item-1'), (2, 'item-2'), (3, 'item-3');
TRUNCATE TABLE test.xmltest CASCADE;
INSERT INTO test.xmltest VALUES
(1, '<myxml>foo</myxml>'),
(2, 'bar'),
(3, '<foobar><baz/></foobar>');
TRUNCATE TABLE test.oid_test CASCADE;
INSERT INTO oid_test(id, oid_col, oid_array_col) VALUES (1, '12345', '{1,2,3,4,5}'::oid[]);
+1
View File
@@ -179,6 +179,7 @@ GRANT ALL ON TABLE
, limited_delete_items_cpk_view
, limited_update_items_cpk_view
, xmltest
, oid_test
TO postgrest_test_anonymous;
GRANT INSERT ON TABLE insertonly TO postgrest_test_anonymous;
+4 -4
View File
@@ -2589,7 +2589,7 @@ CREATE TABLE test.xmltest (
xml pg_catalog.xml NOT NULL
);
INSERT INTO test.xmltest VALUES
(1, '<myxml>foo</myxml>'),
(2, 'bar'),
(3, '<foobar><baz/></foobar>');
CREATE TABLE oid_test(
id int,
oid_col oid,
oid_array_col oid[]);