Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
036a5a3
Smithy: per-service model transforms and awsQueryCompatible ResponseM…
sbaluja Aug 19, 2026
e61fa21
Smithy: recursively include nested container element types in CppType…
sbaluja Aug 19, 2026
f0c62c1
Smithy: guard Windows-macro-colliding enum constants in EnumRenderer
sbaluja Aug 19, 2026
7a48648
Smithy: honor per-service result-class suffix in ResultRenderer
sbaluja Aug 19, 2026
75e457a
Smithy: blob-payload event rendering and dual-role sub-object request…
sbaluja Aug 19, 2026
34f7dce
Smithy: EC2 transforms fast-fail on Result/Response and SecureBlob co…
sbaluja Aug 24, 2026
4b8e193
Smithy: wire reserved request-member rename with raw-smithy-name skip…
sbaluja Aug 24, 2026
1e0e6da
Smithy: AccessAnalyzerTransforms renames GeneratedPolicyResult(s) wit…
sbaluja Aug 24, 2026
2df9ef7
Carry over serde traits when we rename members
sbaluja Aug 26, 2026
e1a2763
Smithy: add static DynamoDB AttributeValue resource bodies
sbaluja Aug 27, 2026
6222513
Smithy: DynamoDbRenderer emits bespoke AttributeValue; suppress defau…
sbaluja Aug 27, 2026
52d3bff
Smithy: test ModelGenerator suppresses default AttributeValue render …
sbaluja Aug 27, 2026
2c2660d
Smithy: move DynamoDB AttributeValue suppression into a service-level…
sbaluja Aug 27, 2026
911da25
OperationContextParamsTrait handling and JmesPath parsing
sbaluja Aug 27, 2026
665c5b6
Smithy: scaffold S3Transforms and register in ModelCodegenPlugin
sbaluja Aug 28, 2026
54352dc
Smithy: S3Transforms renames CopyObjectResult to CopyObjectResultDetails
sbaluja Aug 28, 2026
46e87f0
Smithy: remove dead ShapeUtil collision-resolution helpers (folded in…
sbaluja Aug 28, 2026
fe84821
Smithy: S3Transforms adds Expires/ExpiresString backward-compat member
sbaluja Aug 28, 2026
56a733b
Smithy: scope S3 ExpiresString to outputs and retype Expires to times…
sbaluja Aug 28, 2026
00b805e
Smithy: S3Transforms injects GetObject Id2/RequestId header members
sbaluja Aug 28, 2026
a835e8e
Smithy: S3Transforms appends missing BucketLocationConstraint regions
sbaluja Aug 28, 2026
d78656f
Smithy: S3Transforms normalizes ReplicationStatus COMPLETE to COMPLETED
sbaluja Aug 28, 2026
6bb76ee
Smithy: record S3 serde-phased customizations as deferred parity deltas
sbaluja Aug 28, 2026
a28c2f3
Smithy: S3Transforms injects customizedAccessLogTag request member
sbaluja Aug 28, 2026
e198be9
Smithy: S3ControlTransforms adds top-level HostId to result classes
sbaluja Aug 28, 2026
b3ddae7
Smithy: fix S3 byte-parity — CopyObjectResult member rename, GetObjec…
sbaluja Aug 28, 2026
673e571
Smithy: S3Transforms invert ExpiresString guard and add Unit-input guard
sbaluja Aug 28, 2026
e8ba45f
Fix event stream dead code generation (unions, empty events)
sbaluja Aug 31, 2026
c4991fa
Smithy: restore S3 request AddQueryStringParameters and HasEmbeddedEr…
sbaluja Aug 31, 2026
1ddfb2d
Smithy: emit real (constant) HasEmbeddedError body instead of stub
sbaluja Aug 31, 2026
d1b2f2e
Smithy: S3Transforms retypes PartNumberMarker/NextPartNumberMarker ba…
sbaluja Aug 31, 2026
47eeef6
Smithy: S3Transforms ports IsStreaming override and checksum-member s…
sbaluja Aug 31, 2026
1affeec
Query string parameters and Request specific headers parity
sbaluja Sep 1, 2026
40ad6dc
glacier customizations and code cleanup
sbaluja Sep 1, 2026
e534839
Smithy: emit request DumpBodyToUrl override protocol-agnostically
sbaluja Sep 1, 2026
7e148a5
Smithy: ignore @deprecated operations so orphaned request/result stru…
sbaluja Sep 1, 2026
5bdb74f
Smithy: injectResponseMetadata skips @deprecated operation outputs
sbaluja Sep 2, 2026
29aa6bf
Smithy: RequestRenderer emits SignBody override for @unsignedPayload …
sbaluja Sep 2, 2026
0710a06
Smithy: emit request IsChunked() override for chunked-encoding operat…
sbaluja Sep 2, 2026
939dcd9
Smithy: emit request IsLongPollingOperation() override for long-polli…
sbaluja Sep 2, 2026
043b7d5
Smithy: stamp SupportsPresigning on operation to keep DumpBodyToUrl d…
sbaluja Sep 2, 2026
b18ffe4
Comment cleanup
sbaluja Sep 2, 2026
d7522b5
Refactor Model transform interface. use streams over loops
sbaluja Sep 2, 2026
379184a
slash some comments out
sbaluja Sep 2, 2026
c7d2f2d
Smithy: invert CloudFrontTransforms idempotency guard to avoid continue
sbaluja Sep 3, 2026
e1d17bf
Smithy: keep GetServiceRequestName unsuffixed for version-renamed ope…
sbaluja Sep 3, 2026
125857f
Smithy: retype route-53/cloudfront MaxItems/MaxResults pagination mem…
sbaluja Sep 3, 2026
41bbb2f
Smithy: delegate event-stream InitialResponse wiring to ProtocolTrait…
sbaluja Sep 3, 2026
0aa5721
Smithy: rest-xml event-stream initial-response emits full xmlDoc pars…
sbaluja Sep 3, 2026
719cb25
S3 Diffs
sbaluja Sep 3, 2026
c0ad761
DynamoDB Diffs
sbaluja Sep 3, 2026
74159f4
CloudWatch Diffs
sbaluja Sep 3, 2026
6482d3b
SQS Diffs
sbaluja Sep 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,13 @@ namespace Model {

/**
* <p>For the <code>UpdateItem</code> operation, represents the attributes to be
* modified, the action to perform on each, and the new value for each.</p>
* <p>You cannot use <code>UpdateItem</code> to update any primary key attributes.
* modified, the action to perform on each, and the new value for each.</p> <p>You
* cannot use <code>UpdateItem</code> to update any primary key attributes.
* Instead, you will need to delete the item, and then use <code>PutItem</code> to
* create a new item with new attributes.</p> <p>Attribute values cannot be
* null; string and binary type attributes must have lengths greater than zero; and
* set type attributes must not be empty. Requests with empty values will be
* rejected with a <code>ValidationException</code> exception.</p><p><h3>See
* Also:</h3> <a
* create a new item with new attributes.</p> <p>Attribute values cannot be null;
* string and binary type attributes must have lengths greater than zero; and set
* type attributes must not be empty. Requests with empty values will be rejected
* with a <code>ValidationException</code> exception.</p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/AttributeValueUpdate">AWS
* API Reference</a></p>
*/
Expand Down Expand Up @@ -83,9 +82,9 @@ class AttributeValueUpdate {
* <li> <p>If the existing attribute is a number, and if <code>Value</code> is also
* a number, then the <code>Value</code> is mathematically added to the existing
* attribute. If <code>Value</code> is a negative number, then it is subtracted
* from the existing attribute.</p> <p> If you use <code>ADD</code> to
* increment or decrement a number value for an item that doesn't exist before the
* update, DynamoDB uses 0 as the initial value.</p> <p>In addition, if you use
* from the existing attribute.</p> <p> If you use <code>ADD</code> to increment
* or decrement a number value for an item that doesn't exist before the update,
* DynamoDB uses 0 as the initial value.</p> <p>In addition, if you use
* <code>ADD</code> to update an existing item, and intend to increment or
* decrement an attribute value which does not yet exist, DynamoDB uses
* <code>0</code> as the initial value. For example, suppose that the item you want
Expand All @@ -94,8 +93,8 @@ class AttributeValueUpdate {
* though it currently does not exist. DynamoDB will create the <i>itemcount</i>
* attribute, set its initial value to <code>0</code>, and finally add
* <code>3</code> to it. The result will be a new <i>itemcount</i> attribute in the
* item, with a value of <code>3</code>.</p> </li> <li> <p>If the existing
* data type is a set, and if the <code>Value</code> is also a set, then the
* item, with a value of <code>3</code>.</p> </li> <li> <p>If the existing data
* type is a set, and if the <code>Value</code> is also a set, then the
* <code>Value</code> is added to the existing set. (This is a <i>set</i>
* operation, not mathematical addition.) For example, if the attribute value was
* the set <code>[1,2]</code>, and the <code>ADD</code> action specified
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@ class BatchGetItemRequest : public DynamoDBRequest {
* then use this substitution in an expression, as in this example:</p> <ul> <li>
* <p> <code>#P = :val</code> </p> </li> </ul> <p>Tokens that begin with the
* <b>:</b> character are <i>expression attribute values</i>, which are
* placeholders for the actual value at runtime.</p> <p>For more
* information about expression attribute names, see <a
* placeholders for the actual value at runtime.</p> <p>For more information about
* expression attribute names, see <a
* href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing
* Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> </li>
* <li> <p> <code>Keys</code> - An array of primary key attribute values that
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ namespace Model {
* <code>PROVISIONED</code> and <code>PAY_PER_REQUEST</code> billing modes. For
* more information about these modes, see <a
* href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html">Read/write
* capacity mode</a>.</p> <p>You may need to switch to on-demand mode at
* least once in order to return a <code>BillingModeSummary</code> response.</p>
* capacity mode</a>.</p> <p>You may need to switch to on-demand mode at least
* once in order to return a <code>BillingModeSummary</code> response.</p>
* <p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/BillingModeSummary">AWS
* API Reference</a></p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,84 +89,84 @@ class Condition {
* than the one provided in the request, the value does not match. For example,
* <code>{"S":"6"}</code> does not equal <code>{"N":"6"}</code>. Also,
* <code>{"N":"6"}</code> does not equal <code>{"NS":["6", "2", "1"]}</code>.</p>
* <p/> </li> <li> <p> <code>NE</code> : Not equal. <code>NE</code> is supported
* <p></p> </li> <li> <p> <code>NE</code> : Not equal. <code>NE</code> is supported
* for all data types, including lists and maps.</p> <p>
* <code>AttributeValueList</code> can contain only one <code>AttributeValue</code>
* of type String, Number, Binary, String Set, Number Set, or Binary Set. If an
* item contains an <code>AttributeValue</code> of a different type than the one
* provided in the request, the value does not match. For example,
* <code>{"S":"6"}</code> does not equal <code>{"N":"6"}</code>. Also,
* <code>{"N":"6"}</code> does not equal <code>{"NS":["6", "2", "1"]}</code>.</p>
* <p/> </li> <li> <p> <code>LE</code> : Less than or equal. </p> <p>
* <p></p> </li> <li> <p> <code>LE</code> : Less than or equal. </p> <p>
* <code>AttributeValueList</code> can contain only one <code>AttributeValue</code>
* element of type String, Number, or Binary (not a set type). If an item contains
* an <code>AttributeValue</code> element of a different type than the one provided
* in the request, the value does not match. For example, <code>{"S":"6"}</code>
* does not equal <code>{"N":"6"}</code>. Also, <code>{"N":"6"}</code> does not
* compare to <code>{"NS":["6", "2", "1"]}</code>.</p> <p/> </li> <li> <p>
* compare to <code>{"NS":["6", "2", "1"]}</code>.</p> <p></p> </li> <li> <p>
* <code>LT</code> : Less than. </p> <p> <code>AttributeValueList</code> can
* contain only one <code>AttributeValue</code> of type String, Number, or Binary
* (not a set type). If an item contains an <code>AttributeValue</code> element of
* a different type than the one provided in the request, the value does not match.
* For example, <code>{"S":"6"}</code> does not equal <code>{"N":"6"}</code>. Also,
* <code>{"N":"6"}</code> does not compare to <code>{"NS":["6", "2",
* "1"]}</code>.</p> <p/> </li> <li> <p> <code>GE</code> : Greater than or equal.
* </p> <p> <code>AttributeValueList</code> can contain only one
* "1"]}</code>.</p> <p></p> </li> <li> <p> <code>GE</code> : Greater than or
* equal. </p> <p> <code>AttributeValueList</code> can contain only one
* <code>AttributeValue</code> element of type String, Number, or Binary (not a set
* type). If an item contains an <code>AttributeValue</code> element of a different
* type than the one provided in the request, the value does not match. For
* example, <code>{"S":"6"}</code> does not equal <code>{"N":"6"}</code>. Also,
* <code>{"N":"6"}</code> does not compare to <code>{"NS":["6", "2",
* "1"]}</code>.</p> <p/> </li> <li> <p> <code>GT</code> : Greater than. </p> <p>
* <code>AttributeValueList</code> can contain only one <code>AttributeValue</code>
* element of type String, Number, or Binary (not a set type). If an item contains
* an <code>AttributeValue</code> element of a different type than the one provided
* in the request, the value does not match. For example, <code>{"S":"6"}</code>
* does not equal <code>{"N":"6"}</code>. Also, <code>{"N":"6"}</code> does not
* compare to <code>{"NS":["6", "2", "1"]}</code>.</p> <p/> </li> <li> <p>
* <code>NOT_NULL</code> : The attribute exists. <code>NOT_NULL</code> is supported
* for all data types, including lists and maps.</p> <p>This operator tests
* for the existence of an attribute, not its data type. If the data type of
* attribute "<code>a</code>" is null, and you evaluate it using
* <code>NOT_NULL</code>, the result is a Boolean <code>true</code>. This result is
* "1"]}</code>.</p> <p></p> </li> <li> <p> <code>GT</code> : Greater than. </p>
* <p> <code>AttributeValueList</code> can contain only one
* <code>AttributeValue</code> element of type String, Number, or Binary (not a set
* type). If an item contains an <code>AttributeValue</code> element of a different
* type than the one provided in the request, the value does not match. For
* example, <code>{"S":"6"}</code> does not equal <code>{"N":"6"}</code>. Also,
* <code>{"N":"6"}</code> does not compare to <code>{"NS":["6", "2",
* "1"]}</code>.</p> <p></p> </li> <li> <p> <code>NOT_NULL</code> : The attribute
* exists. <code>NOT_NULL</code> is supported for all data types, including lists
* and maps.</p> <p>This operator tests for the existence of an attribute, not its
* data type. If the data type of attribute "<code>a</code>" is null, and you
* evaluate it using <code>NOT_NULL</code>, the result is a Boolean
* <code>true</code>. This result is because the attribute "<code>a</code>" exists;
* its data type is not relevant to the <code>NOT_NULL</code> comparison
* operator.</p> </li> <li> <p> <code>NULL</code> : The attribute does not exist.
* <code>NULL</code> is supported for all data types, including lists and maps.</p>
* <p>This operator tests for the nonexistence of an attribute, not its data type.
* If the data type of attribute "<code>a</code>" is null, and you evaluate it
* using <code>NULL</code>, the result is a Boolean <code>false</code>. This is
* because the attribute "<code>a</code>" exists; its data type is not relevant to
* the <code>NOT_NULL</code> comparison operator.</p> </li> <li> <p>
* <code>NULL</code> : The attribute does not exist. <code>NULL</code> is supported
* for all data types, including lists and maps.</p> <p>This operator tests
* for the nonexistence of an attribute, not its data type. If the data type of
* attribute "<code>a</code>" is null, and you evaluate it using <code>NULL</code>,
* the result is a Boolean <code>false</code>. This is because the attribute
* "<code>a</code>" exists; its data type is not relevant to the <code>NULL</code>
* comparison operator.</p> </li> <li> <p> <code>CONTAINS</code> : Checks
* for a subsequence, or value in a set.</p> <p> <code>AttributeValueList</code>
* can contain only one <code>AttributeValue</code> element of type String, Number,
* or Binary (not a set type). If the target attribute of the comparison is of type
* String, then the operator checks for a substring match. If the target attribute
* of the comparison is of type Binary, then the operator looks for a subsequence
* of the target that matches the input. If the target attribute of the comparison
* is a set ("<code>SS</code>", "<code>NS</code>", or "<code>BS</code>"), then the
* operator evaluates to true if it finds an exact match with any member of the
* set.</p> <p>CONTAINS is supported for lists: When evaluating "<code>a CONTAINS
* b</code>", "<code>a</code>" can be a list; however, "<code>b</code>" cannot be a
* set, a map, or a list.</p> </li> <li> <p> <code>NOT_CONTAINS</code> : Checks for
* absence of a subsequence, or absence of a value in a set.</p> <p>
* the <code>NULL</code> comparison operator.</p> </li> <li> <p>
* <code>CONTAINS</code> : Checks for a subsequence, or value in a set.</p> <p>
* <code>AttributeValueList</code> can contain only one <code>AttributeValue</code>
* element of type String, Number, or Binary (not a set type). If the target
* attribute of the comparison is a String, then the operator checks for the
* absence of a substring match. If the target attribute of the comparison is
* Binary, then the operator checks for the absence of a subsequence of the target
* that matches the input. If the target attribute of the comparison is a set
* ("<code>SS</code>", "<code>NS</code>", or "<code>BS</code>"), then the operator
* evaluates to true if it <i>does not</i> find an exact match with any member of
* the set.</p> <p>NOT_CONTAINS is supported for lists: When evaluating "<code>a
* NOT CONTAINS b</code>", "<code>a</code>" can be a list; however,
* "<code>b</code>" cannot be a set, a map, or a list.</p> </li> <li> <p>
* <code>BEGINS_WITH</code> : Checks for a prefix. </p> <p>
* attribute of the comparison is of type String, then the operator checks for a
* substring match. If the target attribute of the comparison is of type Binary,
* then the operator looks for a subsequence of the target that matches the input.
* If the target attribute of the comparison is a set ("<code>SS</code>",
* "<code>NS</code>", or "<code>BS</code>"), then the operator evaluates to true if
* it finds an exact match with any member of the set.</p> <p>CONTAINS is supported
* for lists: When evaluating "<code>a CONTAINS b</code>", "<code>a</code>" can be
* a list; however, "<code>b</code>" cannot be a set, a map, or a list.</p> </li>
* <li> <p> <code>NOT_CONTAINS</code> : Checks for absence of a subsequence, or
* absence of a value in a set.</p> <p> <code>AttributeValueList</code> can contain
* only one <code>AttributeValue</code> element of type String, Number, or Binary
* (not a set type). If the target attribute of the comparison is a String, then
* the operator checks for the absence of a substring match. If the target
* attribute of the comparison is Binary, then the operator checks for the absence
* of a subsequence of the target that matches the input. If the target attribute
* of the comparison is a set ("<code>SS</code>", "<code>NS</code>", or
* "<code>BS</code>"), then the operator evaluates to true if it <i>does not</i>
* find an exact match with any member of the set.</p> <p>NOT_CONTAINS is supported
* for lists: When evaluating "<code>a NOT CONTAINS b</code>", "<code>a</code>" can
* be a list; however, "<code>b</code>" cannot be a set, a map, or a list.</p>
* </li> <li> <p> <code>BEGINS_WITH</code> : Checks for a prefix. </p> <p>
* <code>AttributeValueList</code> can contain only one <code>AttributeValue</code>
* of type String or Binary (not a Number or a set type). The target attribute of
* the comparison must be of type String or Binary (not a Number or a set
* type).</p> <p/> </li> <li> <p> <code>IN</code> : Checks for matching elements in
* a list.</p> <p> <code>AttributeValueList</code> can contain one or more
* type).</p> <p></p> </li> <li> <p> <code>IN</code> : Checks for matching elements
* in a list.</p> <p> <code>AttributeValueList</code> can contain one or more
* <code>AttributeValue</code> elements of type String, Number, or Binary. These
* attributes are compared against an existing attribute of an item. If any
* elements of the input are equal to the item attribute, the expression evaluates
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,18 +109,18 @@ class CreateTableRequest : public DynamoDBRequest {
* <code>AttributeName</code> - The name of this key attribute.</p> </li> <li> <p>
* <code>KeyType</code> - The role that the key attribute will assume:</p> <ul>
* <li> <p> <code>HASH</code> - partition key</p> </li> <li> <p> <code>RANGE</code>
* - sort key</p> </li> </ul> </li> </ul> <p>The partition key of an item is
* also known as its <i>hash attribute</i>. The term "hash attribute" derives from
* the DynamoDB usage of an internal hash function to evenly distribute data items
* - sort key</p> </li> </ul> </li> </ul> <p>The partition key of an item is also
* known as its <i>hash attribute</i>. The term "hash attribute" derives from the
* DynamoDB usage of an internal hash function to evenly distribute data items
* across partitions, based on their partition key values.</p> <p>The sort key of
* an item is also known as its <i>range attribute</i>. The term "range attribute"
* derives from the way DynamoDB stores items with the same partition key
* physically close together, in sorted order by the sort key value.</p>
* <p>For a simple primary key (partition key), you must provide exactly one
* element with a <code>KeyType</code> of <code>HASH</code>.</p> <p>For a composite
* primary key (partition key and sort key), you must provide exactly two elements,
* in this order: The first element must have a <code>KeyType</code> of
* <code>HASH</code>, and the second element must have a <code>KeyType</code> of
* physically close together, in sorted order by the sort key value.</p> <p>For a
* simple primary key (partition key), you must provide exactly one element with a
* <code>KeyType</code> of <code>HASH</code>.</p> <p>For a composite primary key
* (partition key and sort key), you must provide exactly two elements, in this
* order: The first element must have a <code>KeyType</code> of <code>HASH</code>,
* and the second element must have a <code>KeyType</code> of
* <code>RANGE</code>.</p> <p>For more information, see <a
* href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key">Working
* with Tables</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p>
Expand Down Expand Up @@ -152,7 +152,7 @@ class CreateTableRequest : public DynamoDBRequest {
* size limit per partition key value; otherwise, the size of a local secondary
* index is unconstrained.</p> <p>Each local secondary index in the array includes
* the following:</p> <ul> <li> <p> <code>IndexName</code> - The name of the local
* secondary index. Must be unique only for this table.</p> <p/> </li> <li> <p>
* secondary index. Must be unique only for this table.</p> <p></p> </li> <li> <p>
* <code>KeySchema</code> - Specifies the key schema for the local secondary index.
* The key schema must begin with the same partition key as the table.</p> </li>
* <li> <p> <code>Projection</code> - Specifies attributes that are copied
Expand Down Expand Up @@ -200,8 +200,8 @@ class CreateTableRequest : public DynamoDBRequest {
* <p>One or more global secondary indexes (the maximum is 20) to be created on the
* table. Each global secondary index in the array includes the following:</p> <ul>
* <li> <p> <code>IndexName</code> - The name of the global secondary index. Must
* be unique only for this table.</p> <p/> </li> <li> <p> <code>KeySchema</code> -
* Specifies the key schema for the global secondary index. Each global secondary
* be unique only for this table.</p> <p></p> </li> <li> <p> <code>KeySchema</code>
* - Specifies the key schema for the global secondary index. Each global secondary
* index supports up to 4 partition keys and up to 4 sort keys.</p> </li> <li> <p>
* <code>Projection</code> - Specifies attributes that are copied (projected) from
* the table into the index. These are in addition to the primary key attributes
Expand Down
Loading
Loading