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
.
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
: Can be used to customize
behavior when the updated primary key value already
exists as described in GPUdb.insertRecordsRaw(RawInsertRecordsRequest)
.
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
: Can be used to customize
behavior when the updated primary key value already
exists as described in GPUdb.insertRecordsRaw(RawInsertRecordsRequest)
.
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
: Can be used to customize behavior when
the updated primary key value already exists as described in
GPUdb.insertRecordsRaw(RawInsertRecordsRequest)
.
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
: Can be used to customize
behavior when the updated primary key value already
exists as described in GPUdb.insertRecordsRaw(RawInsertRecordsRequest)
.
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 © 2019. All rights reserved.