T
- The type of object being processed.public class UpdateRecordsRequest<T> extends Object
GPUdb.updateRecords(UpdateRecordsRequest)
.
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 collection or 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
.Note that this operation can only be run on an original table and
not on a collection or a result view.
The update_on_existing_pk
option specifies the record collision
policy for tables with a primary key, and is ignored on tables with no primary key.
Modifier and Type | Class and Description |
---|---|
static class |
UpdateRecordsRequest.Options
Optional parameters.
|
Constructor and Description |
---|
UpdateRecordsRequest()
Constructs an UpdateRecordsRequest object with default parameters.
|
UpdateRecordsRequest(String tableName,
List<String> expressions,
List<Map<String,String>> newValuesMaps,
List<T> data,
Map<String,String> options)
Constructs an UpdateRecordsRequest object with the specified parameters.
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object obj) |
List<T> |
getData() |
List<String> |
getExpressions() |
List<Map<String,String>> |
getNewValuesMaps() |
Map<String,String> |
getOptions() |
String |
getTableName() |
int |
hashCode() |
UpdateRecordsRequest<T> |
setData(List<T> data) |
UpdateRecordsRequest<T> |
setExpressions(List<String> expressions) |
UpdateRecordsRequest<T> |
setNewValuesMaps(List<Map<String,String>> newValuesMaps) |
UpdateRecordsRequest<T> |
setOptions(Map<String,String> options) |
UpdateRecordsRequest<T> |
setTableName(String tableName) |
String |
toString() |
public UpdateRecordsRequest()
public UpdateRecordsRequest(String tableName, List<String> expressions, List<Map<String,String>> newValuesMaps, List<T> data, Map<String,String> options)
tableName
- Table to be updated. Must be a currently existing
table and not a collection or 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
.data
- 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 tables with a primary key when updating columns of
the primary key or inserting new records.
If true
, existing records with primary key
values that match those of a record being updated or
inserted will be replaced by the updated and new
records. If false
, existing records with
matching primary key values will remain unchanged, and
the updated or new records with primary key values that
match those of existing records will be discarded. If
the specified table does not have a primary key, then
this option has no effect.
Supported values:
TRUE
: Overwrite existing records when updated and
inserted records have the same primary keys
FALSE
: Discard updated and inserted records when the
same primary keys already exist
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.insertRecords(InsertRecordsRequest)
or
GPUdb.getRecordsFromCollection(Object,
GetRecordsFromCollectionRequest)
).
Map
.public String getTableName()
public UpdateRecordsRequest<T> setTableName(String tableName)
tableName
- Table to be updated. Must be a currently existing
table and not a collection or view.this
to mimic the builder pattern.public List<String> getExpressions()
here
.public UpdateRecordsRequest<T> 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 UpdateRecordsRequest<T> 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<T> getData()
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 UpdateRecordsRequest<T> setData(List<T> data)
data
- 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 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 tables with a primary key when updating columns of the primary key or inserting new records. If
true
, existing records with primary key values that
match those of a record being updated or inserted will be
replaced by the updated and new records. If false
,
existing records with matching primary key values will remain
unchanged, and the updated or new records with primary key
values that match those of existing records will be discarded.
If the specified table does not have a primary key, then this
option has no effect.
Supported values:
TRUE
:
Overwrite existing records when updated and inserted records
have the same primary keys
FALSE
:
Discard updated and inserted records when the same primary keys
already exist
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.insertRecords(InsertRecordsRequest)
or GPUdb.getRecordsFromCollection(Object,
GetRecordsFromCollectionRequest)
).
Map
.public UpdateRecordsRequest<T> 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 tables with a primary key when updating columns of
the primary key or inserting new records.
If true
, existing records with primary key
values that match those of a record being updated or
inserted will be replaced by the updated and new
records. If false
, existing records with
matching primary key values will remain unchanged, and
the updated or new records with primary key values that
match those of existing records will be discarded. If
the specified table does not have a primary key, then
this option has no effect.
Supported values:
TRUE
: Overwrite existing records when updated and
inserted records have the same primary keys
FALSE
: Discard updated and inserted records when the
same primary keys already exist
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.insertRecords(InsertRecordsRequest)
or
GPUdb.getRecordsFromCollection(Object,
GetRecordsFromCollectionRequest)
).
Map
.this
to mimic the builder pattern.Copyright © 2020. All rights reserved.