Yingyi Bu has uploaded a new change for review.
https://asterix-gerrit.ics.uci.edu/1898
Change subject: [DOC] Reorganize data model documentations.
......................................................................
[DOC] Reorganize data model documentations.
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- Re-organize data model documentations;
- Fix a few minor issues in function documentations.
Change-Id: I6a2306747631c25d46c5246643abc1e147cf7c21
---
M asterixdb/asterix-doc/pom.xml
M asterixdb/asterix-doc/src/main/markdown/builtins/11_type.md
M asterixdb/asterix-doc/src/main/markdown/builtins/12_misc.md
M asterixdb/asterix-doc/src/main/markdown/builtins/13_conditional.md
M asterixdb/asterix-doc/src/main/markdown/builtins/9_aggregate_sql.md
A asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_composite.md
A asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_header.md
A asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_incomplete.md
A
asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_primitive_common.md
R asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_primitive_delta.md
10 files changed, 244 insertions(+), 166 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/98/1898/1
diff --git a/asterixdb/asterix-doc/pom.xml b/asterixdb/asterix-doc/pom.xml
index a707434..57ed8f1 100644
--- a/asterixdb/asterix-doc/pom.xml
+++ b/asterixdb/asterix-doc/pom.xml
@@ -59,7 +59,10 @@
<filelist
dir="${project.basedir}/src/main/markdown/builtins"
files="0_toc.md,1_numeric_common.md,1_numeric_delta.md,2_string_common.md,2_string_delta.md,3_binary.md,4_spatial.md,5_similarity.md,6_tokenizing.md,7_temporal.md,7_allens.md,8_record.md,9_aggregate_sql.md,10_comparison.md,11_type.md,13_conditional.md,12_misc.md"
/>
</concat>
<concat
destfile="${project.build.directory}/generated-site/markdown/aql/builtins.md">
- <filelist
dir="${project.basedir}/src/main/markdown/builtins"
files="0_toc.md,1_numeric.md,2_string.md,3_binary.md,4_spatial.md,5_similarity.md,6_tokenizing.md,7_temporal.md,7_allens.md,8_record.md,9_aggregate_aql.md,10_comparison.md,11_type.md,13_conditional.md,12_misc.md"
/>
+ <filelist
dir="${project.basedir}/src/main/markdown/builtins"
files="0_toc.md,1_numeric_common.md,1_numeric_delta.md,2_string_common.md,2_string_delta.md,3_binary.md,4_spatial.md,5_similarity.md,6_tokenizing.md,7_temporal.md,7_allens.md,8_record.md,9_aggregate_sql.md,10_comparison.md,11_type.md,13_conditional.md,12_misc.md"
/>
+ </concat>
+ <concat
destfile="${project.build.directory}/generated-site/markdown/datamodel.md">
+ <filelist
dir="${project.basedir}/src/main/markdown/datamodel"
files="datamodel_header.md,datamodel_primitive_common.md,datamodel_primitive_delta.md,datamodel_incomplete.md,datamodel_composite.md"
/>
</concat>
<concat
destfile="${project.build.directory}/generated-site/markdown/ansible.md">
<filelist dir="${project.basedir}/src/main/installation/"
files="ansible_title.md,ansible.md" />
diff --git a/asterixdb/asterix-doc/src/main/markdown/builtins/11_type.md
b/asterixdb/asterix-doc/src/main/markdown/builtins/11_type.md
index 5cb22d4..a2b2555 100644
--- a/asterixdb/asterix-doc/src/main/markdown/builtins/11_type.md
+++ b/asterixdb/asterix-doc/src/main/markdown/builtins/11_type.md
@@ -17,7 +17,7 @@
! under the License.
!-->
-## <a id="TypeFunctions">Type Functions</a> <font size="4"><a
href="#toc">[Back to TOC]</a></font> ##
+## <a id="TypeFunctions">Type Functions</a> ##
### is_array (isarray) ###
* Syntax:
diff --git a/asterixdb/asterix-doc/src/main/markdown/builtins/12_misc.md
b/asterixdb/asterix-doc/src/main/markdown/builtins/12_misc.md
index b28443c..ac2a465 100644
--- a/asterixdb/asterix-doc/src/main/markdown/builtins/12_misc.md
+++ b/asterixdb/asterix-doc/src/main/markdown/builtins/12_misc.md
@@ -17,7 +17,7 @@
! under the License.
!-->
-## <a id="MiscFunctions">Miscellaneous Functions</a> <font size="4"><a
href="#toc">[Back to TOC]</a></font> ##
+## <a id="MiscFunctions">Miscellaneous Functions</a> ##
### uuid ###
* Syntax:
diff --git a/asterixdb/asterix-doc/src/main/markdown/builtins/13_conditional.md
b/asterixdb/asterix-doc/src/main/markdown/builtins/13_conditional.md
index 04fa943..202f7e4 100644
--- a/asterixdb/asterix-doc/src/main/markdown/builtins/13_conditional.md
+++ b/asterixdb/asterix-doc/src/main/markdown/builtins/13_conditional.md
@@ -17,7 +17,7 @@
! under the License.
!-->
-## <a id="ConditionalFunctions">Conditional Functions</a> <font size="4"><a
href="#toc">[Back to TOC]</a></font> ##
+## <a id="ConditionalFunctions">Conditional Functions</a> ##
### if_null (ifnull) ###
diff --git
a/asterixdb/asterix-doc/src/main/markdown/builtins/9_aggregate_sql.md
b/asterixdb/asterix-doc/src/main/markdown/builtins/9_aggregate_sql.md
index 62a35c3..90eb017 100644
--- a/asterixdb/asterix-doc/src/main/markdown/builtins/9_aggregate_sql.md
+++ b/asterixdb/asterix-doc/src/main/markdown/builtins/9_aggregate_sql.md
@@ -19,13 +19,12 @@
## <a id="AggregateFunctions">Aggregate Functions (Array Functions) </a> ##
-A high-level description of SQL++ aggregate functions can be found at <a
href="manual.html#Aggregation_functions">here</a>.
-As SQL++ supports all legitimate SQL GROUP BY and Aggregation queries,
-<a href="manual.html#SQL-92_aggregation_functions">here</a> is a description
of how standard SQL aggregation functions
-are supported.
-
This section contains detailed descriptions of each SQL++ aggregate function
(i.e., array function).
-
+Note that as described in the SQL++ query reference documentation, standard
+SQL aggregate functions (e.g., `MIN`, `MAX`, `SUM`, `COUNT`, and `AVG`)
+are not real functions in SQL++ but just syntactic sugars over corresponding
+SQL++ builtin aggregate functions (e.g., `ARRAY_MIN`, `ARRAY_MAX`,
+`ARRAY_SUM`, `ARRAY_COUNT`, and `ARRAY_AVG`).
### array_count ###
* Syntax:
diff --git
a/asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_composite.md
b/asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_composite.md
new file mode 100644
index 0000000..7ed4e34
--- /dev/null
+++ b/asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_composite.md
@@ -0,0 +1,57 @@
+<!--
+ ! Licensed to the Apache Software Foundation (ASF) under one
+ ! or more contributor license agreements. See the NOTICE file
+ ! distributed with this work for additional information
+ ! regarding copyright ownership. The ASF licenses this file
+ ! to you under the Apache License, Version 2.0 (the
+ ! "License"); you may not use this file except in compliance
+ ! with the License. You may obtain a copy of the License at
+ !
+ ! http://www.apache.org/licenses/LICENSE-2.0
+ !
+ ! Unless required by applicable law or agreed to in writing,
+ ! software distributed under the License is distributed on an
+ ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ! KIND, either express or implied. See the License for the
+ ! specific language governing permissions and limitations
+ ! under the License.
+ !-->
+
+
+## <a id="DerivedTypes">Derived Types</a> ##
+
+### <a id="DerivedTypesObject">Object</a>###
+An `object` contains a set of fields, where each field is described by its name
and type. An object type may be defined as either open or closed. Open objects
(instances of open object types) are permitted to contain fields that are not
part of the type definition, while closed objects do not permit their instances
to carry extra fields. An example type definition for an object is:
+
+ create type SoldierType as open {
+ name: string?,
+ rank: string,
+ serialno: int
+ };
+
+Syntactically, object constructors are surrounded by curly braces "{...}".
+Some examples of legitimate instances of the above type include:
+
+ { "name": "Joe Blow", "rank": "Sergeant", "serialno": 1234567 }
+ { "rank": "Private", "serialno": 9876543 }
+ { "name": "Sally Forth", "rank": "Major", "serialno": 2345678,
"gender": "F" }
+
+The first instance has all of the type's prescribed content. The second
instance is missing the name field, which is fine because it is optional (due
to the ?). The third instance has an extra field; that is fine because the type
definition specifies that it is open (which is also true by default, if open is
not specified). To more tightly control object content, specifying closed
instead of open in the type definition for SoldierType would have made the
third example instance an invalid instance of the type.
+
+### <a id="DerivedTypesArray">Array</a>###
+An `array` is a container that holds a fixed number of values. Array
constructors are denoted by brackets: "[...]".
+
+An example would be
+
+
+ ["alice", 123, "bob", null]
+
+
+### <a id="DerivedTypesMultiset">Multiset</a>###
+A `multiset` is a generalization of the concept of a set that, unlike a set,
allows multiple instances of the multiset's elements.
+ Multiset constructors are denoted by two opening curly braces followed by
data and two closing curly braces, like "{{...}}".
+
+An example would be
+
+
+ {{"hello", 9328, "world", [1, 2, null]}}
diff --git
a/asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_header.md
b/asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_header.md
new file mode 100644
index 0000000..74bab7f
--- /dev/null
+++ b/asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_header.md
@@ -0,0 +1,55 @@
+<!--
+ ! Licensed to the Apache Software Foundation (ASF) under one
+ ! or more contributor license agreements. See the NOTICE file
+ ! distributed with this work for additional information
+ ! regarding copyright ownership. The ASF licenses this file
+ ! to you under the Apache License, Version 2.0 (the
+ ! "License"); you may not use this file except in compliance
+ ! with the License. You may obtain a copy of the License at
+ !
+ ! http://www.apache.org/licenses/LICENSE-2.0
+ !
+ ! Unless required by applicable law or agreed to in writing,
+ ! software distributed under the License is distributed on an
+ ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ! KIND, either express or implied. See the License for the
+ ! specific language governing permissions and limitations
+ ! under the License.
+ !-->
+
+# The Asterix Data Model (ADM) #
+
+## <a id="toc">Table of Contents</a> ##
+
+* [Primitive Types](#PrimitiveTypes)
+ * [Boolean](#PrimitiveTypesBoolean)
+ * [String](#PrimitiveTypesString)
+ * [Tinyint / Smallint / Integer (Int) / Bigint](#PrimitiveTypesInt)
+ * [Float](#PrimitiveTypesFloat)
+ * [Double (Double Precision)](#PrimitiveTypesDouble)
+ * [Binary](#PrimitiveTypesBinary)
+ * [Point](#PrimitiveTypesPoint)
+ * [Line](#PrimitiveTypesLine)
+ * [Rectangle](#PrimitiveTypesRectangle)
+ * [Circle](#PrimitiveTypesCircle)
+ * [Polygon](#PrimitiveTypesPolygon)
+ * [Date](#PrimitiveTypesDate)
+ * [Time](#PrimitiveTypesTime)
+ * [Datetime (Timestamp)](#PrimitiveTypesDateTime)
+ * [Duration/Year_month_duration/Day_time_duration](#PrimitiveTypesDuration)
+ * [Interval](#PrimitiveTypesInterval)
+ * [UUID](#PrimitiveTypesUUID)
+* [Incomplete Information Types] (#IncompleteInformationTypes)
+ * [Null](#IncompleteInformationTypesNull)
+ * [Missing](#IncompleteInformationTypesMissing)
+* [Derived Types](#DerivedTypes)
+ * [Object](#DerivedTypesObject)
+ * [Array](#DerivedTypesArray)
+ * [Multiset](#DerivedTypesMultiset)
+
+An instance of Asterix data model (ADM) can be a _*primitive type*_ (`boolean`,
+`tinyint`, `smallint`, `integer`, `bigint`, `string`, `float`, `double`,
`date`,
+`time`, `datetime`, etc.), a _*special type*_ (`null` or `missing`), or a
_*derived type*_.
+
+The type names are case-insensitive, e.g., both `BIGINT` and `bigint` are
acceptable.
+
diff --git
a/asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_incomplete.md
b/asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_incomplete.md
new file mode 100644
index 0000000..2c5c170
--- /dev/null
+++ b/asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_incomplete.md
@@ -0,0 +1,54 @@
+<!--
+ ! Licensed to the Apache Software Foundation (ASF) under one
+ ! or more contributor license agreements. See the NOTICE file
+ ! distributed with this work for additional information
+ ! regarding copyright ownership. The ASF licenses this file
+ ! to you under the Apache License, Version 2.0 (the
+ ! "License"); you may not use this file except in compliance
+ ! with the License. You may obtain a copy of the License at
+ !
+ ! http://www.apache.org/licenses/LICENSE-2.0
+ !
+ ! Unless required by applicable law or agreed to in writing,
+ ! software distributed under the License is distributed on an
+ ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ! KIND, either express or implied. See the License for the
+ ! specific language governing permissions and limitations
+ ! under the License.
+ !-->
+
+## <a id="IncompleteInformationTypes">Incomplete Information Types</a>##
+
+### <a id="IncompleteInformationTypesNull">Null</a> ###
+`null` is a special value that is often used to represent an unknown value.
+For example, a user might not be able to know the value of a field and let it
be `null`.
+
+ * Example:
+
+ { "field": null };
+
+
+ * The expected result is:
+
+ { "field": null }
+
+
+### <a id="IncompleteInformationTypesMissing">Missing</a> ###
+`missing` represents a missing name-value pair in an object.
+If the referenced field does not exist, an empty result value is returned by
the query.
+
+As neither the data model nor the system enforces homogeneity for datasets or
collections,
+items in a dataset or collection can be of heterogeneous types and
+so a field can be present in one object and `missing` in another.
+
+ * Example:
+
+ { "field": missing };
+
+
+ * The expected result is:
+
+ { }
+
+Since a field with value `missing` means the field is absent, we get an empty
object.
+
diff --git
a/asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_primitive_common.md
b/asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_primitive_common.md
new file mode 100644
index 0000000..14a5e3a
--- /dev/null
+++
b/asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_primitive_common.md
@@ -0,0 +1,66 @@
+<!--
+ ! Licensed to the Apache Software Foundation (ASF) under one
+ ! or more contributor license agreements. See the NOTICE file
+ ! distributed with this work for additional information
+ ! regarding copyright ownership. The ASF licenses this file
+ ! to you under the Apache License, Version 2.0 (the
+ ! "License"); you may not use this file except in compliance
+ ! with the License. You may obtain a copy of the License at
+ !
+ ! http://www.apache.org/licenses/LICENSE-2.0
+ !
+ ! Unless required by applicable law or agreed to in writing,
+ ! software distributed under the License is distributed on an
+ ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ! KIND, either express or implied. See the License for the
+ ! specific language governing permissions and limitations
+ ! under the License.
+ !-->
+
+## <a id="PrimitiveTypes">Primitive Types</a>##
+
+### <a id="PrimitiveTypesBoolean">Boolean</a> ###
+`boolean` data type can have one of the two values: _*true*_ or _*false*_.
+
+ * Example:
+
+ { "true": true, "false": false };
+
+
+ * The expected result is:
+
+ { "true": true, "false": false }
+
+
+### <a id="PrimitiveTypesString">String</a> ###
+`string` represents a sequence of characters. The total length of the sequence
can be up to 2,147,483,648.
+
+ * Example:
+
+ { "v1": string("This is a string."), "v2": string("\"This is a quoted
string\"") };
+
+
+ * The expected result is:
+
+ { "v1": "This is a string.", "v2": "\"This is a quoted string\"" }
+
+
+### <a id="PrimitiveTypesInt">Tinyint / Smallint / Integer (Int) / Bigint</a>
###
+Integer types using 8, 16, 32, or 64 bits. The ranges of these types are:
+
+- `tinyint`: -127 to 127
+- `smallint`: -32767 to 32767
+- `integer`: -2147483647 to 2147483647
+- `bigint`: -9223372036854775808 to 9223372036854775807
+
+`int` is an abbreviated alias for integer.
+
+ * Example:
+
+ { "tinyint": tiny("125"), "smallint": smallint("32765"), "integer":
294967295, "bigint": bigint("1700000000000000000")};
+
+
+ * The expected result is:
+
+ { "tinyint": 125, "smallint": 32765, "integer": 294967295, "bigint":
17000000 }
+
diff --git a/asterixdb/asterix-doc/src/site/markdown/datamodel.md
b/asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_primitive_delta.md
similarity index 63%
rename from asterixdb/asterix-doc/src/site/markdown/datamodel.md
rename to
asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_primitive_delta.md
index 2c8a015..92be550 100644
--- a/asterixdb/asterix-doc/src/site/markdown/datamodel.md
+++
b/asterixdb/asterix-doc/src/main/markdown/datamodel/datamodel_primitive_delta.md
@@ -17,78 +17,6 @@
! under the License.
!-->
-# The Asterix Data Model (ADM) #
-
-## <a id="toc">Table of Contents</a> ##
-
-* [Primitive Types](#PrimitiveTypes)
- * [Boolean](#PrimitiveTypesBoolean)
- * [Tinyint / Smallint / Integer (Int) / Bigint](#PrimitiveTypesInt)
- * [Float](#PrimitiveTypesFloat)
- * [Double (Double Precision)](#PrimitiveTypesDouble)
- * [String](#PrimitiveTypesString)
- * [Binary](#PrimitiveTypesBinary)
- * [Point](#PrimitiveTypesPoint)
- * [Line](#PrimitiveTypesLine)
- * [Rectangle](#PrimitiveTypesRectangle)
- * [Circle](#PrimitiveTypesCircle)
- * [Polygon](#PrimitiveTypesPolygon)
- * [Date](#PrimitiveTypesDate)
- * [Time](#PrimitiveTypesTime)
- * [Datetime (Timestamp)](#PrimitiveTypesDateTime)
- * [Duration/Year_month_duration/Day_time_duration](#PrimitiveTypesDuration)
- * [Interval](#PrimitiveTypesInterval)
- * [UUID](#PrimitiveTypesUUID)
-* [Incomplete Information Types] (#IncompleteInformationTypesTypes)
- * [Null](#IncompleteInformationTypesNull)
- * [Missing](#IncompleteInformationTypesMissing)
-* [Derived Types](#DerivedTypes)
- * [Object](#DerivedTypesObject)
- * [Array](#DerivedTypesArray)
- * [Multiset](#DerivedTypesMultiset)
-
-An instance of Asterix data model (ADM) can be a _*primitive type*_ (`boolean`,
-`tinyint`, `smallint`, `integer`, `bigint`, `string`, `float`, `double`,
`date`,
-`time`, `datetime`, etc.), a _*special type*_ (`null` or `missing`), or a
_*derived type*_.
-
-The type names are case-insensitive, e.g., both `BIGINT` and `bigint` are
acceptable.
-
-## <a id="PrimitiveTypes">Primitive Types</a>##
-
-### <a id="PrimitiveTypesBoolean">Boolean</a> ###
-`boolean` data type can have one of the two values: _*true*_ or _*false*_.
-
- * Example:
-
- { "true": true, "false": false };
-
-
- * The expected result is:
-
- { "true": true, "false": false }
-
-
-
-### <a id="PrimitiveTypesInt">Tinyint / Smallint / Integer (Int) / Bigint</a>
###
-Integer types using 8, 16, 32, or 64 bits. The ranges of these types are:
-
-- `tinyint`: -127 to 127
-- `smallint`: -32767 to 32767
-- `integer`: -2147483647 to 2147483647
-- `bigint`: -9223372036854775808 to 9223372036854775807
-
-`int` is an abbreviated alias for integer.
-
- * Example:
-
- { "tinyint": tiny("125"), "smallint": smallint("32765"), "integer":
294967295, "bigint": bigint("1700000000000000000")};
-
-
- * The expected result is:
-
- { "tinyint": 125, "smallint": 32765, "integer": 294967295, "bigint":
17000000 }
-
-
### <a id="PrimitiveTypesFloat">Float</a> ###
`float` represents approximate numeric data values using 4 bytes. The range of
a float value can be
from 2^(-149) to (2-2^(-23)·2^(127) for both positive and negative. Beyond
these ranges will get `INF` or `-INF`.
@@ -117,18 +45,6 @@
{ "v1": NaN, "v2": Infinity, "v3": -Infinity, "v4":
-2013.5938237483274 }
`Double precision` is an alias of `double`.
-
-### <a id="PrimitiveTypesString">String</a> ###
-`string` represents a sequence of characters. The total length of the sequence
can be up to 2,147,483,648.
-
- * Example:
-
- { "v1": string("This is a string."), "v2": string("\"This is a quoted
string\"") };
-
-
- * The expected result is:
-
- { "v1": "This is a string.", "v2": "\"This is a quoted string\"" }
### <a id="PrimitiveTypesBinary">Binary</a> ###
@@ -333,75 +249,3 @@
{ "v1": uuid("5c848e5c-6b6a-498f-8452-8847a2957421") }
-## <a id="IncompleteInformationTypes">Incomplete Information Types</a>##
-
-### <a id="IncompleteInformationTypesNull">Null</a> ###
-`null` is a special value that is often used to represent an unknown value.
-For example, a user might not be able to know the value of a field and let it
be `null`.
-
- * Example:
-
- { "field": null };
-
-
- * The expected result is:
-
- { "field": null }
-
-
-### <a id="IncompleteInformationTypesMissing">Missing</a> ###
-`missing` represents a missing name-value pair in an object.
-If the referenced field does not exist, an empty result value is returned by
the query.
-
-As neither the data model nor the system enforces homogeneity for datasets or
collections,
-items in a dataset or collection can be of heterogeneous types and
-so a field can be present in one object and `missing` in another.
-
- * Example:
-
- { "field": missing };
-
-
- * The expected result is:
-
- { }
-
-Since a field with value `missing` means the field is absent, we get an empty
object.
-
-## <a id="DerivedTypes">Derived Types</a> ##
-
-### <a id="DerivedTypesObject">Object</a>###
-An `object` contains a set of fields, where each field is described by its name
and type. An object type may be defined as either open or closed. Open objects
(instances of open object types) are permitted to contain fields that are not
part of the type definition, while closed objects do not permit their instances
to carry extra fields. An example type definition for an object is:
-
- create type SoldierType as open {
- name: string?,
- rank: string,
- serialno: int
- };
-
-Syntactically, object constructors are surrounded by curly braces "{...}".
-Some examples of legitimate instances of the above type include:
-
- { "name": "Joe Blow", "rank": "Sergeant", "serialno": 1234567 }
- { "rank": "Private", "serialno": 9876543 }
- { "name": "Sally Forth", "rank": "Major", "serialno": 2345678,
"gender": "F" }
-
-The first instance has all of the type's prescribed content. The second
instance is missing the name field, which is fine because it is optional (due
to the ?). The third instance has an extra field; that is fine because the type
definition specifies that it is open (which is also true by default, if open is
not specified). To more tightly control object content, specifying closed
instead of open in the type definition for SoldierType would have made the
third example instance an invalid instance of the type.
-
-### <a id="DerivedTypesArray">Array</a>###
-An `array` is a container that holds a fixed number of values. Array
constructors are denoted by brackets: "[...]".
-
-An example would be
-
-
- ["alice", 123, "bob", null]
-
-
-### <a id="DerivedTypesMultiset">Multiset</a>###
-A `multiset` is a generalization of the concept of a set that, unlike a set,
allows multiple instances of the multiset's elements.
- Multiset constructors are denoted by two opening curly braces followed by
data and two closing curly braces, like "{{...}}".
-
-An example would be
-
-
- {{"hello", 9328, "world", [1, 2, null]}}
--
To view, visit https://asterix-gerrit.ics.uci.edu/1898
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6a2306747631c25d46c5246643abc1e147cf7c21
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Yingyi Bu <[email protected]>