Files
oceanbase/tools/upgrade/special_upgrade_action_pre.py
2022-11-09 07:43:02 +00:00

76 lines
2.3 KiB
Python
Executable File

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from my_error import MyError
import time
import mysql.connector
from mysql.connector import errorcode
import logging
import re
import string
from random import Random
from actions import DMLCursor
from actions import QueryCursor
import binascii
import my_utils
import actions
import sys
#def modify_schema_history(conn, cur, tenant_ids):
# try:
# conn.autocommit = True
#
# # disable ddl
# ori_enable_ddl = actions.get_ori_enable_ddl(cur)
# if ori_enable_ddl == 1:
# actions.set_parameter(cur, 'enable_ddl', 'False')
# log('tenant_ids: {0}'.format(tenant_ids))
# for tenant_id in tenant_ids:
# sql = """alter system change tenant tenant_id = {0}""".format(tenant_id)
# log(sql)
# cur.execute(sql)
# #####implement#####
#
# # 还原默认 tenant
# sys_tenant_id = 1
# sql = """alter system change tenant tenant_id = {0}""".format(sys_tenant_id)
# log(sql)
# cur.execute(sql)
#
# # enable ddl
# if ori_enable_ddl == 1:
# actions.set_parameter(cur, 'enable_ddl', 'True')
# except Exception, e:
# logging.warn("exec modify trigger failed")
# raise e
# logging.info('exec modify trigger finish')
# 主库需要执行的升级动作
def do_special_upgrade(conn, cur, tenant_id_list, user, passwd):
# special upgrade action
#升级语句对应的action要写在下面的actions begin和actions end这两行之间,
#因为基准版本更新的时候会调用reset_upgrade_scripts.py来清空actions begin和actions end
#这两行之间的这些代码,如果不写在这两行之间的话会导致清空不掉相应的代码。
# 主库升级流程没加滚动升级步骤,或混部阶段DDL测试有相关case覆盖前,混部开始禁DDL
actions.set_parameter(cur, 'enable_ddl', 'False')
####========******####======== actions begin ========####******========####
return
####========******####========= actions end =========####******========####
def query(cur, sql):
log(sql)
cur.execute(sql)
results = cur.fetchall()
return results
def log(msg):
logging.info(msg)
def get_oracle_tenant_ids(cur):
return [_[0] for _ in query(cur, 'select tenant_id from oceanbase.__all_tenant where compatibility_mode = 1')]
def get_tenant_ids(cur):
return [_[0] for _ in query(cur, 'select tenant_id from oceanbase.__all_tenant')]