57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
# -*- coding:utf-8 -*-
|
|
#############################################################################
|
|
# Copyright (c) 2020 Huawei Technologies Co.,Ltd.
|
|
#
|
|
# openGauss is licensed under Mulan PSL v2.
|
|
# You can use this software according to the terms
|
|
# and conditions of the Mulan PSL v2.
|
|
# You may obtain a copy of Mulan PSL v2 at:
|
|
#
|
|
# http://license.coscl.org.cn/MulanPSL2
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OF ANY KIND,
|
|
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
# See the Mulan PSL v2 for more details.
|
|
#############################################################################
|
|
|
|
import re
|
|
|
|
|
|
class SqlFile(object):
|
|
@staticmethod
|
|
def findErrorInSqlFile(sqlFile, output):
|
|
"""
|
|
function : Find error in the sql file
|
|
input : String,String
|
|
output : String
|
|
"""
|
|
GSQL_BIN_FILE = "gsql"
|
|
# init flag
|
|
ERROR_MSG_FLAG = "(ERROR|FATAL|PANIC)"
|
|
GSQL_ERROR_PATTERN = "^%s:%s:(\d*): %s:.*" % (GSQL_BIN_FILE, sqlFile, ERROR_MSG_FLAG)
|
|
pattern = re.compile(GSQL_ERROR_PATTERN)
|
|
for line in output.split("\n"):
|
|
line = line.strip()
|
|
result = pattern.match(line)
|
|
if result is not None:
|
|
return True
|
|
return False
|
|
|
|
@staticmethod
|
|
def findTupleErrorInSqlFile(output):
|
|
"""
|
|
function : find tuple concurrently updated error in file
|
|
input : sqlFile, output
|
|
output : True, False
|
|
"""
|
|
ERROR_TUPLE_PATTERN = "^gsql:(.*)tuple concurrently updated(.*)"
|
|
pattern = re.compile(ERROR_TUPLE_PATTERN)
|
|
for line in output.split("\n"):
|
|
line = line.strip()
|
|
result = pattern.match(line)
|
|
if result is not None:
|
|
return True
|
|
return False
|