Skip to content

Commit f413e66

Browse files
committed
Add support for multiranges
1 parent 664345f commit f413e66

File tree

3 files changed

+971
-456
lines changed

3 files changed

+971
-456
lines changed

codegen/src/type_gen.rs

+14-1
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,15 @@ fn parse_types() -> BTreeMap<u32, Type> {
185185
)
186186
})
187187
.collect::<HashMap<_, _>>();
188+
let multi_range_elements = raw_ranges
189+
.iter()
190+
.map(|m| {
191+
(
192+
oids_by_name[&*m["rngmultitypid"]],
193+
oids_by_name[&*m["rngsubtype"]],
194+
)
195+
})
196+
.collect::<HashMap<_, _>>();
188197

189198
let range_vector_re = Regex::new("(range|vector)$").unwrap();
190199
let array_re = Regex::new("^_(.*)").unwrap();
@@ -209,7 +218,11 @@ fn parse_types() -> BTreeMap<u32, Type> {
209218
}
210219

211220
let element = match &*kind {
212-
"R" => range_elements[&oid],
221+
"R" => match &*raw_type["typtype"] {
222+
"r" => range_elements[&oid],
223+
"m" => multi_range_elements[&oid],
224+
typtype => panic!("invalid range typtype {}", typtype),
225+
}
213226
"A" => oids_by_name[&raw_type["typelem"]],
214227
_ => 0,
215228
};

0 commit comments

Comments
 (0)