in core/lib/payload/copy.py [0:0]
def change_rocksdb_bulk_load(self, enable=True):
# rocksdb_bulk_load relies on data being dumping in the same sequence
# as new pk. If we are changing pk, then we cannot ensure that
if self._old_table.primary_key != self._new_table.primary_key:
log.warning("Skip rocksdb_bulk_load, because we are changing PK")
return
v = 1 if enable else 0
# rocksdb_bulk_load and rocksdb_bulk_load_allow_sk have the
# following sequence requirement so setting values accordingly.
# SET SESSION rocksdb_bulk_load_allow_sk=1;
# SET SESSION rocksdb_bulk_load=1;
# ... (bulk loading)
# SET SESSION rocksdb_bulk_load=0;
# SET SESSION rocksdb_bulk_load_allow_sk=0;
try:
if self.rocksdb_bulk_load_allow_sk and enable:
self.execute_sql(
sql.set_session_variable("rocksdb_bulk_load_allow_sk"), (v,)
)
self.execute_sql(sql.set_session_variable("rocksdb_bulk_load"), (v,))
if self.rocksdb_bulk_load_allow_sk and not enable:
self.execute_sql(
sql.set_session_variable("rocksdb_bulk_load_allow_sk"), (v,)
)
except MySQLdb.OperationalError as e:
errnum, errmsg = e.args
# 1193: unknown variable
if errnum == 1193:
log.warning("Failed to set rocksdb_bulk_load: {}".format(errmsg))
else:
raise