# Copyright 2019 3YOURMIND GmbH # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import re import logging logger = logging.getLogger(__name__) def has_default(sql, **kwargs): if re.search("SET DEFAULT", sql) and kwargs["errors"]: err = next((err for err in kwargs["errors"] if err["code"] == "NOT_NULL"), None) if err: logger.info( ( "Found a NOT_NULL error in migration, " "but it has a default value added: {}" ).format(err) ) kwargs["errors"].remove(err) return False # Never fails migration_tests = ( { "code": "NOT_NULL", "fn": lambda sql, **kw: re.search("(?