public class RawUpdateRecordsRequest extends Object implements org.apache.avro.generic.IndexedRecord
GPUdb.updateRecordsRaw
.
Runs multiple predicate-based updates in a single call. With the list of
given expressions, any matching record's column values will be updated as
provided in newValuesMaps
. There is also an
optional 'upsert' capability where if a particular predicate doesn't match
any existing record, then a new record can be inserted.
Note that this operation can only be run on an original table and not on a result view.
This operation can update primary key values. By default only 'pure primary
key' predicates are allowed when updating primary key values. If the primary
key for a table is the column 'attr1', then the operation will only accept
predicates of the form: "attr1 == 'foo'" if the attr1 column is being
updated. For a composite primary key (e.g. columns 'attr1' and 'attr2')
then this operation will only accept predicates of the form: "(attr1 ==
'foo') and (attr2 == 'bar')". Meaning, all primary key columns must appear
in an equality predicate in the expressions. Furthermore each 'pure primary
key' predicate must be unique within a given request. These restrictions
can be removed by utilizing some available options through options
.
The UPDATE_ON_EXISTING_PK
option
specifies the record primary key collision policy for tables with a primary
key, while IGNORE_EXISTING_PK
specifies the record primary key collision error-suppression policy when
those collisions result in the update being rejected. Both are ignored on
tables with no primary key.
Modifier and Type | Class and Description |
---|---|
static class |
RawUpdateRecordsRequest.Options
A set of string constants for the
RawUpdateRecordsRequest
parameter options . |
static class |
RawUpdateRecordsRequest.RecordEncoding
A set of string constants for the
RawUpdateRecordsRequest
parameter recordEncoding . |
Constructor and Description |
---|
RawUpdateRecordsRequest()
Constructs a RawUpdateRecordsRequest object with default parameters.
|
RawUpdateRecordsRequest(String tableName,
List<String> expressions,
List<Map<String,String>> newValuesMaps,
List<ByteBuffer> recordsToInsert,
List<String> recordsToInsertStr,
String recordEncoding,
Map<String,String> options)
Constructs a RawUpdateRecordsRequest object with the specified
parameters.
|
RawUpdateRecordsRequest(String tableName,
List<String> expressions,
List<Map<String,String>> newValuesMaps,
List<ByteBuffer> recordsToInsert,
Map<String,String> options)
Constructs a RawUpdateRecordsRequest object with the specified
parameters.
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object obj) |
Object |
get(int index)
This method supports the Avro framework and is not intended to be called
directly by the user.
|
static org.apache.avro.Schema |
getClassSchema()
This method supports the Avro framework and is not intended to be called
directly by the user.
|
List<String> |
getExpressions()
A list of the actual predicates, one for each update; format should
follow the guidelines
here . |
List<Map<String,String>> |
getNewValuesMaps()
List of new values for the matching records.
|
Map<String,String> |
getOptions()
Optional parameters.
|
String |
getRecordEncoding()
Identifies which of
recordsToInsert and
recordsToInsertStr should be used. |
List<ByteBuffer> |
getRecordsToInsert()
An *optional* list of new binary-avro encoded records to insert, one for
each update.
|
List<String> |
getRecordsToInsertStr()
An optional list of JSON encoded objects to insert, one for each update,
to be added if the particular update did not match any objects.
|
org.apache.avro.Schema |
getSchema()
This method supports the Avro framework and is not intended to be called
directly by the user.
|
String |
getTableName()
|
void |
put(int index,
Object value)
This method supports the Avro framework and is not intended to be called
directly by the user.
|
RawUpdateRecordsRequest |
setExpressions(List<String> expressions)
A list of the actual predicates, one for each update; format should
follow the guidelines
here . |
RawUpdateRecordsRequest |
setNewValuesMaps(List<Map<String,String>> newValuesMaps)
List of new values for the matching records.
|
RawUpdateRecordsRequest |
setOptions(Map<String,String> options)
Optional parameters.
|
RawUpdateRecordsRequest |
setRecordEncoding(String recordEncoding)
Identifies which of
recordsToInsert and
recordsToInsertStr should be used. |
RawUpdateRecordsRequest |
setRecordsToInsert(List<ByteBuffer> recordsToInsert)
An *optional* list of new binary-avro encoded records to insert, one for
each update.
|
RawUpdateRecordsRequest |
setRecordsToInsertStr(List<String> recordsToInsertStr)
An optional list of JSON encoded objects to insert, one for each update,
to be added if the particular update did not match any objects.
|
RawUpdateRecordsRequest |
setTableName(String tableName)
|
public RawUpdateRecordsRequest()
public RawUpdateRecordsRequest(String tableName, List<String> expressions, List<Map<String,String>> newValuesMaps, List<ByteBuffer> recordsToInsert, Map<String,String> options)
tableName
- Name of table to be updated, in
[schema_name.]table_name format, using standard name resolution rules. Must be a
currently existing table and not a view.expressions
- A list of the actual predicates, one for each
update; format should follow the guidelines here
.newValuesMaps
- List of new values for the matching records. Each
element is a map with (key, value) pairs where the
keys are the names of the columns whose values are
to be updated; the values are the new values. The
number of elements in the list should match the
length of expressions
.recordsToInsert
- An *optional* list of new binary-avro encoded
records to insert, one for each update. If one
of expressions
does not yield a matching
record to be updated, then the corresponding
element from this list will be added to the
table. The default value is an empty List
.options
- Optional parameters.
GLOBAL_EXPRESSION
: An optional global
expression to reduce the search space of the
predicates listed in expressions
. The
default value is ''.
BYPASS_SAFETY_CHECKS
: When set to TRUE
, all predicates are available
for primary key updates. Keep in mind that it
is possible to destroy data in this case, since
a single predicate may match multiple objects
(potentially all of records of a table), and
then updating all of those records to have the
same primary key will, due to the primary key
uniqueness constraints, effectively delete all
but one of those updated records.
Supported values:
The default value is FALSE
.
UPDATE_ON_EXISTING_PK
: Specifies the record
collision policy for updating a table with a primary key. There are two
ways that a record collision can occur. The
first is an "update collision", which happens
when the update changes the value of the updated
record's primary key, and that new primary key
already exists as the primary key of another
record in the table. The second is an "insert
collision", which occurs when a given filter in
expressions
finds no records to update,
and the alternate insert record given in recordsToInsert
(or recordsToInsertStr
)
contains a primary key matching that of an
existing record in the table. If UPDATE_ON_EXISTING_PK
is set to TRUE
, "update collisions" will
result in the existing record collided into
being removed and the record updated with values
specified in newValuesMaps
taking its
place; "insert collisions" will result in the
collided-into record being updated with the
values in recordsToInsert
/recordsToInsertStr
(if given). If set to
FALSE
, the existing
collided-into record will remain unchanged,
while the update will be rejected and the error
handled as determined by IGNORE_EXISTING_PK
.
If the specified table does not have a primary
key, then this option has no effect.
Supported values:
TRUE
: Overwrite the
collided-into record when updating a
record's primary key or inserting an
alternate record causes a primary key
collision between the record being
updated/inserted and another existing
record in the table
FALSE
: Reject
updates which cause primary key
collisions between the record being
updated/inserted and an existing record
in the table
FALSE
.
IGNORE_EXISTING_PK
: Specifies the record
collision error-suppression policy for updating
a table with a primary key, only used when
primary key record collisions are rejected
(UPDATE_ON_EXISTING_PK
is FALSE
). If set to TRUE
,
any record update that is rejected for resulting
in a primary key collision with an existing
table record will be ignored with no error
generated. If FALSE
, the
rejection of any update for resulting in a
primary key collision will cause an error to be
reported. If the specified table does not have
a primary key or if UPDATE_ON_EXISTING_PK
is TRUE
, then this option has no effect.
Supported values:
TRUE
: Ignore
updates that result in primary key
collisions with existing records
FALSE
: Treat as
errors any updates that result in
primary key collisions with existing
records
FALSE
.
UPDATE_PARTITION
: Force qualifying records to
be deleted and reinserted so their partition
membership will be reevaluated.
Supported values:
The default value is FALSE
.
TRUNCATE_STRINGS
: If set to TRUE
, any strings which are too long for their
charN string fields will be truncated to fit.
Supported values:
The default value is FALSE
.
USE_EXPRESSIONS_IN_NEW_VALUES_MAPS
: When set to
TRUE
, all new values in
newValuesMaps
are considered as
expression values. When set to FALSE
, all new values in newValuesMaps
are considered as constants.
NOTE: When TRUE
, string
constants will need to be quoted to avoid being
evaluated as expressions.
Supported values:
The default value is FALSE
.
RECORD_ID
: ID of a
single record to be updated (returned in the
call to GPUdb.insertRecordsRaw
or GPUdb.getRecordsFromCollectionRaw
).
Map
.public RawUpdateRecordsRequest(String tableName, List<String> expressions, List<Map<String,String>> newValuesMaps, List<ByteBuffer> recordsToInsert, List<String> recordsToInsertStr, String recordEncoding, Map<String,String> options)
tableName
- Name of table to be updated, in
[schema_name.]table_name format, using standard name resolution rules. Must be a
currently existing table and not a view.expressions
- A list of the actual predicates, one for each
update; format should follow the guidelines here
.newValuesMaps
- List of new values for the matching records. Each
element is a map with (key, value) pairs where the
keys are the names of the columns whose values are
to be updated; the values are the new values. The
number of elements in the list should match the
length of expressions
.recordsToInsert
- An *optional* list of new binary-avro encoded
records to insert, one for each update. If one
of expressions
does not yield a matching
record to be updated, then the corresponding
element from this list will be added to the
table. The default value is an empty List
.recordsToInsertStr
- An optional list of JSON encoded objects to
insert, one for each update, to be added if
the particular update did not match any
objects. The default value is an empty List
.recordEncoding
- Identifies which of recordsToInsert
and
recordsToInsertStr
should be used.
Supported values:
The default value is BINARY
.options
- Optional parameters.
GLOBAL_EXPRESSION
: An optional global
expression to reduce the search space of the
predicates listed in expressions
. The
default value is ''.
BYPASS_SAFETY_CHECKS
: When set to TRUE
, all predicates are available
for primary key updates. Keep in mind that it
is possible to destroy data in this case, since
a single predicate may match multiple objects
(potentially all of records of a table), and
then updating all of those records to have the
same primary key will, due to the primary key
uniqueness constraints, effectively delete all
but one of those updated records.
Supported values:
The default value is FALSE
.
UPDATE_ON_EXISTING_PK
: Specifies the record
collision policy for updating a table with a primary key. There are two
ways that a record collision can occur. The
first is an "update collision", which happens
when the update changes the value of the updated
record's primary key, and that new primary key
already exists as the primary key of another
record in the table. The second is an "insert
collision", which occurs when a given filter in
expressions
finds no records to update,
and the alternate insert record given in recordsToInsert
(or recordsToInsertStr
)
contains a primary key matching that of an
existing record in the table. If UPDATE_ON_EXISTING_PK
is set to TRUE
, "update collisions" will
result in the existing record collided into
being removed and the record updated with values
specified in newValuesMaps
taking its
place; "insert collisions" will result in the
collided-into record being updated with the
values in recordsToInsert
/recordsToInsertStr
(if given). If set to
FALSE
, the existing
collided-into record will remain unchanged,
while the update will be rejected and the error
handled as determined by IGNORE_EXISTING_PK
.
If the specified table does not have a primary
key, then this option has no effect.
Supported values:
TRUE
: Overwrite the
collided-into record when updating a
record's primary key or inserting an
alternate record causes a primary key
collision between the record being
updated/inserted and another existing
record in the table
FALSE
: Reject
updates which cause primary key
collisions between the record being
updated/inserted and an existing record
in the table
FALSE
.
IGNORE_EXISTING_PK
: Specifies the record
collision error-suppression policy for updating
a table with a primary key, only used when
primary key record collisions are rejected
(UPDATE_ON_EXISTING_PK
is FALSE
). If set to TRUE
,
any record update that is rejected for resulting
in a primary key collision with an existing
table record will be ignored with no error
generated. If FALSE
, the
rejection of any update for resulting in a
primary key collision will cause an error to be
reported. If the specified table does not have
a primary key or if UPDATE_ON_EXISTING_PK
is TRUE
, then this option has no effect.
Supported values:
TRUE
: Ignore
updates that result in primary key
collisions with existing records
FALSE
: Treat as
errors any updates that result in
primary key collisions with existing
records
FALSE
.
UPDATE_PARTITION
: Force qualifying records to
be deleted and reinserted so their partition
membership will be reevaluated.
Supported values:
The default value is FALSE
.
TRUNCATE_STRINGS
: If set to TRUE
, any strings which are too long for their
charN string fields will be truncated to fit.
Supported values:
The default value is FALSE
.
USE_EXPRESSIONS_IN_NEW_VALUES_MAPS
: When set to
TRUE
, all new values in
newValuesMaps
are considered as
expression values. When set to FALSE
, all new values in newValuesMaps
are considered as constants.
NOTE: When TRUE
, string
constants will need to be quoted to avoid being
evaluated as expressions.
Supported values:
The default value is FALSE
.
RECORD_ID
: ID of a
single record to be updated (returned in the
call to GPUdb.insertRecordsRaw
or GPUdb.getRecordsFromCollectionRaw
).
Map
.public static org.apache.avro.Schema getClassSchema()
public String getTableName()
tableName
.public RawUpdateRecordsRequest setTableName(String tableName)
tableName
- The new value for tableName
.this
to mimic the builder pattern.public List<String> getExpressions()
here
.expressions
.public RawUpdateRecordsRequest setExpressions(List<String> expressions)
here
.expressions
- The new value for expressions
.this
to mimic the builder pattern.public List<Map<String,String>> getNewValuesMaps()
expressions
.newValuesMaps
.public RawUpdateRecordsRequest setNewValuesMaps(List<Map<String,String>> newValuesMaps)
expressions
.newValuesMaps
- The new value for newValuesMaps
.this
to mimic the builder pattern.public List<ByteBuffer> getRecordsToInsert()
expressions
does not
yield a matching record to be updated, then the corresponding element
from this list will be added to the table. The default value is an empty
List
.recordsToInsert
.public RawUpdateRecordsRequest setRecordsToInsert(List<ByteBuffer> recordsToInsert)
expressions
does not
yield a matching record to be updated, then the corresponding element
from this list will be added to the table. The default value is an empty
List
.recordsToInsert
- The new value for recordsToInsert
.this
to mimic the builder pattern.public List<String> getRecordsToInsertStr()
List
.recordsToInsertStr
.public RawUpdateRecordsRequest setRecordsToInsertStr(List<String> recordsToInsertStr)
List
.recordsToInsertStr
- The new value for recordsToInsertStr
.this
to mimic the builder pattern.public String getRecordEncoding()
recordsToInsert
and
recordsToInsertStr
should be used.
Supported values:
The default value is BINARY
.recordEncoding
.public RawUpdateRecordsRequest setRecordEncoding(String recordEncoding)
recordsToInsert
and
recordsToInsertStr
should be used.
Supported values:
The default value is BINARY
.recordEncoding
- The new value for recordEncoding
.this
to mimic the builder pattern.public Map<String,String> getOptions()
GLOBAL_EXPRESSION
: An optional
global expression to reduce the search space of the predicates
listed in expressions
. The default
value is ''.
BYPASS_SAFETY_CHECKS
: When
set to TRUE
, all predicates are available
for primary key updates. Keep in mind that it is possible to
destroy data in this case, since a single predicate may match
multiple objects (potentially all of records of a table), and
then updating all of those records to have the same primary key
will, due to the primary key uniqueness constraints, effectively
delete all but one of those updated records.
Supported values:
The default value is FALSE
.
UPDATE_ON_EXISTING_PK
:
Specifies the record collision policy for updating a table with
a primary key. There are two ways that a record
collision can occur. The first is an "update collision", which
happens when the update changes the value of the updated
record's primary key, and that new primary key already exists as
the primary key of another record in the table. The second is
an "insert collision", which occurs when a given filter in
expressions
finds no records to
update, and the alternate insert record given in recordsToInsert
(or recordsToInsertStr
) contains a primary
key matching that of an existing record in the table. If UPDATE_ON_EXISTING_PK
is set to
TRUE
, "update collisions" will result in
the existing record collided into being removed and the record
updated with values specified in newValuesMaps
taking its place; "insert collisions" will result
in the collided-into record being updated with the values in
recordsToInsert
/recordsToInsertStr
(if given). If set
to FALSE
, the existing collided-into
record will remain unchanged, while the update will be rejected
and the error handled as determined by IGNORE_EXISTING_PK
. If the
specified table does not have a primary key, then this option
has no effect.
Supported values:
TRUE
: Overwrite the collided-into
record when updating a record's primary key or inserting
an alternate record causes a primary key collision
between the record being updated/inserted and another
existing record in the table
FALSE
: Reject updates which cause
primary key collisions between the record being
updated/inserted and an existing record in the table
FALSE
.
IGNORE_EXISTING_PK
: Specifies
the record collision error-suppression policy for updating a
table with a primary key, only used when primary key record
collisions are rejected (UPDATE_ON_EXISTING_PK
is FALSE
). If set
to TRUE
, any record update that is rejected
for resulting in a primary key collision with an existing table
record will be ignored with no error generated. If FALSE
, the rejection of any update for resulting
in a primary key collision will cause an error to be reported.
If the specified table does not have a primary key or if UPDATE_ON_EXISTING_PK
is TRUE
, then this option has no effect.
Supported values:
TRUE
: Ignore updates that result in
primary key collisions with existing records
FALSE
: Treat as errors any updates
that result in primary key collisions with existing
records
FALSE
.
UPDATE_PARTITION
: Force
qualifying records to be deleted and reinserted so their
partition membership will be reevaluated.
Supported values:
The default value is FALSE
.
TRUNCATE_STRINGS
: If set to
TRUE
, any strings which are too long for
their charN string fields will be truncated to fit.
Supported values:
The default value is FALSE
.
USE_EXPRESSIONS_IN_NEW_VALUES_MAPS
: When set to TRUE
, all new values in newValuesMaps
are considered as expression values. When set to
FALSE
, all new values in newValuesMaps
are considered as constants.
NOTE: When TRUE
, string constants will
need to be quoted to avoid being evaluated as expressions.
Supported values:
The default value is FALSE
.
RECORD_ID
: ID of a single record to be
updated (returned in the call to GPUdb.insertRecordsRaw
or GPUdb.getRecordsFromCollectionRaw
).
Map
.options
.public RawUpdateRecordsRequest setOptions(Map<String,String> options)
GLOBAL_EXPRESSION
: An optional
global expression to reduce the search space of the predicates
listed in expressions
. The default
value is ''.
BYPASS_SAFETY_CHECKS
: When
set to TRUE
, all predicates are available
for primary key updates. Keep in mind that it is possible to
destroy data in this case, since a single predicate may match
multiple objects (potentially all of records of a table), and
then updating all of those records to have the same primary key
will, due to the primary key uniqueness constraints, effectively
delete all but one of those updated records.
Supported values:
The default value is FALSE
.
UPDATE_ON_EXISTING_PK
:
Specifies the record collision policy for updating a table with
a primary key. There are two ways that a record
collision can occur. The first is an "update collision", which
happens when the update changes the value of the updated
record's primary key, and that new primary key already exists as
the primary key of another record in the table. The second is
an "insert collision", which occurs when a given filter in
expressions
finds no records to
update, and the alternate insert record given in recordsToInsert
(or recordsToInsertStr
) contains a primary
key matching that of an existing record in the table. If UPDATE_ON_EXISTING_PK
is set to
TRUE
, "update collisions" will result in
the existing record collided into being removed and the record
updated with values specified in newValuesMaps
taking its place; "insert collisions" will result
in the collided-into record being updated with the values in
recordsToInsert
/recordsToInsertStr
(if given). If set
to FALSE
, the existing collided-into
record will remain unchanged, while the update will be rejected
and the error handled as determined by IGNORE_EXISTING_PK
. If the
specified table does not have a primary key, then this option
has no effect.
Supported values:
TRUE
: Overwrite the collided-into
record when updating a record's primary key or inserting
an alternate record causes a primary key collision
between the record being updated/inserted and another
existing record in the table
FALSE
: Reject updates which cause
primary key collisions between the record being
updated/inserted and an existing record in the table
FALSE
.
IGNORE_EXISTING_PK
: Specifies
the record collision error-suppression policy for updating a
table with a primary key, only used when primary key record
collisions are rejected (UPDATE_ON_EXISTING_PK
is FALSE
). If set
to TRUE
, any record update that is rejected
for resulting in a primary key collision with an existing table
record will be ignored with no error generated. If FALSE
, the rejection of any update for resulting
in a primary key collision will cause an error to be reported.
If the specified table does not have a primary key or if UPDATE_ON_EXISTING_PK
is TRUE
, then this option has no effect.
Supported values:
TRUE
: Ignore updates that result in
primary key collisions with existing records
FALSE
: Treat as errors any updates
that result in primary key collisions with existing
records
FALSE
.
UPDATE_PARTITION
: Force
qualifying records to be deleted and reinserted so their
partition membership will be reevaluated.
Supported values:
The default value is FALSE
.
TRUNCATE_STRINGS
: If set to
TRUE
, any strings which are too long for
their charN string fields will be truncated to fit.
Supported values:
The default value is FALSE
.
USE_EXPRESSIONS_IN_NEW_VALUES_MAPS
: When set to TRUE
, all new values in newValuesMaps
are considered as expression values. When set to
FALSE
, all new values in newValuesMaps
are considered as constants.
NOTE: When TRUE
, string constants will
need to be quoted to avoid being evaluated as expressions.
Supported values:
The default value is FALSE
.
RECORD_ID
: ID of a single record to be
updated (returned in the call to GPUdb.insertRecordsRaw
or GPUdb.getRecordsFromCollectionRaw
).
Map
.options
- The new value for options
.this
to mimic the builder pattern.public org.apache.avro.Schema getSchema()
getSchema
in interface org.apache.avro.generic.GenericContainer
public Object get(int index)
get
in interface org.apache.avro.generic.IndexedRecord
index
- the position of the field to getIndexOutOfBoundsException
public void put(int index, Object value)
put
in interface org.apache.avro.generic.IndexedRecord
index
- the position of the field to setvalue
- the value to setIndexOutOfBoundsException
Copyright © 2025. All rights reserved.