public class RawUpdateRecordsRequest extends Object implements org.apache.avro.generic.IndexedRecord
GPUdb.updateRecordsRaw(RawUpdateRecordsRequest)
.
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
Optional parameters.
|
static class |
RawUpdateRecordsRequest.RecordEncoding
Identifies which of
recordsToInsert and recordsToInsertStr should be used. |
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() |
List<Map<String,String>> |
getNewValuesMaps() |
Map<String,String> |
getOptions() |
String |
getRecordEncoding() |
List<ByteBuffer> |
getRecordsToInsert() |
List<String> |
getRecordsToInsertStr() |
org.apache.avro.Schema |
getSchema()
This method supports the Avro framework and is not intended to be called
directly by the user.
|
String |
getTableName() |
int |
hashCode() |
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) |
RawUpdateRecordsRequest |
setNewValuesMaps(List<Map<String,String>> newValuesMaps) |
RawUpdateRecordsRequest |
setOptions(Map<String,String> options) |
RawUpdateRecordsRequest |
setRecordEncoding(String recordEncoding) |
RawUpdateRecordsRequest |
setRecordsToInsert(List<ByteBuffer> recordsToInsert) |
RawUpdateRecordsRequest |
setRecordsToInsertStr(List<String> recordsToInsertStr) |
RawUpdateRecordsRequest |
setTableName(String tableName) |
String |
toString() |
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(RawInsertRecordsRequest)
or GPUdb.getRecordsFromCollectionRaw(GetRecordsFromCollectionRequest)
).
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(RawInsertRecordsRequest)
or GPUdb.getRecordsFromCollectionRaw(GetRecordsFromCollectionRequest)
).
Map
.public static org.apache.avro.Schema getClassSchema()
public String getTableName()
public RawUpdateRecordsRequest setTableName(String tableName)
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.this
to mimic the builder pattern.public List<String> getExpressions()
here
.public RawUpdateRecordsRequest setExpressions(List<String> expressions)
expressions
- A list of the actual predicates, one for each
update; format should follow the guidelines here
.this
to mimic the builder pattern.public List<Map<String,String>> getNewValuesMaps()
expressions
.public RawUpdateRecordsRequest setNewValuesMaps(List<Map<String,String>> newValuesMaps)
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
.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
.public RawUpdateRecordsRequest setRecordsToInsert(List<ByteBuffer> recordsToInsert)
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
.this
to mimic the builder pattern.public List<String> getRecordsToInsertStr()
List
.public RawUpdateRecordsRequest setRecordsToInsertStr(List<String> recordsToInsertStr)
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
.this
to mimic the builder pattern.public String getRecordEncoding()
public RawUpdateRecordsRequest setRecordEncoding(String recordEncoding)
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(RawInsertRecordsRequest)
or
GPUdb.getRecordsFromCollectionRaw(GetRecordsFromCollectionRequest)
).
Map
.public RawUpdateRecordsRequest setOptions(Map<String,String> options)
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(RawInsertRecordsRequest)
or GPUdb.getRecordsFromCollectionRaw(GetRecordsFromCollectionRequest)
).
Map
.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 © 2024. All rights reserved.