@@ -2111,46 +2111,50 @@ private com.alipay.oceanbase.rpc.mutation.Mutation buildMutation(Cell kv,
2111
2111
ObTableOperationType operationType ,
2112
2112
boolean isTableGroup ,
2113
2113
byte [] family , Long TTL ) {
2114
- Cell new_cell = kv ;
2114
+ Cell newCell = kv ;
2115
2115
if (isTableGroup && family != null ) {
2116
- new_cell = modifyQualifier (kv , (Bytes .toString (family ) + "." + Bytes .toString (CellUtil
2117
- .cloneQualifier (kv ))).getBytes ());
2116
+ byte [] oldQualifier = CellUtil .cloneQualifier (kv );
2117
+ byte [] newQualifier = new byte [family .length + 1 /* length of "." */ + oldQualifier .length ];
2118
+ System .arraycopy (family , 0 , newQualifier , 0 , family .length );
2119
+ newQualifier [family .length ] = 0x2E ; // 0x2E in utf-8 is "."
2120
+ System .arraycopy (oldQualifier , 0 , newQualifier , family .length + 1 , oldQualifier .length );
2121
+ newCell = modifyQualifier (kv , newQualifier );
2118
2122
}
2119
2123
Cell .Type kvType = kv .getType ();
2120
2124
switch (kvType ) {
2121
2125
case Put :
2122
- String [] property_columns = V_COLUMNS ;
2123
- Object [] property = new Object [] { CellUtil .cloneValue (new_cell ) };
2126
+ String [] propertyColumns = V_COLUMNS ;
2127
+ Object [] property = new Object [] { CellUtil .cloneValue (newCell ) };
2124
2128
if (TTL != Long .MAX_VALUE ) {
2125
- property_columns = PROPERTY_COLUMNS ;
2126
- property = new Object [] { CellUtil .cloneValue (new_cell ), TTL };
2129
+ propertyColumns = PROPERTY_COLUMNS ;
2130
+ property = new Object [] { CellUtil .cloneValue (newCell ), TTL };
2127
2131
}
2128
2132
return com .alipay .oceanbase .rpc .mutation .Mutation .getInstance (operationType ,
2129
2133
ROW_KEY_COLUMNS ,
2130
- new Object [] { CellUtil .cloneRow (new_cell ), CellUtil .cloneQualifier (new_cell ),
2131
- new_cell .getTimestamp () }, property_columns , property );
2134
+ new Object [] { CellUtil .cloneRow (newCell ), CellUtil .cloneQualifier (newCell ),
2135
+ newCell .getTimestamp () }, propertyColumns , property );
2132
2136
case Delete :
2133
2137
return com .alipay .oceanbase .rpc .mutation .Mutation .getInstance (DEL , ROW_KEY_COLUMNS ,
2134
- new Object [] { CellUtil .cloneRow (new_cell ), CellUtil .cloneQualifier (new_cell ),
2135
- new_cell .getTimestamp () }, null , null );
2138
+ new Object [] { CellUtil .cloneRow (newCell ), CellUtil .cloneQualifier (newCell ),
2139
+ newCell .getTimestamp () }, null , null );
2136
2140
case DeleteColumn :
2137
2141
return com .alipay .oceanbase .rpc .mutation .Mutation .getInstance (DEL , ROW_KEY_COLUMNS ,
2138
- new Object [] { CellUtil .cloneRow (new_cell ), CellUtil .cloneQualifier (new_cell ),
2139
- -new_cell .getTimestamp () }, null , null );
2142
+ new Object [] { CellUtil .cloneRow (newCell ), CellUtil .cloneQualifier (newCell ),
2143
+ -newCell .getTimestamp () }, null , null );
2140
2144
case DeleteFamily :
2141
2145
return com .alipay .oceanbase .rpc .mutation .Mutation .getInstance (
2142
2146
DEL ,
2143
2147
ROW_KEY_COLUMNS ,
2144
- new Object [] { CellUtil .cloneRow (new_cell ),
2145
- isTableGroup ? CellUtil .cloneQualifier (new_cell ) : null ,
2146
- -new_cell .getTimestamp () }, null , null );
2148
+ new Object [] { CellUtil .cloneRow (newCell ),
2149
+ isTableGroup ? CellUtil .cloneQualifier (newCell ) : null ,
2150
+ -newCell .getTimestamp () }, null , null );
2147
2151
case DeleteFamilyVersion :
2148
2152
return com .alipay .oceanbase .rpc .mutation .Mutation .getInstance (
2149
2153
DEL ,
2150
2154
ROW_KEY_COLUMNS ,
2151
- new Object [] { CellUtil .cloneRow (new_cell ),
2152
- isTableGroup ? CellUtil .cloneQualifier (new_cell ) : null ,
2153
- new_cell .getTimestamp () }, null , null );
2155
+ new Object [] { CellUtil .cloneRow (newCell ),
2156
+ isTableGroup ? CellUtil .cloneQualifier (newCell ) : null ,
2157
+ newCell .getTimestamp () }, null , null );
2154
2158
default :
2155
2159
throw new IllegalArgumentException ("illegal mutation type " + operationType );
2156
2160
}
@@ -2292,18 +2296,18 @@ public static ObTableOperation buildObTableOperation(Cell kv,
2292
2296
ObTableOperationType operationType ,
2293
2297
Long TTL ) {
2294
2298
Cell .Type kvType = kv .getType ();
2295
- String [] property_columns = V_COLUMNS ;
2299
+ String [] propertyColumns = V_COLUMNS ;
2296
2300
Object [] property = new Object [] { CellUtil .cloneValue (kv ) };
2297
2301
if (TTL != Long .MAX_VALUE ) {
2298
- property_columns = PROPERTY_COLUMNS ;
2302
+ propertyColumns = PROPERTY_COLUMNS ;
2299
2303
property = new Object [] { CellUtil .cloneValue (kv ), TTL };
2300
2304
}
2301
2305
switch (kvType ) {
2302
2306
case Put :
2303
2307
return getInstance (
2304
2308
operationType ,
2305
2309
new Object [] { CellUtil .cloneRow (kv ), CellUtil .cloneQualifier (kv ),
2306
- kv .getTimestamp () }, property_columns , property );
2310
+ kv .getTimestamp () }, propertyColumns , property );
2307
2311
case Delete :
2308
2312
return getInstance (
2309
2313
DEL ,
0 commit comments