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 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 |
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
- 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
.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 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.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
- 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
.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 new json-avro encoded
objects to insert, one for each update, to be
added to the set if the particular update did
not affect 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 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.insertRecordsRaw(RawInsertRecordsRequest)
or GPUdb.getRecordsFromCollectionRaw(GetRecordsFromCollectionRequest)
).
Map
.public static org.apache.avro.Schema getClassSchema()
public String getTableName()
public RawUpdateRecordsRequest 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 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 new json-avro encoded
objects to insert, one for each update, to be
added to the set if the particular update did
not affect 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 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.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 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.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 © 2020. All rights reserved.