Skip to content

Commit 8dfc02c

Browse files
add new built-in record types (#2636)
1 parent 5c1327b commit 8dfc02c

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

basex-core/src/main/java/org/basex/query/func/Function.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,8 @@ public enum Function implements AFunction {
239239
/** XQuery function. */
240240
ELEMENT_TO_MAP_PLAN(FnElementToMapPlan::new, "element-to-map-plan(input)",
241241
params(ChoiceItemType.get(NodeType.DOCUMENT, NodeType.ELEMENT).seqType(Occ.ZERO_OR_MORE)),
242-
RECORD_O.mapType(BasicType.STRING).seqType()),
242+
ChoiceItemType.get(Records.ELEMENT_CONVERSION_PLAN.get(),
243+
Records.ATTRIBUTE_CONVERSION_PLAN.get()).seqType().mapType(BasicType.STRING).seqType()),
243244
/** XQuery function. */
244245
ELEMENT_WITH_ID(FnElementWithId::new, "element-with-id(values[,node])",
245246
params(STRING_ZM, NODE_ZO), ELEMENT_ZM),
@@ -792,11 +793,15 @@ public enum Function implements AFunction {
792793

793794
// Predefined record constructor functions
794795

796+
/** XQuery function. */
797+
ATTRIBUTE_CONVERSION_PLAN_RECORD(Records.ATTRIBUTE_CONVERSION_PLAN.get()),
795798
/** XQuery function. */
796799
DATETIME_RECORD(Records.DATETIME.get()),
797800
/** XQuery function. */
798801
DIVIDED_DECIMALS_RECORD(Records.DIVIDED_DECIMALS.get()),
799802
/** XQuery function. */
803+
ELEMENT_CONVERSION_PLAN_RECORD(Records.ELEMENT_CONVERSION_PLAN.get()),
804+
/** XQuery function. */
800805
INFER_ENCODING_RECORD(Records.INFER_ENCODING.get()),
801806
/** XQuery function. */
802807
LOAD_XQUERY_MODULE_RECORD(Records.LOAD_XQUERY_MODULE.get()),

basex-core/src/main/java/org/basex/query/func/Records.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
*/
1818
public enum Records {
1919
/** Record definition. */
20+
ATTRIBUTE_CONVERSION_PLAN(FN_URI, "attribute-conversion-plan",
21+
field("type", EnumType.get("numeric", "boolean", "string", "skip").seqType())),
22+
/** Record definition. */
2023
DATETIME(FN_URI, "dateTime",
2124
field("year", Types.INTEGER_O, true),
2225
field("month", Types.INTEGER_O, true),
@@ -32,6 +35,12 @@ public enum Records {
3235
field("remainder", Types.DECIMAL_O)
3336
),
3437
/** Record definition. */
38+
ELEMENT_CONVERSION_PLAN(FN_URI, "element-conversion-plan",
39+
field("layout", EnumType.get("empty", "empty-plus", "simple", "simple-plus", "list",
40+
"list-plus", "record", "sequence", "mixed", "xml", "error", "deep-skip").seqType()),
41+
field("child", Types.STRING_ZO, true),
42+
field("type", EnumType.get("numeric", "boolean", "string").seqType(), true)),
43+
/** Record definition. */
3544
INFER_ENCODING(BIN_URI, "infer-encoding",
3645
field("encoding", Types.STRING_O),
3746
field("offset", Types.INTEGER_O)

0 commit comments

Comments
 (0)