blob: 8b06c34bbd658a176d8d52f528e062c44312d1dd [file] [log] [blame]
#!/bin/ksh
##################################################################
# @@@ START COPYRIGHT @@@
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
#
# @@@ END COPYRIGHT @@@
##################################################################
# InstallMaintain.sh - Maintain Initialization Script.
#
# This script will generate Maintain initialization commands, redirect
# them to an OSS .txt obey file, and execute them via mxci.
#
# Maintain initialization only needs to be performed on the Neotable
# master segment.
#
#
##################################################################
#
# This section initializes constants and globals for the script
# It should not contain any script code
#
##################################################################
export scriptName=`/bin/basename $0`
export scriptParams=$1
# Update these variables for each release
export scriptRevDate='11/18/2009'
# Must be in current directory tree in case PATH not set
. ./install/build_globals # variables used in all scripts
. ./install/build_printGlobals
#=================================================================
# FUNCTION: initializeMaintain
# Initialize Maintain
#=================================================================
function initializeMaintain
{
echo "" > ${obeyFileI1}
case ${MSUT} in
(N02.04)
print "\nExecuting function initializeMaintain" | tee -a ${logFile}
print "\nINITIALIZE MAINTAIN;" | tee -a ${logFile}
print -r "INITIALIZE MAINTAIN;" >> ${obeyFileI1}
;;
(N02.93)
print "\nExecuting function initializeMaintain" | tee -a ${logFile}
print "\nINITIALIZE MAINTAIN;" | tee -a ${logFile}
print -r "INITIALIZE MAINTAIN;" >> ${obeyFileI1}
;;
(N02.05)
print "\nExecuting function initializeMaintain" | tee -a ${logFile}
print "\nINITIALIZE MAINTAIN;" | tee -a ${logFile}
print -r "INITIALIZE MAINTAIN;" >> ${obeyFileI1}
;;
esac
executeInMxci
ret=$?
if [[ ${ret} = 0 ]] ; then
print "\nMaintain objects were successfully initialized." | tee -a ${logFile}
print "\n---- END OF INITIALIZE MAINTAIN -----" | tee -a ${logFile}
result=0
else
print -r "\nERROR(s) were encountered while initializing Maintain objects." | tee -a ${logFile}
print -r " Please check the log file ${logFile} and resolve the errors " | tee -a ${logFile}
print " before initializing Maintain.\n" | tee -a ${logFile}
exit 1
fi
print "\nMaintain Initialization completed" | tee -a ${logFile}
}
#=================================================================
# FUNCTION: executeInMxci
# Execute the DDL/DML obey file in SQL/MX mxci
#
#=================================================================
function executeInMxci
{
### Execute DDL/DML obey file in SQL/MX mxci
print "\nExecuting Maintain Obey File in MXCI..." | tee -a ${logFile}
print "obey ${obeyFileI1}; exit;" | ${SQLMXBINPATH}/${MXCI} | tee -a ${logFile}
### If an ERROR occurs from Maintain initialization.
#
# ERROR[1002] Catalog does not exist
#
# Only Warn for the following errors:
#
# ERROR[1003] Schema does not exist
# ERROR[1004] Table does not exist
# ERROR[1008] User name does not exist
# ERROR[1035] Catalog already exists and
# ERROR[1022] Schema already exists and
# ERROR[1030] and [1071] Object could not be accessed
# ERROR[1031] Object could not be dropped.
# ERROR[1075] The catalog must be empty. It contains at least one schema <schema-name>
# ERROR[1134] A concurrent utility or DDL operation is being performed on object,
# its parent, or one of its dependencies. That operation must complete
# before the requested operation can run.
# ERROR[25401] Catalog <catalog name> has not been registered on node <node name>
catschErr=$(${EGREP} -e "1002" ${logFile})
if [[ ${catschErr} != "" ]]; then
print -r "Catalog ${MCAT} does not exist." | tee -a ${logFile}
warnFlag=2
fi
catschErr=$(${EGREP} -e "1035" ${logFile})
if [[ ${catschErr} != "" ]]; then
print -r "NOTE: Catalog ${MCAT} already exist(s). Not an error." | tee -a ${logFile}
warnFlag=1
fi
catschErr=$(${EGREP} -e "1022" ${logFile})
if [[ ${catschErr} != "" ]]; then
print -r "NOTE: Schema ${MSCH} already exist(s). Not an error." | tee -a ${logFile}
print -r "Please see ${logFile} log file for details." | tee -a ${logFile}
warnFlag=1
fi
tbltableErr=$(${EGREP} -e "1004|1031" ${logFile})
if [[ ${tbltableErr} != "" ]]; then
print -r "NOTE: Some tables and/or tables do not exist and could not be dropped. Not an error." | tee -a ${logFile}
print -r "Please see ${logFile} log file for details." | tee -a ${logFile}
warnFlag=1
fi
tbltableErr=$(${EGREP} -e "1030|1071" ${logFile})
if [[ ${tbltableErr} != "" ]]; then
print -r "NOTE: Some objects could not be accessed during upgrade." | tee -a ${logFile}
print -r "Please see ${logFile} log file for details." | tee -a ${logFile}
warnFlag=1
fi
tbltableErr=$(${EGREP} -e "1003|1069" ${logFile})
if [[ ${tbltableErr} != "" ]]; then
print -r "NOTE: Schema does not exist and could not be dropped. Not an error." | tee -a ${logFile}
warnFlag=1
fi
tbltableErr=$(${EGREP} -e "1075" ${logFile})
if [[ ${tbltableErr} != "" ]]; then
print -r "NOTE: A non-Maintain schema exists in the Maintain catalog. Not an error." | tee -a ${logFile}
print -r " Installation continuing..." | tee -a ${logFile}
warnFlag=1
fi
tableErr=$(${EGREP} -e "4082|8222" ${logFile})
if [[ ${tableErr} != "" ]]; then
print -r "NOTE: Table does not exist. Not an error." | tee -a ${logFile}
print -r "Please see ${logFile} log file for details." | tee -a ${logFile}
warnFlag=1
fi
tableErr=$(${EGREP} -e "1008" ${logFile})
if [[ ${tableErr} != "" ]]; then
print -r "User name does not exist, so could not grant select privilege on the table." | tee -a ${logFile}
print -r "Please see ${logFile} log file for details." | tee -a ${logFile}
warnFlag=1
fi
tableErr=$(${EGREP} -e "1134" ${logFile})
if [[ ${tableErr} != "" ]]; then
print -r | tee -a ${logFile}
print -r "*** A concurrent operation or utility is running on this object." | tee -a ${logFile}
print -r " This operation must complete before the current operation can complete." | tee -a ${logFile}
print -r " Continuing to create other database objects..." | tee -a ${logFile}
print -r | tee -a ${logFile}
warnFlag=1
fi
tableErr=$(${EGREP} -e "25401" ${logFile})
if [[ ${tableErr} != "" ]]; then
print -r | tee -a ${logFile}
print -r "*** Catalog has not been registered on a remote segment" | tee -a ${logFile}
print -r " This catalog must be registered before the current operation can run." | tee -a ${logFile}
print -r " Please make sure this catalog is registered before rerunning this script." | tee -a ${logFile}
print -r | tee -a ${logFile}
warnFlag=1
fi
#Append obeyFileI1 to tempobeyFileI1 to be kept for debugging
cat ${obeyFileI1} >> ${tempobeyFileI1}
echo "" > ${obeyFileI1}
if [[ ${warnFlag} -eq "1" ]]; then
print "\nA WARNING/ERROR occurred during the initialization of maintain" | tee -a ${logFile}
return 1
fi
print "Done Executing Maintain Obey File In MXCI" | tee -a ${logFile}
return 0
}
# execute the initializeMaintain function
initializeMaintain
ret=$?
if [[ ${ret} = 1 ]] ; then
exit 1
else
exit 0
fi
#=================================================================
# Script end
#=================================================================
exit ${exitcode}