diff options
author | David Major <David.Major@Sun.COM> | 2009-01-27 14:57:07 -0600 |
---|---|---|
committer | David Major <David.Major@Sun.COM> | 2009-01-27 14:57:07 -0600 |
commit | 567efe8f470c9c93665b920d7250a7b822bcd542 (patch) | |
tree | 752a9fe591a0ab59e2a27c71f405319a3cdcb434 /usr/src | |
parent | 76a25faf87ed2ec1e6fe59678a2833de727b6759 (diff) | |
download | illumos-gate-567efe8f470c9c93665b920d7250a7b822bcd542.tar.gz |
6791534 MMS move to use Postgres 8.3
6791744 SUNWmmsu package dependency issue with SUNWpostgr-libs due to Postgr 8.1 EOF in snv_107.
6587583 db text variables with check need not null
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/cmd/mms/mm/Makefile.com | 11 | ||||
-rw-r--r-- | usr/src/cmd/mms/mm/common/mms_db | 927 | ||||
-rw-r--r-- | usr/src/cmd/mms/mms.xml | 6 | ||||
-rw-r--r-- | usr/src/cmd/mms/mmsdb | 4 | ||||
-rw-r--r-- | usr/src/cmd/mms/utility/explorer/mmsexplorer | 32 | ||||
-rw-r--r-- | usr/src/lib/mms/mgmt/common/mgmt_mm.c | 17 | ||||
-rw-r--r-- | usr/src/lib/mms/mgmt/common/mgmt_mmsdb.c | 104 | ||||
-rw-r--r-- | usr/src/lib/mms/pg/Makefile.com | 4 | ||||
-rw-r--r-- | usr/src/lib/mms/pg/common/mapfile-vers | 3 | ||||
-rw-r--r-- | usr/src/lib/mms/pg/common/pg_host_ident.c | 37 | ||||
-rw-r--r-- | usr/src/lib/mms/pg/common/pg_uuid.c | 19 | ||||
-rw-r--r-- | usr/src/pkgdefs/SUNWmmsu/depend | 5 | ||||
-rw-r--r-- | usr/src/tools/scripts/check_rtime.pl | 7 |
13 files changed, 388 insertions, 788 deletions
diff --git a/usr/src/cmd/mms/mm/Makefile.com b/usr/src/cmd/mms/mm/Makefile.com index 0738c63770..82170f04cd 100644 --- a/usr/src/cmd/mms/mm/Makefile.com +++ b/usr/src/cmd/mms/mm/Makefile.com @@ -20,7 +20,7 @@ # # -# Copyright 2008 Sun Microsystems, Inc. All rights reserved. +# Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # @@ -42,16 +42,13 @@ ROOTCMDDIR= $(ROOT)/lib/svc/method CPPFLAGS += -DMMS_OPENSSL CPPFLAGS += -I. -I../common -I$(SRC)/common/mms/mms CPPFLAGS += -I$(SRC)/lib/mms/mms/common -I$(SRC)/lib/mms/mms/common -CPPFLAGS += -I/usr/include/libxml2 -I/usr/include/pgsql +CPPFLAGS += -I/usr/include/libxml2 -I/usr/postgres/8.3/include CFLAGS += $(CTF_FLAGS) $(CC_VERBOSE) -LDLIBS += -lc -lsocket -lnsl -luuid $(ZIGNORE) -lpq -LDLIBS += -lxml2 -lscf +LDLIBS += -lc -lsocket -lnsl -luuid $(ZIGNORE) +LDLIBS += -lxml2 -lscf -L/usr/postgres/8.3/lib -lpq -R/usr/postgres/8.3/lib LDLIBS += -L$(SRC)/lib/mms/mms/$(MACH) -lmms -R/usr/lib -LDFLAGS += $(ZIGNORE) -DYNFLAGS += $(ZIGNORE) - C99MODE= $(C99_ENABLE) # The mm database schema with database versions diff --git a/usr/src/cmd/mms/mm/common/mms_db b/usr/src/cmd/mms/mm/common/mms_db index 4bafffd6f3..f705c98a2b 100644 --- a/usr/src/cmd/mms/mm/common/mms_db +++ b/usr/src/cmd/mms/mm/common/mms_db @@ -19,7 +19,7 @@ # CDDL HEADER END # # -# Copyright 2008 Sun Microsystems, Inc. All rights reserved. +# Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # @@ -28,6 +28,7 @@ # MMS Data Model: # IEEE MMS Std. 1244.1-2000 sections 11-19 relational database model. # Each MMS object is a SQL table. +# Each MMS object attribute is a SQL table column. # Each MMS object instance is a SQL table row. # # MMS Data Model Modifications: @@ -60,8 +61,7 @@ # Load PostgreSQL PL/pgSQL Language # 1u CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler - LANGUAGE 'C' AS - '/usr/lib/plpgsql.so'; + LANGUAGE 'C' AS 'plpgsql.so'; 1u CREATE LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler LANCOMPILER 'PL/pgSQL'; @@ -96,40 +96,39 @@ CONSTRAINT "ReadWriteMode_CC" CHECK("ReadWriteMode" = 'fixed' OR "ReadWriteMode" = 'variable') - default 'fixed', + default 'fixed' NOT NULL, "ValidateFileName" text CONSTRAINT "ValidateFileName_CC" CHECK("ValidateFileName" = 'yes' OR "ValidateFileName" = 'no') - default 'no', + default 'no' NOT NULL, "ValidateVolumeID" text CONSTRAINT "ValidateVolumeID_CC" CHECK("ValidateVolumeID" = 'yes' OR "ValidateVolumeID" = 'no') - default 'yes', + default 'yes' NOT NULL, "ValidateExpirationDate" text CONSTRAINT "ValidateExpirationDate_CC" CHECK("ValidateExpirationDate" = 'yes' OR "ValidateExpirationDate" = 'no') - default 'no', + default 'no' NOT NULL, "SwitchLabel" text CONSTRAINT "SwitchLabel_CC" CHECK("SwitchLabel" = 'yes' OR "SwitchLabel" = 'ask' OR "SwitchLabel" = 'no') - default 'yes', + default 'yes' NOT NULL, "WriteOverExistingData" text CONSTRAINT "WriteOverExistingData_CC" CHECK("WriteOverExistingData" = 'yes' OR "WriteOverExistingData" = 'ask' OR "WriteOverExistingData" = 'no') - default 'yes', + default 'yes' NOT NULL, "Retention" integer CONSTRAINT "Retention_CC" CHECK("Retention" >= 0 AND "Retention" <= 99999) default 0, - "Password" text, CONSTRAINT "APPLICATION_PK" PRIMARY KEY("ApplicationName") /* CLIENT-DEFINED */ ); @@ -151,7 +150,7 @@ CONSTRAINT "SessionsAllowed_CC" CHECK("SessionsAllowed" = 'multiple' OR "SessionsAllowed" = 'single') - default 'single', + default 'single' NOT NULL, "MessageLevel" text CONSTRAINT "MessageLevel_CC" CHECK("MessageLevel" = 'emergency' OR @@ -163,7 +162,7 @@ "MessageLevel" = 'information' OR "MessageLevel" = 'debug' OR "MessageLevel" = 'developer') - default 'error', + default 'error' NOT NULL, CONSTRAINT "AI_PK" PRIMARY KEY("ApplicationName", "AIName") /* CLIENT-DEFINED */ ); @@ -370,7 +369,12 @@ 1u CREATE TABLE "EVENTRULES"( "NotifyID" text, - "NotifyObject" text + "NotifyObject" text, + "Data1" text, + "Data2" text, + "Data3" text, + "Data4" text, + "Data5" text ); 1u CREATE TABLE "LIBRARY" ( @@ -380,47 +384,68 @@ CHECK("LibraryDisabled" = 'true' OR "LibraryDisabled" = 'false' OR "LibraryDisabled" = 'temporary') - default 'false', + default 'false' NOT NULL, "LibraryBroken" boolean default 'false' NOT NULL, "LMName" text, "LibraryStateHard" text CONSTRAINT "LibraryStateHard_CC" CHECK("LibraryStateHard" = 'unknown') - default 'unknown', + default 'unknown' NOT NULL, "LibraryStateSoft" text CONSTRAINT "LibraryStateSoft_CC" CHECK("LibraryStateSoft" = 'ready' OR "LibraryStateSoft" = 'in use') - default 'ready', + default 'ready' NOT NULL, "LibraryOnline" text CONSTRAINT "LibraryOnline_CC" CHECK("LibraryOnline" = 'true' OR "LibraryOnline" = 'false') - default 'false', + default 'false' NOT NULL, "LibraryType" text, "LibraryConnection" text CONSTRAINT "LibraryConnection_CC" CHECK("LibraryConnection" = 'network' OR - "LibraryConnection" = 'direct') - default 'network', + "LibraryConnection" = 'direct'), "LibraryIP" text, "LibraryPath" text, "LibraryACS" text, + "LibraryLSM" text, + "LibrarySerialNumber" text, + "LibraryACSLSPort" int, + "DefaultLibraryPath" text, CONSTRAINT "LIBRARY_PK" PRIMARY KEY("LibraryName") /* SYSTEM-DEFINED */ ); +1u CREATE TABLE "LIBRARYACCESS"( + "LibraryName" text + CONSTRAINT "LibraryName_CC" + REFERENCES "LIBRARY", + "HostName" text + CONSTRAINT "HostName_CC" + CHECK("HostName" != 'localhost' AND + "HostName" != '127.0.0.1' AND + "HostName" != '::1') + NOT NULL, + "LibraryPath" text + NOT NULL, + CONSTRAINT "LIBRARYACCESS_PK" + PRIMARY KEY("LibraryName", "HostName") +); + 1u CREATE TABLE "LM" ( "LibraryName" text CONSTRAINT "LibraryName_CC" REFERENCES "LIBRARY", "LMName" text, "LMHost" text, - "LMTargetLibrary" text, "LMTargetPath" text, - "LMTargetHost" text, - "LMPassword" text, + "LMTargetHost" text + CONSTRAINT "LMTargetHost_CC" + CHECK("LMTargetHost" != 'localhost' AND + "LMTargetHost" != '127.0.0.1' AND + "LMTargetHost" != '::1'), "LMMessageLevel" text CONSTRAINT "LMMessageLevel_CC" CHECK("LMMessageLevel" = 'emergency' OR @@ -432,12 +457,12 @@ "LMMessageLevel" = 'information' OR "LMMessageLevel" = 'debug' OR "LMMessageLevel" = 'developer') - default 'error', + default 'error' NOT NULL, "LMStateHard" text CONSTRAINT "LMStateHard_CC" CHECK("LMStateHard" = 'ready' OR "LMStateHard" = 'broken') - default 'ready', + default 'ready' NOT NULL, "LMStateSoft" text CONSTRAINT "LMStateSoft_CC" CHECK("LMStateSoft" = 'absent' OR @@ -445,12 +470,12 @@ "LMStateSoft" = 'not ready' OR "LMStateSoft" = 'disconnected' OR "LMStateSoft" = 'ready') - default 'absent', + default 'absent' NOT NULL, "LMDisabled" text CONSTRAINT "LMDisabled_CC" CHECK("LMDisabled" = 'false' OR "LMDisabled" = 'true') - default 'false', + default 'false' NOT NULL, "TraceLevel" text CONSTRAINT "TraceLevel_CC" CHECK("TraceLevel" = 'emergency' OR @@ -463,9 +488,13 @@ "TraceLevel" = 'information' OR "TraceLevel" = 'debug' OR "TraceLevel" = 'developer') - default 'debug', + default 'debug' NOT NULL, "TraceFileSize" text default '10M', + "LMSSIPort" int + CONSTRAINT "LMSSIPort_CC" + CHECK("LMSSIPort" > 0) + default 50004, CONSTRAINT "LM_PK" PRIMARY KEY("LMName") /* SYSTEM-DEFINED */ ); @@ -522,7 +551,8 @@ "CartridgeTypeMediaType" = 'microcode' OR "CartridgeTypeMediaType" = 'alignment' OR "CartridgeTypeMediaType" = 'worm' OR - "CartridgeTypeMediaType" = 'volsafe'), + "CartridgeTypeMediaType" = 'volsafe') + default 'data' NOT NULL, "MaxUseCount" integer CONSTRAINT "MaxUseCount_CC" CHECK("MaxUseCount" >= 0) @@ -545,13 +575,13 @@ "CartridgeState" = 'error' OR "CartridgeState" = 'deallocated' OR "CartridgeState" = 'recycled') - default 'defined', + default 'defined' NOT NULL, "CartridgeStatus" text CONSTRAINT "CartridgeStatus_CC" CHECK("CartridgeStatus" = 'in use' OR "CartridgeStatus" = 'unavailable' OR "CartridgeStatus" = 'available') - default 'unavailable', + default 'unavailable' NOT NULL, "CartridgeDriveOccupied" boolean default 'false' NOT NULL, "CartridgeTypeName" text @@ -579,14 +609,22 @@ CHECK("CartridgeWriteProtected" = 'yes' OR "CartridgeWriteProtected" = 'no' OR "CartridgeWriteProtected" = 'unknown' ) - default 'unknown', - "CartridgeRecovededReads" text + default 'unknown' NOT NULL, + "CartridgeRecoveredReads" integer + CONSTRAINT "CartridgeRecoveredReads_CC" + CHECK("CartridgeRecoveredReads" >= 0) default '0', - "CartridgeRecovededWrites" text + "CartridgeRecoveredWrites" integer + CONSTRAINT "CartridgeRecoveredWrites_CC" + CHECK("CartridgeRecoveredWrites" >= 0) default '0', - "CartridgeUnrecovededReads" text + "CartridgeUnrecoveredReads" integer + CONSTRAINT "CartridgeUnrecoveredReads_CC" + CHECK("CartridgeUnrecoveredReads" >= 0) default '0', - "CartridgeUnrecovededWrites" text + "CartridgeUnrecoveredWrites" integer + CONSTRAINT "CartridgeUnrecoveredWrites_CC" + CHECK("CartridgeUnrecoveredWrites" >= 0) default '0', "CartridgeBytesRead" text default '0', @@ -596,7 +634,7 @@ CONSTRAINT "CartridgeMediaError_CC" CHECK("CartridgeMediaError" = 'yes' OR "CartridgeMediaError" = 'no' ) - default 'no', + default 'no' NOT NULL, "ApplicationName" text CONSTRAINT "ApplicationName_CC" REFERENCES "APPLICATION", @@ -674,7 +712,7 @@ "PartitionSignature" text CONSTRAINT "PartitionSignature_CC" CHECK("PartitionSignature" = 'undefined') - default 'undefined', + default 'undefined' NOT NULL, "PartitionSignatureState" text CONSTRAINT "PartitionSignatureState_CC" CHECK("PartitionSignatureState" = 'unimplemented' OR @@ -684,7 +722,7 @@ "PartitionSignatureState" = 'application' OR "PartitionSignatureState" = 'sysactive' OR "PartitionSignatureState" = 'appactive') - default 'unimplemented', + default 'unimplemented' NOT NULL, "PartitionSignatureAlgorithm" text default 'undefined', "PartitionSignatureType" text, @@ -696,7 +734,7 @@ "PartitionMediaSerialState" = 'uninitialized' OR "PartitionMediaSerialState" = 'known' OR "PartitionMediaSerialState" = 'unimplemented') - default 'unknown', + default 'unknown' NOT NULL, "PartitionNumberMounts" integer CONSTRAINT "PartitionNumberMounts_CC" CHECK("PartitionNumberMounts" >= 0) @@ -709,14 +747,12 @@ default 0, "PartitionTimeMountedLast" timestamp (3) default '-infinity' NOT NULL, - "PartitionEOFPosType" smallint - default 0, - "PartitionEOFPos" bigint, + "PartitionEOFPos" text, "PartitionRWMode" text CONSTRAINT "PartitionRWMode_CC" CHECK("PartitionRWMode" = 'readonly' OR "PartitionRWMode" = 'readwrite') - default 'readwrite', + default 'readwrite' NOT NULL, CONSTRAINT "PARTITION_FK" FOREIGN KEY ("CartridgeID", "SideName") REFERENCES "SIDE", CONSTRAINT "PARTITION_PK" @@ -739,7 +775,7 @@ "LabelType" = 'ibm' OR "LabelType" = 'nonlabeled' OR "LabelType" = 'unknown') - default 'unknown', + default 'unknown' NOT NULL, "CartridgeID" text CONSTRAINT "CartridgeID_CC" REFERENCES "CARTRIDGE", @@ -814,7 +850,7 @@ CHECK("DriveDisabled" = 'true' OR "DriveDisabled" = 'false' OR "DriveDisabled" = 'temporary') - default 'false', + default 'false' NOT NULL, "DriveBroken" boolean default 'false' NOT NULL, "DriveStateSoft" text @@ -822,14 +858,14 @@ CHECK("DriveStateSoft" = 'in use' OR "DriveStateSoft" = 'ready' OR "DriveStateSoft" = 'unavailable') - default 'unavailable', + default 'unavailable' NOT NULL, "DriveStateHard" text CONSTRAINT "DriveStateHard_CC" CHECK("DriveStateHard" = 'loaded' OR "DriveStateHard" = 'loading' OR "DriveStateHard" = 'unloading' OR "DriveStateHard" = 'unloaded') - default 'unloaded', + default 'unloaded' NOT NULL, "DriveTimeCreated" timestamp (3) default current_timestamp NOT NULL, "DriveTimeMountedLast" timestamp (3) @@ -859,7 +895,7 @@ "DriveNeedsCleaning" = 'false' OR "DriveNeedsCleaning" = 'advisory' OR "DriveNeedsCleaning" = 'mandatory') - default 'false', + default 'false' NOT NULL, "MaxMounts" integer CONSTRAINT "MaxMounts_CC" CHECK("MaxMounts" >= 0) @@ -870,7 +906,7 @@ CONSTRAINT "ReserveDrive_CC" CHECK("ReserveDrive" = 'yes' OR "ReserveDrive" = 'no') - default 'yes', + default 'yes' NOT NULL, "DefaultBlocksize" integer CONSTRAINT "DefaultBlocksize_CC" CHECK("DefaultBlocksize" >= 0) @@ -879,6 +915,9 @@ "DriveSerialNum" text, "DriveOnline" boolean default 'false' NOT NULL, + "DriveVendorID" text, + "DriveProductID" text, + "DriveTypeName" text, CONSTRAINT "DRIVE_PK" PRIMARY KEY("DriveName") /* SYSTEM-DEFINED */ ); @@ -889,10 +928,12 @@ CONSTRAINT "DriveName_CC" REFERENCES "DRIVE", "DMHost" text, - "DMTargetLibrary" text, "DMTargetPath" text, - "DMTargetHost" text, - "DMPassword" text, + "DMTargetHost" text + CONSTRAINT "DMTargetHost_CC" + CHECK("DMTargetHost" != 'localhost' AND + "DMTargetHost" != '127.0.0.1' AND + "DMTargetHost" != '::1'), "DMMessageLevel" text CONSTRAINT "DMMessageLevel_CC" CHECK("DMMessageLevel" = 'emergency' OR @@ -904,12 +945,12 @@ "DMMessageLevel" = 'information' OR "DMMessageLevel" = 'debug' OR "DMMessageLevel" = 'developer') - default 'error', + default 'error' NOT NULL, "DMStateHard" text CONSTRAINT "DMStateHard_CC" CHECK("DMStateHard" = 'ready' OR "DMStateHard" = 'broken') - default 'ready', + default 'ready' NOT NULL, "DMStateSoft" text CONSTRAINT "DMStateSoft_CC" CHECK("DMStateSoft" = 'absent' OR @@ -918,12 +959,12 @@ "DMStateSoft" = 'disconnected' OR "DMStateSoft" = 'ready' OR "DMStateSoft" = 'reserved') - default 'absent', + default 'absent' NOT NULL, "DMDisabled" text CONSTRAINT "DMDisabled_CC" CHECK("DMDisabled" = 'false' OR "DMDisabled" = 'true') - default 'false', + default 'false' NOT NULL, "TraceLevel" text CONSTRAINT "TraceLevel_CC" CHECK("TraceLevel" = 'emergency' OR @@ -936,7 +977,7 @@ "TraceLevel" = 'information' OR "TraceLevel" = 'debug' OR "TraceLevel" = 'developer') - default 'debug', + default 'debug' NOT NULL, "TraceFileSize" text default '10M', CONSTRAINT "DM_PK" PRIMARY KEY("DMName") @@ -1060,7 +1101,7 @@ CHECK("Type" = 'port' OR "Type" = 'magazine' OR "Type" = 'ordinary') - default 'ordinary', + default 'ordinary' NOT NULL, "LibraryName" text CONSTRAINT "LibraryName_CC" REFERENCES "LIBRARY", @@ -1182,31 +1223,21 @@ ); 1u CREATE TABLE "DRIVECARTRIDGEACCESS" ( - "DriveName" text - CONSTRAINT "DriveName_CC" - REFERENCES "DRIVE", - "DMName" text - CONSTRAINT "DMName_CC" - REFERENCES "DM", - "CartridgeID" text - CONSTRAINT "CartridgeID_CC" - REFERENCES "CARTRIDGE", + "DriveName" text, + "DMName" text, + "CartridgeID" text, "SideName" text NOT NULL, "PartitionName" text NOT NULL, - "ApplicationName" text - CONSTRAINT "ApplicationName_CC" - REFERENCES "APPLICATION", + "ApplicationName" text, "DriveCartridgeAccessTimeMount" timestamp (3) default '-infinity' NOT NULL, - "DriveCartridgeAccessTimeUnmm_mount" timestamp (3) - default '-infinity' NOT NULL, - "DriveCartridgeAccessByteReadCount" integer + "DriveCartridgeAccessByteReadCount" bigint CONSTRAINT "DriveCartridgeAccessByteReadCount_CC" CHECK("DriveCartridgeAccessByteReadCount" >= -1) default -1, - "DriveCartridgeAccessByteWriteCount" integer + "DriveCartridgeAccessByteWriteCount" bigint CONSTRAINT "DriveCartridgeAccessByteWriteCount_CC" CHECK("DriveCartridgeAccessByteWriteCount" >= -1) default -1, @@ -1226,10 +1257,49 @@ CONSTRAINT "DriveCartridgeAccessSoftWriteErrorCount_CC" CHECK("DriveCartridgeAccessSoftWriteErrorCount" >= -1) default -1, - CONSTRAINT "DRIVECARTRIDGEACCESS_FK" - FOREIGN KEY ("CartridgeID", "SideName", "PartitionName") - REFERENCES "PARTITION" + "DriveCartridgeAccessTimeUnmount" timestamp (3) + default '-infinity' NOT NULL, + "DriveCartridgeAccessMediumByteReadCount" bigint + CONSTRAINT "DriveCartridgeAccessMediumByteReadCount_CC" + CHECK("DriveCartridgeAccessMediumByteReadCount" >= 0) + default 0, + "DriveCartridgeAccessMediumByteWriteCount" bigint + CONSTRAINT "DriveCartridgeAccessMediumByteWriteCount_CC" + CHECK("DriveCartridgeAccessMediumByteWriteCount" >= 0) + default 0, + "CartridgePCL" text, + "DriveSerialNum" text, + "CartridgeShapeName" text, + "DriveShapeName" text, /* CLIENT-DEFINED */ + CONSTRAINT "DRIVECARTRIDGEACCESS_PK" + PRIMARY KEY("CartridgeID", "DriveName", + "DriveCartridgeAccessTimeUnmount") +); + +1u CREATE table "DRIVECARTRIDGEERROR" ( + "DriveName" text, + "DMName" text, + "CartridgeID" text, + "SideName" text NOT NULL, + "PartitionName" text NOT NULL, + "ApplicationName" text, + "CartridgePCL" text, + "DriveSerialNum" text, + "CartridgeShapeName" text, + "DriveShapeName" text, + "CDB" text, + "SCSICommand" text, + "IOStatus" text, + "SenseKey" text, + "AdditionalSenseCode" text, + "AdditionalSenseCodeQualifier" text, + "SenseBytes" text, + "ErrorText" text, + "TimeStamp" timestamp (3) + default current_timestamp NOT NULL, + CONSTRAINT "DRIVECARTRIDGEERROR_PK" + PRIMARY KEY("DriveName","CartridgeID","TimeStamp") ); 1u CREATE TABLE "TASK" ( @@ -1293,7 +1363,8 @@ CHECK("MessageSenderType" = 'LM' OR "MessageSenderType" = 'DM' OR "MessageSenderType" = 'MM' OR - "MessageSenderType" = 'AI'), + "MessageSenderType" = 'AI') + NOT NULL, "MessageSenderName" text, "MessageSenderInstance" text, "MessageConnectionID" text, @@ -1308,7 +1379,8 @@ "MessageLevel" = 'notice' OR "MessageLevel" = 'information' OR "MessageLevel" = 'debug' OR - "MessageLevel" = 'developer'), + "MessageLevel" = 'developer') + NOT NULL, "MessageManufacturer" text, "MessageModel" text, "MessageNumber" text, @@ -1333,7 +1405,8 @@ CHECK("RequestingClientType" = 'LM' OR "RequestingClientType" = 'DM' OR "RequestingClientType" = 'MM' OR - "RequestingClientType" = 'AI'), + "RequestingClientType" = 'AI') + NOT NULL, "RequestPriority" integer CONSTRAINT "RequestPriority_CC" CHECK("RequestPriority" >= 0 AND @@ -1343,7 +1416,7 @@ CHECK("RequestState" = 'pending' OR "RequestState" = 'accepted' OR "RequestState" = 'responded') - default 'pending', + default 'pending' NOT NULL, "RequestManufacturer" text, "RequestModel" text, "RequestNumber" text, @@ -1386,7 +1459,7 @@ CONSTRAINT "AttendanceMode_CC" CHECK("AttendanceMode" = 'attended' OR "AttendanceMode" = 'unattended') - default 'attended', + default 'attended' NOT NULL, "SystemLogLevel" text CONSTRAINT "SystemLogLevel_CC" CHECK("SystemLogLevel" = 'emergency' OR @@ -1398,7 +1471,7 @@ "SystemLogLevel" = 'information' OR "SystemLogLevel" = 'debug' OR "SystemLogLevel" = 'developer') - default 'error', + default 'error' NOT NULL, "SystemAcceptLevel" text CONSTRAINT "SystemAcceptLevel_CC" CHECK("SystemAcceptLevel" = 'emergency' OR @@ -1410,7 +1483,7 @@ "SystemAcceptLevel" = 'information' OR "SystemAcceptLevel" = 'debug' OR "SystemAcceptLevel" = 'developer') - default 'error', + default 'error' NOT NULL, "SystemLogFile" text default '/var/log/mms/system_log', "SystemMessageLimit" integer @@ -1445,18 +1518,18 @@ CONSTRAINT "ClearDriveAtLMConfig_CC" CHECK("ClearDriveAtLMConfig" = 'yes' OR "ClearDriveAtLMConfig" = 'no') - default 'no', + default 'no' NOT NULL, "AskClearDriveAtLMConfig" text CONSTRAINT "AskClearDriveAtLMConfig_CC" CHECK("AskClearDriveAtLMConfig" = 'yes' OR "AskClearDriveAtLMConfig" = 'no') - default 'yes', + default 'yes' NOT NULL, "PreemptReservation" text CONSTRAINT "PreemptReservation_CC" CHECK("PreemptReservation" = 'yes' OR "PreemptReservation" = 'ask' OR "PreemptReservation" = 'no') - default 'yes', + default 'yes' NOT NULL, /* MM settings --> */ "MessageLevel" text CONSTRAINT "MessageLevel_CC" @@ -1469,7 +1542,7 @@ "MessageLevel" = 'information' OR "MessageLevel" = 'debug' OR "MessageLevel" = 'developer') - default 'error', + default 'error' NOT NULL, "TraceLevel" text CONSTRAINT "TraceLevel_CC" CHECK("TraceLevel" = 'emergency' OR @@ -1482,7 +1555,7 @@ "TraceLevel" = 'information' OR "TraceLevel" = 'debug' OR "TraceLevel" = 'developer') - default 'debug', + default 'debug' NOT NULL, "TraceFileSize" text default '10M', "SocketFdLimit" integer @@ -1499,6 +1572,23 @@ CONSTRAINT "DefaultBlocksize_CC" CHECK("DefaultBlocksize" >= 0) default '262144', + "SystemDiskMountTimeout" integer + CONSTRAINT "SystemDiskMountTimeout_CC" + CHECK("SystemDiskMountTimeout" >= 0) + default 5, + "WatcherStartsLimit" integer + CONSTRAINT "WatcherStartsLimit_CC" + CHECK("WatcherStartsLimit" >= 3 OR + "WatcherStartsLimit" = -1) + default 3, + "WatcherTimeLimit" integer + CONSTRAINT "WatcherTimeLimit_CC" + CHECK("WatcherTimeLimit" >= 60) + default 60, + "DriveRecordRetention" integer + CONSTRAINT "DriveRecordRetention_CC" + CHECK("DriveRecordRetention" >= 1) + default 30, CONSTRAINT "SYSTEM_PK" PRIMARY KEY("Administrator") /* SYSTEM-DEFINED */ ); @@ -1534,14 +1624,6 @@ "DBVersion" integer CONSTRAINT "DBVersion_CC" CHECK("DBVersion" >= 1) - default '1', - - /* DBDevelopmentVersion is used to create a new base */ - /* database version 1 upgrade by dropping the database, */ - /* read the "how to" instructions below. */ - "DBDevelopmentVersion" integer - CONSTRAINT "DBDevelopmentVersion" - CHECK("DBDevelopmentVersion" >= 1) default '1' ); @@ -2239,360 +2321,29 @@ before insert or update or delete on "VOLUME" for row execute procedure mm_func_insert_event(); -# Initialize Database -1u INSERT INTO "APPLICATION" ("ApplicationName") VALUES ('MMS'); - -1u INSERT INTO "AI" ("AIName", "ApplicationName", "PrivilegeChangeable", - "DefaultPriority", "SessionsAllowed") - VALUES ('admin', 'MMS', 'true', '0', 'multiple'); - -1u INSERT INTO "AI" ("AIName", "ApplicationName", "PrivilegeChangeable", - "DefaultPriority", "SessionsAllowed") - VALUES ('oper', 'MMS', 'true', '0', 'multiple'); - -1u INSERT INTO "AI" ("AIName", "ApplicationName", "PrivilegeChangeable", - "DefaultPriority", "SessionsAllowed") - VALUES('watcher', 'MMS', 'true', '0', 'multiple'); - -1u INSERT INTO "SYSTEM" ("Administrator") VALUES ('admin'); - -1u CREATE FUNCTION mm_system_defined_init() RETURNS boolean AS ' - DECLARE - -- MMS objects with user or system defined attributes - table text[] = ''{ "APPLICATION", "AI", "SESSION", "LIBRARY", - "LM", "SLOTTYPE", "CARTRIDGEGROUP", "CARTRIDGETYPE", - "CARTRIDGE", "SIDE", "PARTITION", "VOLUME", - "DRIVEGROUP", "DRIVE", "DM", "DMCAPABILITY", - "DRIVECARTRIDGEACCESS", "SYSTEM", NULL }''; - i integer = 1; - BEGIN - -- Save MMS system defined object attributes - WHILE table[i] IS NOT NULL LOOP - INSERT INTO "SYSTEM_DEFINED" (objname,attribute) - SELECT table[i],attname FROM pg_attribute - WHERE (attrelid = (select oid - FROM pg_class WHERE - relname = table[i])) AND attname ~ ''^[A-Z]''; - i := i + 1; - END LOOP; - RETURN true; - END; - ' LANGUAGE 'plpgsql'; - -1u SELECT mm_system_defined_init(); - -1u DROP FUNCTION mm_system_defined_init(); - -1u INSERT INTO "MM" ("DBInitialized", "DBVersion") VALUES ('true', '1'); - -# Add or delete system table columns. -1u CREATE FUNCTION mm_system_defined_add(text,text) RETURNS boolean AS ' - BEGIN - INSERT INTO "SYSTEM_DEFINED" (objname, attribute) - VALUES ($1, $2); - RETURN true; - END - ' LANGUAGE 'plpgsql'; - -1u CREATE FUNCTION mm_system_defined_del(text,text) RETURNS boolean AS ' - BEGIN - DELETE FROM "SYSTEM_DEFINED" WHERE objname = $1 AND - attribute = $2; - RETURN true; - END - ' LANGUAGE 'plpgsql'; - - - +# Create LIBRARY/DRIVE/CARTRIDGE LISTS -############################################################################### -# To create a new version 1 database, move all version upgrades -# greater than 1 into the version above, delete the downgrades, and -# increment the DBDevelopmentVersion below. -# -# It is ok to continue to do version upgrades and downgrades without -# data loss. The developer who wants a new version 1 is responsible -# for consolidating all upgrades into version 1 above. -# -# This version 1 change feature is for development only and will be removed -# before MMS is released. -############################################################################### -1u UPDATE "MM" SET "DBDevelopmentVersion" = '3'; - -2u ALTER TABLE "SYSTEM" ADD "SystemDiskMountTimeout" int default 5; -2u SELECT mm_system_defined_add('SYSTEM','SystemDiskMountTimeout'); - -2d ALTER TABLE "SYSTEM" DROP "SystemDiskMountTimeout"; -2d SELECT mm_system_defined_del('SYSTEM','SystemDiskMountTimeout'); - -2u ALTER TABLE "CARTRIDGE" ADD "CartridgeMountPoint" text default '*none'; -2u SELECT mm_system_defined_add('CARTRIDGE','CartridgeMountPoint'); - -2d ALTER TABLE "CARTRIDGE" DROP "CartridgeMountPoint"; -2d SELECT mm_system_defined_del('CARTRIDGE','CartridgeMountPoint'); - -2u ALTER TABLE "CARTRIDGE" ADD "CartridgePath" text default '*none'; -2u SELECT mm_system_defined_add('CARTRIDGE','CartridgePath'); - -2d ALTER TABLE "CARTRIDGE" DROP "CartridgePath"; -2d SELECT mm_system_defined_del('CARTRIDGE','CartridgePath'); - -3u ALTER TABLE "LIBRARY" ALTER "LibraryConnection" DROP DEFAULT; -3d ALTER TABLE "LIBRARY" ALTER "LibraryConnection" SET DEFAULT 'network'; - -4u ALTER TABLE "EVENTRULES" ADD "Data1" text; -4u ALTER TABLE "EVENTRULES" ADD "Data2" text; -4u ALTER TABLE "EVENTRULES" ADD "Data3" text; -4u ALTER TABLE "EVENTRULES" ADD "Data4" text; -4u ALTER TABLE "EVENTRULES" ADD "Data5" text; - -4d ALTER TABLE "EVENTRULES" DROP "Data1"; -4d ALTER TABLE "EVENTRULES" DROP "Data2"; -4d ALTER TABLE "EVENTRULES" DROP "Data3"; -4d ALTER TABLE "EVENTRULES" DROP "Data4"; -4d ALTER TABLE "EVENTRULES" DROP "Data5"; - -5u CREATE table "DMMOUNTPOINT"( - "DMName" text - CONSTRAINT "DMName_CC" - REFERENCES "DM" ON DELETE CASCADE, - "DMMountPoint" text -); - -5d DROP table "DMMOUNTPOINT"; - -# Current version of Postgres (8.0.3) does not support bool to text -# so use this function to cast -6u create or replace function bool_to_text (boolean) - returns char - strict - language sql as ' - select case - when $1 then \'t\' - else \'f\' - end; - '; -6u create cast (boolean as char(1)) - with function bool_to_text(boolean) - as implicit; - -#Create LIBRARY/DRIVE/CARTRIDGE LISTS - -7u CREATE table "LIBRARYLIST"( +1u CREATE table "LIBRARYLIST"( "LibraryString" text NOT NULL, CONSTRAINT "LIBRARYLIST_PK" PRIMARY KEY("LibraryString") ); -7u CREATE table "DRIVELIST"( +1u CREATE table "DRIVELIST"( "DriveString" text NOT NULL, CONSTRAINT "DRIVELIST_PK" PRIMARY KEY("DriveString") ); -7u CREATE table "CARTRIDGELIST"( +1u CREATE table "CARTRIDGELIST"( "CartridgeString" text NOT NULL, CONSTRAINT "CARTRIDGELIST_PK" PRIMARY KEY("CartridgeString") ); -7d DROP table "LIBRARYLIST"; -7d DROP table "DRIVELIST"; -7d DROP table "CARTRIDGELIST"; - -10u ALTER TABLE "DRIVE" ADD "DriveVendorID" text; -10u ALTER TABLE "DRIVE" ADD "DriveProductID" text; -10u ALTER TABLE "DRIVE" ADD "DriveTypeName" text; - -10d ALTER TABLE "DRIVE" DROP "DriveVendorID"; -10d ALTER TABLE "DRIVE" DROP "DriveProductID"; -10d ALTER TABLE "DRIVE" DROP "DriveTypeName"; - -# Watcher LM and DM restart limits -12u ALTER TABLE "SYSTEM" ADD "WatcherStartsLimit" integer - CONSTRAINT "WatcherStartsLimit_CC" - CHECK("WatcherStartsLimit" >= 3 OR - "WatcherStartsLimit" = -1) - default 3; -12u ALTER TABLE "SYSTEM" ADD "WatcherTimeLimit" integer - CONSTRAINT "WatcherTimeLimit_CC" - CHECK("WatcherTimeLimit" >= 60) - default 60; -12u SELECT mm_system_defined_add('SYSTEM','WatcherStartsLimit'); -12u SELECT mm_system_defined_add('SYSTEM','WatcherTimeLimit'); - -12d ALTER TABLE "SYSTEM" DROP "WatcherStartsLimit"; -12d ALTER TABLE "SYSTEM" DROP "WatcherTimeLimit"; -12d SELECT mm_system_defined_del('SYSTEM','WatcherStartsLimit'); -12d SELECT mm_system_defined_del('SYSTEM','WatcherTimeLimit'); - -# Solaris 11 position from ST -13u ALTER TABLE "PARTITION" DROP "PartitionEOFPosType"; -13u SELECT mm_system_defined_del('PARTITION','PartitionEOFPosType'); -13u ALTER TABLE "PARTITION" DROP "PartitionEOFPos"; -13u ALTER TABLE "PARTITION" ADD "PartitionEOFPos" text; - -13d ALTER TABLE "PARTITION" ADD "PartitionEOFPosType" smallint - default 0; -13d SELECT mm_system_defined_add('PARTITION','PartitionEOFPosType'); -13d ALTER TABLE "PARTITION" DROP "PartitionEOFPos"; -13d ALTER TABLE "PARTITION" ADD "PartitionEOFPos" bigint; - -14u ALTER TABLE "SYSTEM" ADD "DriveRecordRetention" integer - CONSTRAINT "DriveRecordRetention_CC" - CHECK("DriveRecordRetention" >= 1) - default 30; -14u ALTER TABLE "DRIVECARTRIDGEACCESS" DROP "DriveCartridgeAccessTimeUnmm_mount"; -14u ALTER TABLE "DRIVECARTRIDGEACCESS" - ADD "DriveCartridgeAccessTimeUnmount" timestamp (3) - default '-infinity' NOT NULL; - -14d ALTER TABLE "SYSTEM" DROP "DriveRecordRetention"; -14d ALTER TABLE "DRIVECARTRIDGEACCESS" DROP "DriveCartridgeAccessTimeUnmount"; -14d ALTER TABLE "DRIVECARTRIDGEACCESS" - ADD "DriveCartridgeAccessTimeUnmm_mount" timestamp (3) - default '-infinity' NOT NULL; - -# Add attributes to DRIVECARTRIDGEACCESS -14u ALTER TABLE "DRIVECARTRIDGEACCESS" ADD - "DriveCartridgeAccessMediumByteReadCount" bigint - CONSTRAINT "DriveCartridgeAccessMediumByteReadCount_CC" - CHECK("DriveCartridgeAccessMediumByteReadCount" >= 0) - default 0; - -14u ALTER TABLE "DRIVECARTRIDGEACCESS" ADD - "DriveCartridgeAccessMediumByteWriteCount" bigint - CONSTRAINT "DriveCartridgeAccessMediumByteWriteCount_CC" - CHECK("DriveCartridgeAccessMediumByteWriteCount" >= 0) - default 0; - -14u ALTER TABLE "DRIVECARTRIDGEACCESS" ADD "CartridgePCL" text; -14u ALTER TABLE "DRIVECARTRIDGEACCESS" ADD "DriveSerialNum" text; -14u ALTER TABLE "DRIVECARTRIDGEACCESS" ADD "CartridgeShapeName" text; -14u ALTER TABLE "DRIVECARTRIDGEACCESS" ADD "DriveShapeName" text; - -14u ALTER TABLE "DRIVECARTRIDGEACCESS" DROP - "DriveCartridgeAccessByteReadCount"; -14u ALTER TABLE "DRIVECARTRIDGEACCESS" ADD - "DriveCartridgeAccessByteReadCount" bigint - CONSTRAINT "DriveCartridgeAccessByteReadCount_CC" - CHECK("DriveCartridgeAccessByteReadCount" >= -1) - default -1; -14u ALTER TABLE "DRIVECARTRIDGEACCESS" DROP - "DriveCartridgeAccessByteWriteCount"; -14u ALTER TABLE "DRIVECARTRIDGEACCESS" ADD - "DriveCartridgeAccessByteWriteCount" bigint - CONSTRAINT "DriveCartridgeAccessByteWriteCount_CC" - CHECK("DriveCartridgeAccessByteWriteCount" >= -1) - default -1; - -14d ALTER TABLE "DRIVECARTRIDGEACCESS" DROP - "DriveCartridgeAccessMediumByteReadCount"; -14d ALTER TABLE "DRIVECARTRIDGEACCESS" DROP - "DriveCartridgeAccessMediumByteWriteCount"; -14d ALTER TABLE "DRIVECARTRIDGEACCESS" DROP "CartridgePCL"; -14d ALTER TABLE "DRIVECARTRIDGEACCESS" DROP "DriveSerialNum"; -14d ALTER TABLE "DRIVECARTRIDGEACCESS" DROP "CartridgeShapeName"; -14d ALTER TABLE "DRIVECARTRIDGEACCESS" DROP "DriveShapeName"; -14d ALTER TABLE "DRIVECARTRIDGEACCESS" DROP - "DriveCartridgeAccessByteReadCount"; -14d ALTER TABLE "DRIVECARTRIDGEACCESS" ADD - "DriveCartridgeAccessByteReadCount" int - CONSTRAINT "DriveCartridgeAccessByteReadCount_CC" - CHECK("DriveCartridgeAccessByteReadCount" >= -1) - default -1; -14d ALTER TABLE "DRIVECARTRIDGEACCESS" DROP - "DriveCartridgeAccessByteWriteCount"; -14d ALTER TABLE "DRIVECARTRIDGEACCESS" ADD - "DriveCartridgeAccessByteWriteCount" int - CONSTRAINT "DriveCartridgeAccessByteWriteCount_CC" - CHECK("DriveCartridgeAccessByteWriteCount" >= -1) - default -1; - -# Add DRIVECARTRIDGEERROR -15u CREATE table "DRIVECARTRIDGEERROR" ( - "DriveName" text, - "DMName" text, - "CartridgeID" text, - "SideName" text NOT NULL, - "PartitionName" text NOT NULL, - "ApplicationName" text, - "CartridgePCL" text, - "DriveSerialNum" text, - "CartridgeShapeName" text, - "DriveShapeName" text, - "CDB" text, - "SCSICommand" text, - "IOStatus" text, - "SenseKey" text, - "AdditionalSenseCode" text, - "AdditionalSenseCodeQualifier" text, - "SenseBytes" text, - "ErrorText" text, - "TimeStamp" timestamp (3) - default current_timestamp NOT NULL -); - -15u ALTER TABLE "DRIVECARTRIDGEACCESS" - DROP CONSTRAINT "DriveName_CC"; -15u ALTER TABLE "DRIVECARTRIDGEACCESS" - DROP CONSTRAINT "DMName_CC"; -15u ALTER TABLE "DRIVECARTRIDGEACCESS" - DROP CONSTRAINT "CartridgeID_CC"; -15u ALTER TABLE "DRIVECARTRIDGEACCESS" - DROP CONSTRAINT "ApplicationName_CC"; -15u ALTER TABLE "DRIVECARTRIDGEACCESS" - DROP CONSTRAINT "DRIVECARTRIDGEACCESS_FK"; - -15d DROP TABLE "DRIVECARTRIDGEERROR"; -15d ALTER TABLE "DRIVECARTRIDGEACCESS" - ADD CONSTRAINT "DriveName_CC" - FOREIGN KEY ("DriveName") - REFERENCES "DRIVE"; -15d ALTER TABLE "DRIVECARTRIDGEACCESS" - ADD CONSTRAINT "DMName_CC" - FOREIGN KEY ("DMName") - REFERENCES "DM"; -15d ALTER TABLE "DRIVECARTRIDGEACCESS" - ADD CONSTRAINT "CartridgeID_CC" - FOREIGN KEY ("CartridgeID") - REFERENCES "CARTRIDGE"; -15d ALTER TABLE "DRIVECARTRIDGEACCESS" - ADD CONSTRAINT "ApplicationName_CC" - FOREIGN KEY ("ApplicationName") - REFERENCES "APPLICATION"; -15d ALTER TABLE "DRIVECARTRIDGEACCESS" - ADD CONSTRAINT "DRIVECARTRIDGEACCESS_FK" - FOREIGN KEY ("CartridgeID", "SideName", "PartitionName") - REFERENCES "PARTITION"; - -16u TRUNCATE "DRIVECARTRIDGEERROR"; -16u TRUNCATE "DRIVECARTRIDGEACCESS"; - -16u ALTER TABLE "DRIVECARTRIDGEERROR" - ADD CONSTRAINT "DRIVECARTRIDGEERROR_PK" - PRIMARY KEY("DriveName","CartridgeID","TimeStamp"); -16u ALTER TABLE "DRIVECARTRIDGEACCESS" - ADD CONSTRAINT "DRIVECARTRIDGEACCESS_PK" - PRIMARY KEY("CartridgeID", "DriveName", - "DriveCartridgeAccessTimeUnmount"); - -16d ALTER TABLE "DRIVECARTRIDGEERROR" - DROP CONSTRAINT "DRIVECARTRIDGEERROR_PK"; -16d ALTER TABLE "DRIVECARTRIDGEACCESS" - DROP CONSTRAINT "DRIVECARTRIDGEACCESS_PK"; - - -17u ALTER TABLE "APPLICATION" DROP "Password"; -17u ALTER TABLE "DM" DROP "DMPassword"; -17u ALTER TABLE "LM" DROP "LMPassword"; - -17u SELECT mm_system_defined_del('APPLICATION','Password'); -17u SELECT mm_system_defined_del('DM','DMPassword'); -17u SELECT mm_system_defined_del('LM','LMPassword'); - -17u CREATE TABLE "MMPASSWORD" ( +# Create Password Handlers +1u CREATE TABLE "MMPASSWORD" ( "ApplicationName" text, - "Password" text default 'changeme', + "Password" text default 'changeme' NOT NULL, CONSTRAINT "MMPASSWORD_PK" PRIMARY KEY("ApplicationName") ); -17u CREATE FUNCTION mm_func_getpassword(text) RETURNS text AS ' +1u CREATE FUNCTION mm_func_getpassword(text) RETURNS text AS ' DECLARE newpass TEXT; BEGIN @@ -2601,7 +2352,7 @@ END; ' LANGUAGE 'plpgsql'; -17u CREATE FUNCTION mm_func_setpassword() RETURNS TRIGGER AS ' +1u CREATE FUNCTION mm_func_setpassword() RETURNS TRIGGER AS ' DECLARE newpass TEXT; BEGIN @@ -2613,9 +2364,9 @@ END IF; SELECT INTO newpass (select mm_func_getpassword(NEW."Password")); - -- let user reuse the same password + -- let user reuse the same password -- IF TG_OP = ''UPDATE'' THEN - -- internal mms app can reuse the same password + -- internal mms app can reuse the same password -- IF OLD."ApplicationName" NOTNULL AND -- OLD."ApplicationName" != ''MMS'' AND -- newpass = OLD."Password" THEN @@ -2630,18 +2381,18 @@ END; ' LANGUAGE 'plpgsql'; -17u CREATE TRIGGER mm_trig_setpassword BEFORE +1u CREATE TRIGGER mm_trig_setpassword BEFORE INSERT OR UPDATE ON "MMPASSWORD" FOR ROW EXECUTE PROCEDURE mm_func_setpassword(); -17u CREATE FUNCTION mm_func_defpassword() RETURNS TRIGGER AS ' +1u CREATE FUNCTION mm_func_defpassword() RETURNS TRIGGER AS ' BEGIN IF TG_OP = ''INSERT'' THEN INSERT INTO "MMPASSWORD" ("ApplicationName","Password") VALUES (NEW."ApplicationName",default); ELSIF TG_OP = ''UPDATE'' THEN IF NEW."ApplicationName" != OLD."ApplicationName" THEN - UPDATE "MMPASSWORD" SET + UPDATE "MMPASSWORD" SET "ApplicationName" = NEW."ApplicationName" WHERE "ApplicationName" = OLD."ApplicationName"; END IF; @@ -2653,198 +2404,15 @@ RETURN NEW; END; ' LANGUAGE 'plpgsql'; - -17u CREATE TRIGGER mm_trig_defpassword BEFORE + +1u CREATE TRIGGER mm_trig_defpassword BEFORE INSERT OR UPDATE OR DELETE ON "APPLICATION" FOR ROW EXECUTE PROCEDURE mm_func_defpassword(); -17u INSERT INTO "MMPASSWORD" ("ApplicationName") - (select "ApplicationName" from "APPLICATION"); - -17u UPDATE "MMPASSWORD" SET "Password" = 'summer05'; - - - - -17d DROP FUNCTION mm_func_getpassword(text) CASCADE; -17d DROP FUNCTION mm_func_setpassword() CASCADE; -17d DROP FUNCTION mm_func_defpassword() CASCADE; -17d DROP TABLE "MMPASSWORD"; -17d ALTER TABLE "APPLICATION" ADD "Password" text; -17d ALTER TABLE "DM" ADD "DMPassword" text; -17d ALTER TABLE "LM" ADD "LMPassword" text; - -17d SELECT mm_system_defined_add('APPLICATION','Password'); -17d SELECT mm_system_defined_add('DM','DMPassword'); -17d SELECT mm_system_defined_add('LM','LMPassword'); - -18u ALTER TABLE "CARTRIDGE" ADD - "CartridgeSize" integer - CONSTRAINT "CartridgeSize_CC" - CHECK("CartridgeSize" >= -1) - default -1; - -18u ALTER TABLE "CARTRIDGE" ADD - "CartridgeAvailable" integer - CONSTRAINT "CartridgeAvailable_CC" - CHECK("CartridgeAvailable" >= -1) - default -1; - -18u ALTER TABLE "CARTRIDGE" ADD - "CartridgePercentAvailable" integer - CONSTRAINT "CartridgePercentAvailable_CC" - CHECK("CartridgePercentAvailable" >= -1) - default -1; - -18d ALTER TABLE "CARTRIDGE" DROP "CartridgeSize" ; -18d ALTER TABLE "CARTRIDGE" DROP CONSTRAINT "CartridgeSize_CC"; -18d ALTER TABLE "CARTRIDGE" DROP "CartridgeAvailable" ; -18d ALTER TABLE "CARTRIDGE" DROP CONSTRAINT "CartridgeAvailable_CC"; -18d ALTER TABLE "CARTRIDGE" DROP "CartridgePercentAvailable" ; -18d ALTER TABLE "CARTRIDGE" DROP CONSTRAINT "CartridgePercentAvailable_CC"; - -19u ALTER TABLE "LIBRARY" ADD "LibraryLSM" text; -19d ALTER TABLE "LIBRARY" DROP "LibraryLSM"; - -20u ALTER TABLE "LIBRARY" ADD "LibrarySerialNumber" text; -20d ALTER TABLE "LIBRARY" DROP "LibrarySerialNumber"; - -21u ALTER TABLE "CARTRIDGE" DROP "CartridgeSize" ; -21u ALTER TABLE "CARTRIDGE" DROP "CartridgeAvailable" ; -21u ALTER TABLE "CARTRIDGE" DROP "CartridgePercentAvailable" ; - -21u ALTER TABLE "CARTRIDGE" DROP "CartridgeRecovededReads"; -21u ALTER TABLE "CARTRIDGE" DROP "CartridgeRecovededWrites"; -21u ALTER TABLE "CARTRIDGE" DROP "CartridgeUnrecovededReads"; -21u ALTER TABLE "CARTRIDGE" DROP "CartridgeUnrecovededWrites"; - -21u ALTER TABLE "CARTRIDGE" ADD - "CartridgeRecoveredReads" integer - CONSTRAINT "CartridgeRecoveredReads_CC" - CHECK("CartridgeRecoveredReads" >= 0) - default 0; - -21u ALTER TABLE "CARTRIDGE" ADD - "CartridgeRecoveredWrites" integer - CONSTRAINT "CartridgeRecoveredWrites_CC" - CHECK("CartridgeRecoveredWrites" >= 0) - default 0; - -21u ALTER TABLE "CARTRIDGE" ADD - "CartridgeUnrecoveredReads" integer - CONSTRAINT "CartridgeUnrecoveredReads_CC" - CHECK("CartridgeUnrecoveredReads" >= 0) - default 0; - -21u ALTER TABLE "CARTRIDGE" ADD - "CartridgeUnrecoveredWrites" integer - CONSTRAINT "CartridgeUnrecoveredWrites_CC" - CHECK("CartridgeUnrecoveredWrites" >= 0) - default 0; - - -21d ALTER TABLE "CARTRIDGE" ADD - "CartridgeSize" integer - CONSTRAINT "CartridgeSize_CC" - CHECK("CartridgeSize" >= -1) - default -1; - -21d ALTER TABLE "CARTRIDGE" ADD - "CartridgeAvailable" integer - CONSTRAINT "CartridgeAvailable_CC" - CHECK("CartridgeAvailable" >= -1) - default -1; - -21d ALTER TABLE "CARTRIDGE" ADD - "CartridgePercentAvailable" integer - CONSTRAINT "CartridgePercentAvailable_CC" - CHECK("CartridgePercentAvailable" >= -1) - default -1; - -21d ALTER TABLE "CARTRIDGE" DROP "CartridgeRecoveredReads"; -21d ALTER TABLE "CARTRIDGE" DROP "CartridgeRecoveredWrites"; -21d ALTER TABLE "CARTRIDGE" DROP "CartridgeUnrecoveredReads"; -21d ALTER TABLE "CARTRIDGE" DROP "CartridgeUnrecoveredWrites"; -21d ALTER TABLE "CARTRIDGE" ADD - "CartridgeRecovededReads" text - default '0'; -21d ALTER TABLE "CARTRIDGE" ADD - "CartridgeRecovededWrites" text - default '0'; -21d ALTER TABLE "CARTRIDGE" ADD - "CartridgeUnrecovededReads" text - default '0'; -21d ALTER TABLE "CARTRIDGE" ADD - "CartridgeUnrecovededWrites" text - default '0'; - -22u ALTER TABLE "LM" ADD - "LMSSIPort" int - CONSTRAINT "LMSSIPort_CC" - CHECK("LMSSIPort" > 0) - default 50004; -22u ALTER TABLE "LIBRARY" ADD - "LibraryACSLSPort" int; - -22d ALTER TABLE "LM" DROP "LMSSIPort"; -22d ALTER TABLE "LIBRARY" DROP "LibraryACSLSPort"; - -23u UPDATE "LM" SET "LMTargetHost" = NULL WHERE - "LMTargetHost" = 'localhost' OR - "LMTargetHost" = '127.0.0.1' OR - "LMTargetHost" = '::1'; -23u ALTER TABLE "LM" - ADD CONSTRAINT "LMTargetHost_CC" - CHECK("LMTargetHost" != 'localhost' AND - "LMTargetHost" != '127.0.0.1' AND - "LMTargetHost" != '::1'); -23u UPDATE "DM" SET "DMTargetHost" = NULL WHERE - "DMTargetHost" = 'localhost' OR - "DMTargetHost" = '127.0.0.1' OR - "DMTargetHost" = '::1'; -23u ALTER TABLE "DM" - ADD CONSTRAINT "DMTargetHost_CC" - CHECK("DMTargetHost" != 'localhost' AND - "DMTargetHost" != '127.0.0.1' AND - "DMTargetHost" != '::1'); -23d ALTER TABLE "LM" - DROP CONSTRAINT "LMTargetHost_CC"; -23d ALTER TABLE "DM" - DROP CONSTRAINT "DMTargetHost_CC"; - -24u ALTER TABLE "LM" - DROP "LMTargetLibrary"; -24u ALTER TABLE "DM" - DROP "DMTargetLibrary"; -24d ALTER TABLE "LM" ADD - "LMTargetLibrary" text; -24d ALTER TABLE "DM" ADD - "DMTargetLibrary" text; - -# Disk archiving default and alternate host library path configuration -25u ALTER TABLE "LIBRARY" ADD - "DefaultLibraryPath" text; -25u CREATE TABLE "LIBRARYACCESS"( - "LibraryName" text - CONSTRAINT "LibraryName_CC" - REFERENCES "LIBRARY", - "HostName" text - CONSTRAINT "HostName_CC" - CHECK("HostName" != 'localhost' AND - "HostName" != '127.0.0.1' AND - "HostName" != '::1') - NOT NULL, - "LibraryPath" text - NOT NULL, - CONSTRAINT "LIBRARYACCESS_PK" - PRIMARY KEY("LibraryName", "HostName") -); -25u SELECT mm_system_defined_add('LIBRARYACCESS','LibraryName'); -25u SELECT mm_system_defined_add('LIBRARYACCESS','HostName'); -25u SELECT mm_system_defined_add('LIBRARYACCESS','LibraryPath'); -25u CREATE FUNCTION mm_func_librarypath() RETURNS TRIGGER AS ' +# Disk archiving host library path configuration +1u CREATE FUNCTION mm_func_librarypath() RETURNS TRIGGER AS ' BEGIN - -- Validate default disk library path is not null. + -- Validate default disk library path is not null. IF TG_OP = ''INSERT'' OR TG_OP = ''UPDATE'' THEN IF NEW."LibraryType" = ''DISK'' THEN IF NEW."DefaultLibraryPath" ISNULL THEN @@ -2853,45 +2421,114 @@ -- Validate default disk library path ends in library name IF ((select length(NEW."DefaultLibraryPath") - length(NEW."LibraryName") = position(NEW."LibraryName" in - NEW."DefaultLibraryPath") - 1)) != \'t\' THEN + NEW."DefaultLibraryPath") - 1)) != ''t'' THEN RAISE EXCEPTION ''"LIBRARY"."DefaultLibraryPath" must end in "LIBRARY"."LibraryName"''; END IF; - END IF; + END IF; RETURN NEW; END IF; END; ' LANGUAGE 'plpgsql'; -25u CREATE TRIGGER mm_func_librarypath BEFORE + +1u CREATE TRIGGER mm_func_librarypath BEFORE INSERT OR UPDATE ON "LIBRARY" FOR ROW EXECUTE PROCEDURE mm_func_librarypath(); -25u CREATE FUNCTION mm_func_libraryaccess() RETURNS TRIGGER AS ' +1u CREATE FUNCTION mm_func_libraryaccess() RETURNS TRIGGER AS ' BEGIN -- Validate alternate disk library access path ends in library name IF TG_OP = ''INSERT'' OR TG_OP = ''UPDATE'' THEN IF ((select length(NEW."LibraryPath") - - length(NEW."LibraryName") = position(NEW."LibraryName" in - NEW."LibraryPath") - 1)) != \'t\' THEN - RAISE EXCEPTION ''"LIBRARYACCESS"."LibraryPath" must end in "LIBRARYACCESS"."LibraryName"''; + length(NEW."LibraryName") = position(NEW."LibraryName" in + NEW."LibraryPath") - 1)) != ''t'' THEN + RAISE EXCEPTION ''"LIBRARYACCESS"."LibraryPath" must end in +"LIBRARYACCESS"."LibraryName"''; END IF; RETURN NEW; END IF; END; ' LANGUAGE 'plpgsql'; -25u CREATE TRIGGER mm_func_libraryaccess BEFORE + +1u CREATE TRIGGER mm_func_libraryaccess BEFORE INSERT OR UPDATE ON "LIBRARYACCESS" FOR ROW EXECUTE PROCEDURE mm_func_libraryaccess(); -25u ALTER TABLE "CARTRIDGE" DROP "CartridgePath"; -25u SELECT mm_system_defined_del('CARTRIDGE','CartridgePath'); -25u ALTER TABLE "CARTRIDGE" DROP "CartridgeMountPoint"; -25u SELECT mm_system_defined_del('CARTRIDGE','CartridgeMountPoint'); -25u DROP table "DMMOUNTPOINT"; +# Initialize Database +1u INSERT INTO "APPLICATION" ("ApplicationName") VALUES ('MMS'); +1u INSERT INTO "AI" ("AIName", "ApplicationName", "PrivilegeChangeable", + "DefaultPriority", "SessionsAllowed") + VALUES ('admin', 'MMS', 'true', '0', 'multiple'); + +1u INSERT INTO "AI" ("AIName", "ApplicationName", "PrivilegeChangeable", + "DefaultPriority", "SessionsAllowed") + VALUES ('oper', 'MMS', 'true', '0', 'multiple'); + +1u INSERT INTO "AI" ("AIName", "ApplicationName", "PrivilegeChangeable", + "DefaultPriority", "SessionsAllowed") + VALUES('watcher', 'MMS', 'true', '0', 'multiple'); + +1u INSERT INTO "SYSTEM" ("Administrator") VALUES ('admin'); + +1u CREATE FUNCTION mm_system_defined_init() RETURNS boolean AS ' + DECLARE + -- MMS objects with user or system defined attributes + table text[] = ''{ "APPLICATION", "AI", "SESSION", "LIBRARY", + "LM", "SLOTTYPE", "CARTRIDGEGROUP", "CARTRIDGETYPE", + "CARTRIDGE", "SIDE", "PARTITION", "VOLUME", + "DRIVEGROUP", "DRIVE", "DM", "DMCAPABILITY", + "DRIVECARTRIDGEACCESS", "SYSTEM", "LIBRARYACCESS", + "DRIVECARTRIDGEERROR", NULL }''; + i integer = 1; + BEGIN + -- Save MMS system defined object attributes + WHILE table[i] IS NOT NULL LOOP + INSERT INTO "SYSTEM_DEFINED" (objname,attribute) + SELECT table[i],attname FROM pg_attribute + WHERE (attrelid = (select oid + FROM pg_class WHERE + relname = table[i])) AND attname ~ ''^[A-Z]''; + i := i + 1; + END LOOP; + RETURN true; + END; + ' LANGUAGE 'plpgsql'; + +1u SELECT mm_system_defined_init(); + +1u DROP FUNCTION mm_system_defined_init(); + +# Add or delete upgrade/downgrade system defined table columns. +1u CREATE FUNCTION mm_system_defined_add(text,text) RETURNS boolean AS ' + BEGIN + INSERT INTO "SYSTEM_DEFINED" (objname, attribute) + VALUES ($1, $2); + RETURN true; + END + ' LANGUAGE 'plpgsql'; + +1u CREATE FUNCTION mm_system_defined_del(text,text) RETURNS boolean AS ' + BEGIN + DELETE FROM "SYSTEM_DEFINED" WHERE objname = $1 AND + attribute = $2; + RETURN true; + END + ' LANGUAGE 'plpgsql'; + +26u INSERT INTO "MM" ("DBInitialized", "DBVersion") VALUES ('true', '1'); + + +###################################################################### +# # +# Add your upgrade/downgrade version immediately after this comment # +# # +# Start upgrades at version 27 because 1-26 have already been used. # +# # +###################################################################### ###################################################################### -# # +# # # Add your upgrade/downgrade version immediately before this comment # -# # +# # ###################################################################### diff --git a/usr/src/cmd/mms/mms.xml b/usr/src/cmd/mms/mms.xml index 9719334a1a..c7b7d50ff3 100644 --- a/usr/src/cmd/mms/mms.xml +++ b/usr/src/cmd/mms/mms.xml @@ -19,7 +19,7 @@ information: Portions Copyright [yyyy] [name of copyright owner] CDDL HEADER END - Copyright 2008 Sun Microsystems, Inc. All rights reserved. + Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. --> @@ -197,11 +197,11 @@ <propval name='bin' type='astring' - value='/usr/bin' /> + value='/usr/postgres/8.3/bin' /> <propval name='data' type='astring' - value='/var/mms/db/data' /> + value='/var/mms/db/data83' /> <propval name='value_authorization' type='astring' diff --git a/usr/src/cmd/mms/mmsdb b/usr/src/cmd/mms/mmsdb index 60b9cf1c1f..b198b11daf 100644 --- a/usr/src/cmd/mms/mmsdb +++ b/usr/src/cmd/mms/mmsdb @@ -19,7 +19,7 @@ # # CDDL HEADER END # -# Copyright 2008 Sun Microsystems, Inc. All rights reserved. +# Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # @@ -81,7 +81,7 @@ case "$1" in status=`$PGBIN/pg_ctl -D $PGDATA status | /bin/grep PID` $PGBIN/pg_ctl -D $PGDATA stop -m fast if [ -z "$status" ]; then - pattern="$PGBIN/postmaster -D $PGDATA" + pattern="$PGBIN/postgres -D $PGDATA" /bin/pgrep -u $PGUSER -f "$pattern" > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "Sending immediate shutdown signal." diff --git a/usr/src/cmd/mms/utility/explorer/mmsexplorer b/usr/src/cmd/mms/utility/explorer/mmsexplorer index 5bfd98f018..9e374c4a94 100644 --- a/usr/src/cmd/mms/utility/explorer/mmsexplorer +++ b/usr/src/cmd/mms/utility/explorer/mmsexplorer @@ -19,7 +19,7 @@ # # CDDL HEADER END # -# Copyright 2008 Sun Microsystems, Inc. All rights reserved. +# Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # @@ -91,6 +91,7 @@ REPORTDIR=`dirname $REPORT` # MMS Service Configuration PGADMIN=`/bin/svcprop -c -p method_context/user mms:db` +PGBIN=`/bin/svcprop -c -p postgresql/bin mms:db` PGDATA=`/bin/svcprop -c -p postgresql/data mms:db` PGHOST=`/bin/svcprop -c -p db/host mms:mm` PGPORT=`/bin/svcprop -c -p db/port mms:mm` @@ -400,7 +401,7 @@ done echo "\nPatches installed for MMS:\n" >>$REPORT -verbose "/bin/showrev -p 2>/dev/null | /bin/egrep 'SUNWhsmr|SUNWhsmu|SUNWmmsr|SUNWmmsu|SUNWpostgr|SUNWopenssl' | /bin/sed -e 's/Obso.*//' | /bin/sed -e 's/Patch: //' > $TMPPAT" +verbose "/bin/showrev -p 2>/dev/null | /bin/egrep 'SUNWhsmr|SUNWhsmu|SUNWmmsr|SUNWmmsu|SUNWpostgr-83-client|SUNWpostgr-83-server|SUNWopenssl' | /bin/sed -e 's/Obso.*//' | /bin/sed -e 's/Patch: //' > $TMPPAT" showifiles $TMPPAT for i in `/bin/cat $TMPPAT`; do @@ -414,9 +415,8 @@ done # SUNWhsmu - Sun ADM HSM software Solaris 11 (usr) # SUNWmmsr - MMS Solaris (root) # SUNWmmsu - MMS Solaris (usr) -# SUNWpostgr - Postgres psql (client programs) -# SUNWpostgr-libs - Postgres libpq (client) -# SUNWpostgr-server - Postgres postmaster (server) +# SUNWpostgr-83-client - PostgreSQL client tools +# SUNWpostgr-83-server - PostgreSQL database server # SUNWopenssl-commands - OpenSSL commands (usr) # SUNWopenssl-libraries - OpenSSL libraries (usr) # SUNWopensslr - OpenSSL (root) @@ -433,7 +433,7 @@ done # echo "------------------- package info --------------------" >>$REPORT -for PACKAGE in SUNWhsmr SUNWhsmu SUNWmmsr SUNWmmsu SUNWpostgr SUNWpostgr-libs SUNWpostgr-server SUNWopenssl-commands SUNWopenssl-libraries SUNWopensslr STKacsls SUNWfcp SUNWfcpx SUNWfctl SUNWfctlx SUNWqlc SUNWqlcx SUNWsmgr JNIC QLA2200-3 +for PACKAGE in SUNWhsmr SUNWhsmu SUNWmmsr SUNWmmsu SUNWpostgr-83-client SUNWpostgr-83-server SUNWopenssl-commands SUNWopenssl-libraries SUNWopensslr STKacsls SUNWfcp SUNWfcpx SUNWfctl SUNWfctlx SUNWqlc SUNWqlcx SUNWsmgr JNIC QLA2200-3 do twiddle echo "" >>$REPORT 2>&1 @@ -534,15 +534,15 @@ showenuf $CURRENT $BEFORE $AFTER # database snapshot object="APPLICATION AI CONNECTION SESSION NOTIFY NOTIFYRULES "\ -"EVENTRULES LIBRARY LM BAY SLOTTYPE CARTRIDGEGROUP CARTRIDGETYPE "\ -"CARTRIDGE CARTRIDGEGROUPAPPLICATION SIDE PARTITION VOLUME DRIVEGROUP "\ -"DRIVEGROUPAPPLICATION DRIVE DM DMCAPABILITY DMCAPABILITYTOKEN "\ -"DMCAPABILITYDEFAULTTOKEN DMCAPABILITYGROUP DMCAPABILITYGROUPTOKEN "\ -"DMBITFORMAT DMBITFORMATTOKEN SLOTGROUP SLOT SLOTCONFIG MOUNTLOGICAL "\ -"MOUNTPHYSICAL DRIVECARTRIDGEACCESS TASK TASKCARTRIDGE TASKDRIVE "\ -"TASKLIBRARY MESSAGE REQUEST SYSTEM STALEHANDLE DMSHAPEPRIORITY "\ -"DMDENSITYPRIORITY DMMOUNTPOINT LIBRARYLIST DRIVELIST CARTRIDGELIST "\ -"DRIVECARTRIDGEERROR" +"EVENTRULES LIBRARYACCESS LIBRARY LM BAY SLOTTYPE CARTRIDGEGROUP "\ +"CARTRIDGETYPE CARTRIDGE CARTRIDGEGROUPAPPLICATION SIDE PARTITION VOLUME "\ +"DRIVEGROUP DRIVEGROUPAPPLICATION DRIVE DRIVECARTRIDGEERROR DM DMCAPABILITY "\ +"DMCAPABILITYTOKEN DMCAPABILITYDEFAULTTOKEN DMCAPABILITYGROUP "\ +"DMCAPABILITYGROUPTOKEN DMBITFORMAT DMBITFORMATTOKEN SLOTGROUP SLOT "\ +"SLOTCONFIG MOUNTLOGICAL MOUNTPHYSICAL DRIVECARTRIDGEACCESS "\ +"TASK TASKCARTRIDGE TASKDRIVE TASKLIBRARY MESSAGE REQUEST SYSTEM "\ +"STALEHANDLE DMSHAPEPRIORITY DMDENSITYPRIORITY "\ +"LIBRARYLIST DRIVELIST CARTRIDGELIST " cmd="select * from \\\"MM\\\";" cmd="$cmd select \\\"ApplicationName\\\",length(\\\"Password\\\") from \\\"MMPASSWORD\\\";" @@ -551,7 +551,7 @@ for table in $object; do cmd="$cmd select * from \\\"$table\\\";" done -/bin/su - $PGADMIN -c "PGPASSFILE=${PGPASS} ; export PGPASSFILE ; /bin/echo \"$cmd\" | /usr/bin/psql -h $PGHOST -p $PGPORT -d $DBNAME -U $PGUSER -e" 2>&1 | /bin/gzip -f > $OUTDATABASE +/bin/su - $PGADMIN -c "PGPASSFILE=${PGPASS} ; export PGPASSFILE ; /bin/echo \"$cmd\" | $PGBIN/psql -h $PGHOST -p $PGPORT -d $DBNAME -U $PGUSER -e" 2>&1 | /bin/gzip -f > $OUTDATABASE echo "------------------- media manager service -----------" >>$REPORT echo "" >>$REPORT 2>&1 diff --git a/usr/src/lib/mms/mgmt/common/mgmt_mm.c b/usr/src/lib/mms/mgmt/common/mgmt_mm.c index a009be5b2a..7581432ffa 100644 --- a/usr/src/lib/mms/mgmt/common/mgmt_mm.c +++ b/usr/src/lib/mms/mgmt/common/mgmt_mm.c @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -314,7 +314,6 @@ mms_mgmt_init_host(nvlist_t *opts, nvlist_t **errs) char *pass = NULL; char *hosttype = NULL; char cfgvar[2048]; - char *bufp; char buf[2048]; int i; nvlist_t *init_errs = NULL; @@ -440,7 +439,7 @@ mms_mgmt_init_host(nvlist_t *opts, nvlist_t **errs) if (st == ENOENT) { st = nvlist_lookup_string(opts, O_DBDIR, &val); if (st == 0) { - (void) snprintf(buf, sizeof (buf), "%s/%s", + (void) snprintf(buf, sizeof (buf), "%s/../%s", val, "log"); st = nvlist_add_string(opts, O_DBLOG, buf); } @@ -480,20 +479,10 @@ mms_mgmt_init_host(nvlist_t *opts, nvlist_t **errs) MGMT_ADD_OPTERR(init_errs, O_DBDIR, st); goto done; } else { - /* - * currently storing up to data in SMF. - * Change to parent dir for creating subdirs. - */ - bufp = strrchr(cfgvar, '/'); - if (bufp != NULL) { - if (strcmp(bufp, "/data") == 0) { - *bufp = '\0'; - } - } (void) nvlist_add_string(opts, O_DBDIR, cfgvar); /* fixed path for log dir */ - (void) strlcat(cfgvar, "/log", sizeof (cfgvar)); + (void) strlcat(cfgvar, "/../log", sizeof (cfgvar)); (void) nvlist_add_string(opts, O_DBLOG, cfgvar); } st = mms_cfg_getvar(MMS_CFG_MM_DB_PORT, cfgvar); diff --git a/usr/src/lib/mms/mgmt/common/mgmt_mmsdb.c b/usr/src/lib/mms/mgmt/common/mgmt_mmsdb.c index c401837164..9f97b9dcf1 100644 --- a/usr/src/lib/mms/mgmt/common/mgmt_mmsdb.c +++ b/usr/src/lib/mms/mgmt/common/mgmt_mmsdb.c @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -41,6 +41,7 @@ static char *_SrcFile = __FILE__; #define HERE _SrcFile, __LINE__ +#define MMS_MGMT_PGA ".pga" typedef struct { char port[10]; @@ -55,7 +56,6 @@ typedef struct { } mmsdb_opts_t; /* If this path changes, make sure similar changes are made to mmsexplorer */ -static char *db_cli = "/var/mms/db/.pga"; static char db_cli_env[1024]; static int get_db_user(char *buf, int buflen, uid_t *uid, gid_t *gid); @@ -141,7 +141,7 @@ create_db_dirs(char *dbpath, uid_t uid, gid_t gid, nvlist_t *errs) { int st; struct stat64 statbuf; - char *dbsubdirs[] = {"data", "dump", "log", NULL}; + char *dbsubdirs[] = {"dump", "log", NULL}; int i; char buf[2048]; @@ -164,7 +164,7 @@ create_db_dirs(char *dbpath, uid_t uid, gid_t gid, nvlist_t *errs) } for (i = 0; dbsubdirs[i] != NULL; i++) { - (void) snprintf(buf, sizeof (buf), "%s/%s", dbpath, + (void) snprintf(buf, sizeof (buf), "%s/../%s", dbpath, dbsubdirs[i]); st = create_dir(buf, 0711, NULL, uid, NULL, gid); if (st != 0) { @@ -197,19 +197,17 @@ mgmt_db_init(void) } /* see if we've been initialized already, bail if so */ - (void) snprintf(buf, sizeof (buf), "%s/data/postgresql.conf", - opts.path); + (void) snprintf(buf, sizeof (buf), "%s/postgresql.conf", opts.path); st = access(buf, F_OK); if (st == 0) { return (0); } (void) snprintf(dbbuf, sizeof (dbbuf), "%s/initdb", opts.bindir); - (void) snprintf(buf, sizeof (buf), "%s/data", opts.path); cmd[0] = dbbuf; cmd[1] = "-D"; - cmd[2] = buf; + cmd[2] = opts.path; cmd[3] = NULL; pid = exec_mgmt_cmd(NULL, NULL, opts.dbuid, opts.dbgid, @@ -227,7 +225,6 @@ mgmt_get_db_opts(mmsdb_opts_t *opts) struct passwd pwd; struct passwd *pwdp; char buf[2048]; - char *bufp; if (opts == NULL) { return (MMS_MGMT_NOARG); @@ -235,14 +232,6 @@ mgmt_get_db_opts(mmsdb_opts_t *opts) st = mms_cfg_getvar(MMS_CFG_DB_DATA, opts->path); if (st == 0) { - /* - * The *data* dir is stored in SMF. We need the - * parent thereof. - */ - bufp = strrchr(opts->path, '/'); - if (bufp) { - *bufp = '\0'; - } st = mms_cfg_getvar(MMS_CFG_MM_DB_USER, opts->user); } if (st == 0) { @@ -257,16 +246,10 @@ mgmt_get_db_opts(mmsdb_opts_t *opts) if (st == 0) { st = mms_cfg_getvar(MMS_CFG_DB_BIN, opts->bindir); } -#ifdef MMS_VAR_CFG - if (st == 0) { - st = mms_cfg_getvar(MMS_CFG_DB_LOG, opts->logdir); - } -#else if (st == 0) { (void) snprintf(opts->logdir, sizeof (opts->logdir), - "%s/log", opts->path); + "%s/../log", opts->path); } -#endif /* MMS_VAR_CFG */ if (st != 0) { return (st); @@ -281,8 +264,8 @@ mgmt_get_db_opts(mmsdb_opts_t *opts) opts->dbgid = pwdp->pw_gid; /* set the envvar for PGPASSFILE */ - (void) snprintf(db_cli_env, sizeof (db_cli_env), "PGPASSFILE=%s", - db_cli); + (void) snprintf(db_cli_env, sizeof (db_cli_env), + "PGPASSFILE=%s/../%s", opts->path, MMS_MGMT_PGA); st = putenv(db_cli_env); return (st); @@ -359,17 +342,9 @@ mgmt_db_create(int initialize, int populate, nvlist_t *optlist) } /* check to see if files exist, even if svc is stopped */ - (void) snprintf(buf, sizeof (buf), "%s/data/%s", opts.path, - "base"); + (void) snprintf(buf, sizeof (buf), "%s/base", opts.path); if (access(buf, F_OK) == 0) { return (EALREADY); - } else { - /* create the dirs we need */ - st = create_db_dirs(opts.path, opts.dbuid, opts.dbgid, - NULL); - if (st != 0) { - return (st); - } } st = mgmt_db_init(); @@ -380,6 +355,12 @@ mgmt_db_create(int initialize, int populate, nvlist_t *optlist) if (st != 0) { return (st); } + + /* create the dirs we need */ + st = create_db_dirs(opts.path, opts.dbuid, opts.dbgid, NULL); + if (st != 0) { + return (st); + } } /* @@ -392,7 +373,7 @@ mgmt_db_create(int initialize, int populate, nvlist_t *optlist) return (st); } - (void) snprintf(buf, sizeof (buf), "%s/%s", opts.path, "mmsdb"); + (void) snprintf(buf, sizeof (buf), "%s/../mmsdb", opts.path); st = get_dbver_from_optfile(buf, &oldver); if (st != 0) { if (st != ENOENT) { @@ -526,7 +507,7 @@ mgmt_db_check(void) return (st); } - (void) snprintf(dbbuf, sizeof (dbbuf), "%s/psql", dbbuf); + (void) snprintf(dbbuf, sizeof (dbbuf), "%s/psql", opts.bindir); cmd[0] = dbbuf; cmd[1] = "-h"; @@ -688,9 +669,9 @@ typedef struct { static pgconf_t pgconf_opts[] = { {"port", NULL}, {"log_directory", NULL}, - {"external_pid_file", "'(none)'"}, - {"log_destination", "stderr"}, - {"redirect_stderr", "on"}, + {"external_pid_file", "'postgres.pid'"}, + {"log_destination", "'stderr'"}, + {"logging_collector", "on"}, {"log_filename", "'log.%a'"}, {"log_rotation_size", "10000"}, {"log_truncate_on_rotation", "on"}, @@ -698,10 +679,9 @@ static pgconf_t pgconf_opts[] = { {"client_min_messages", "WARNING"}, {"log_min_messages", "INFO"}, {"log_disconnections", "on"}, + {"track_counts", "on"}, {"autovacuum", "on"}, - {"autovacuum_naptime", "1200"}, - {"stats_start_collector", "on"}, - {"stats_row_level", "on"} + {"autovacuum_naptime", "1200"} }; static int numpgopts = sizeof (pgconf_opts) / sizeof (pgconf_t); @@ -991,8 +971,8 @@ mk_cmds_from_optfile(mmsdb_opts_t *opts, char *path, int vers, char cmdtype, } /* create our cmdfile */ - (void) snprintf(buf, sizeof (buf), "/var/mms/db/mmsdbcmd-%c-%d", - cmdtype, time(NULL)); + (void) snprintf(buf, sizeof (buf), "%s/../mmsdbcmd-%c-%d", + opts->path, cmdtype, time(NULL)); fd = open(buf, O_CREAT|O_TRUNC|O_APPEND|O_WRONLY|O_NOFOLLOW|O_NOLINKS, 0600); @@ -1049,7 +1029,8 @@ mk_cmds_from_optfile(mmsdb_opts_t *opts, char *path, int vers, char cmdtype, pass = mms_net_cfg_read_pass_file(MMS_NET_CFG_HELLO_FILE); if (pass != NULL) { (void) fprintf(ofp, - "UPDATE \"MMPASSWORD\" SET \"Password\" = '%s';\n", + "UPDATE \"MMPASSWORD\" SET \"Password\" = '%s' " + "WHERE \"ApplicationName\" = 'MMS';\n", pass); free(pass); } @@ -1236,7 +1217,7 @@ mgmt_set_db_pass(char *dbpass, nvlist_t *errs) boolean_t ismd5 = B_FALSE; int fd = -1; int wr = 0; - char *tfile = "/var/mms/db/tsql"; + char file[MAXPATHLEN]; /* no provided password means use 'trust' */ if (dbpass) { @@ -1249,10 +1230,11 @@ mgmt_set_db_pass(char *dbpass, nvlist_t *errs) } /* tell Postgres to use the new password */ - fd = open64(tfile, O_CREAT|O_TRUNC|O_WRONLY, 0600); + (void) snprintf(file, sizeof (file), "%s/../tsql", opts.path); + fd = open64(file, O_CREAT|O_TRUNC|O_WRONLY, 0600); if (fd == -1) { st = errno; - MGMT_ADD_ERR(errs, tfile, st); + MGMT_ADD_ERR(errs, file, st); return (st); } @@ -1265,19 +1247,19 @@ mgmt_set_db_pass(char *dbpass, nvlist_t *errs) (void) close(fd); if (wr == -1) { - MGMT_ADD_ERR(errs, tfile, EIO); - (void) unlink(tfile); + MGMT_ADD_ERR(errs, file, EIO); + (void) unlink(file); return (EIO); } - st = mgmt_db_sql_exec(tfile, &opts); + st = mgmt_db_sql_exec(file, &opts); if (st != 0) { MGMT_ADD_ERR(errs, "postgres failure", st); - (void) unlink(tfile); + (void) unlink(file); return (st); } - (void) unlink(tfile); + (void) unlink(file); /* next, set up the conf file */ st = update_pghba(ismd5, &opts, errs); @@ -1286,10 +1268,12 @@ mgmt_set_db_pass(char *dbpass, nvlist_t *errs) } /* write the PGPASSFILE */ - fd = open64(db_cli, O_CREAT|O_TRUNC|O_WRONLY, 0600); + (void) snprintf(file, sizeof (file), "%s/../%s", + opts.path, MMS_MGMT_PGA); + fd = open64(file, O_CREAT|O_TRUNC|O_WRONLY, 0600); if (fd == -1) { st = errno; - MGMT_ADD_ERR(errs, db_cli, st); + MGMT_ADD_ERR(errs, file, st); return (st); } (void) fchown(fd, opts.dbuid, opts.dbgid); @@ -1299,8 +1283,8 @@ mgmt_set_db_pass(char *dbpass, nvlist_t *errs) (void) close(fd); if (wr == -1) { - MGMT_ADD_ERR(errs, db_cli, EIO); - (void) unlink(db_cli); + MGMT_ADD_ERR(errs, file, EIO); + (void) unlink(file); return (EIO); } @@ -1338,8 +1322,8 @@ update_pghba(boolean_t ismd5, mmsdb_opts_t *dbopts, nvlist_t *errs) return (MMS_MGMT_NOARG); } - (void) snprintf(confpath, sizeof (confpath), "%s/data/%s", dbopts->path, - "pg_hba.conf"); + (void) snprintf(confpath, sizeof (confpath), "%s/pg_hba.conf", + dbopts->path); st = stat64(confpath, &statbuf); if (st != 0) { diff --git a/usr/src/lib/mms/pg/Makefile.com b/usr/src/lib/mms/pg/Makefile.com index 0475118b39..df35a01ebb 100644 --- a/usr/src/lib/mms/pg/Makefile.com +++ b/usr/src/lib/mms/pg/Makefile.com @@ -19,7 +19,7 @@ # CDDL HEADER END # # -# Copyright 2008 Sun Microsystems, Inc. All rights reserved. +# Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # @@ -49,7 +49,7 @@ CCFLAGS += $(C_BIGPICFLAGS) CPPFLAGS += -DMMS_OPENSSL CPPFLAGS += -I$(SRCDIR) -I$(SRC)/common/mms/mms CPPFLAGS += -I$(SRC)/lib/mms/mms/common -CPPFLAGS += -I/usr/include/pgsql/server +CPPFLAGS += -I/usr/postgres/8.3/include/server C99MODE = $(C99_ENABLE) diff --git a/usr/src/lib/mms/pg/common/mapfile-vers b/usr/src/lib/mms/pg/common/mapfile-vers index c166e634e3..d4035e1b6f 100644 --- a/usr/src/lib/mms/pg/common/mapfile-vers +++ b/usr/src/lib/mms/pg/common/mapfile-vers @@ -20,7 +20,7 @@ # # -# Copyright 2008 Sun Microsystems, Inc. All rights reserved. +# Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # @@ -35,6 +35,7 @@ SUNWprivate_1.1 { pg_detoast_datum = extern; MemoryContextAlloc = extern; CurrentMemoryContext = extern; + Pg_magic_func = extern; local: *; }; diff --git a/usr/src/lib/mms/pg/common/pg_host_ident.c b/usr/src/lib/mms/pg/common/pg_host_ident.c index 92d500e938..15ec693c91 100644 --- a/usr/src/lib/mms/pg/common/pg_host_ident.c +++ b/usr/src/lib/mms/pg/common/pg_host_ident.c @@ -18,22 +18,20 @@ * * CDDL HEADER END * - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include <postgres.h> #include <fmgr.h> -#ifdef PG_MODULE_MAGIC PG_MODULE_MAGIC; -#endif #include <string.h> #include "mms_network.h" #include "host_ident.h" /* - * Postgres server library for MMS client ip mms_address. + * Postgres server library for MMS client ip address. */ PG_FUNCTION_INFO_V1(pg_host_ident); @@ -41,13 +39,13 @@ PG_FUNCTION_INFO_V1(pg_host_ident); Datum pg_host_ident(PG_FUNCTION_ARGS) { - text *pg_host_str; - text *pg_ident; - int len; - char host_str[MMS_HOST_IDENT_LEN+1]; - char host[MMS_HOST_IDENT_LEN+1]; - char ip[MMS_IP_IDENT_LEN+1]; - char *ident; + void *pg_host_str; + void *pg_ident; + int32 len; + char host_str[MMS_HOST_IDENT_LEN+1]; + char host[MMS_HOST_IDENT_LEN+1]; + char ip[MMS_IP_IDENT_LEN+1]; + char *ident; /* test for null arg */ if (PG_NARGS() != 1 || PG_ARGISNULL(0)) { @@ -56,13 +54,12 @@ pg_host_ident(PG_FUNCTION_ARGS) } /* get pointer to arg */ - /* LINTED: pointer cast may result in improper alignment */ - if ((pg_host_str = PG_GETARG_TEXT_P(0)) == NULL) { + if ((pg_host_str = (void *) PG_GETARG_TEXT_P(0)) == NULL) { /* LINTED: end-of-loop code not reached */ PG_RETURN_NULL(); } - /* get pointer to string */ + /* check for null pointer */ if (VARDATA(pg_host_str) == NULL) { /* LINTED: end-of-loop code not reached */ PG_RETURN_NULL(); @@ -70,8 +67,7 @@ pg_host_ident(PG_FUNCTION_ARGS) /* get string length */ len = VARSIZE(pg_host_str) - VARHDRSZ; - if (len < 1 || len > sizeof (host_str) || - len > (MMS_HOST_IDENT_LEN+1)) { + if (len < 1 || len >= sizeof (host_str)) { /* LINTED: end-of-loop code not reached */ PG_RETURN_NULL(); } @@ -80,20 +76,19 @@ pg_host_ident(PG_FUNCTION_ARGS) (void) memcpy(host_str, VARDATA(pg_host_str), len); host_str[len] = '\0'; /* must do!!! */ - /* find ident - either host name or ip mms_address */ + /* find ident (ip address), host_str is a host name or ip address */ if ((ident = mms_host_ident(host_str, host, ip)) == NULL) { /* LINTED: end-of-loop code not reached */ PG_RETURN_NULL(); } - /* ident is what mm uses internally (ip mms_address or host name) */ + /* ident is what mm uses internally (ip address) */ len = VARHDRSZ + strlen(ident); - if ((pg_ident = (text*)palloc(len)) == NULL) { + if ((pg_ident = (void *) palloc(len)) == NULL) { /* LINTED: end-of-loop code not reached */ PG_RETURN_NULL(); } - (void) memset(pg_ident, 0, len); - VARATT_SIZEP(pg_ident) = len; + SET_VARSIZE(pg_ident, len); /* don't copy string null terminator, pg string struct has length */ (void) memcpy(VARDATA(pg_ident), ident, strlen(ident)); diff --git a/usr/src/lib/mms/pg/common/pg_uuid.c b/usr/src/lib/mms/pg/common/pg_uuid.c index b1617a7278..e99bf3fe52 100644 --- a/usr/src/lib/mms/pg/common/pg_uuid.c +++ b/usr/src/lib/mms/pg/common/pg_uuid.c @@ -18,16 +18,13 @@ * * CDDL HEADER END * - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include <postgres.h> #include <fmgr.h> -#ifdef PG_MODULE_MAGIC -PG_MODULE_MAGIC; -#endif #include <string.h> #include <sys/types.h> #include <sys/uuid.h> @@ -50,19 +47,17 @@ PG_FUNCTION_INFO_V1(pg_get_uuid); Datum pg_get_uuid(PG_FUNCTION_ARGS) { - text *pg_uuid; - int len; - uuid_t uuid; - char buf[UUID_POSTGRES_LEN+1]; + void *pg_uuid; + int32 len; + uuid_t uuid; + char buf[UUID_POSTGRES_LEN+1]; len = VARHDRSZ + UUID_POSTGRES_LEN; - pg_uuid = (text*)palloc(len); - if (pg_uuid == NULL) { + if ((pg_uuid = (void *) palloc(len)) == NULL) { /* LINTED: end-of-loop code not reached */ PG_RETURN_NULL(); } - (void) memset(pg_uuid, 0, len); - VARATT_SIZEP(pg_uuid) = len; + SET_VARSIZE(pg_uuid, len); /* cefa7a9c-1dd2-11b2-8350-880020adbeef */ uuid_clear(uuid); diff --git a/usr/src/pkgdefs/SUNWmmsu/depend b/usr/src/pkgdefs/SUNWmmsu/depend index 2a94cec4fb..b3277142ee 100644 --- a/usr/src/pkgdefs/SUNWmmsu/depend +++ b/usr/src/pkgdefs/SUNWmmsu/depend @@ -19,7 +19,7 @@ # CDDL HEADER END # # -# Copyright 2008 Sun Microsystems, Inc. All rights reserved. +# Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # #ident "@(#)depend 1.1 08/06/25 SMI" @@ -51,5 +51,6 @@ P SUNWcsu Core Solaris, (Usr) P SUNWcsd Core Solaris Devices P SUNWcsl Core Solaris Libraries P SUNWlxml The XML library -P SUNWpostgr-libs The shared libraries required for any PostgreSQL clients +P SUNWpostgr-83-server PostgreSQL database server +P SUNWpostgr-83-client PostgreSQL client tools P SUNWopensslr OpenSSL (Root) diff --git a/usr/src/tools/scripts/check_rtime.pl b/usr/src/tools/scripts/check_rtime.pl index 8ef2041cfe..494f37eb49 100644 --- a/usr/src/tools/scripts/check_rtime.pl +++ b/usr/src/tools/scripts/check_rtime.pl @@ -21,7 +21,7 @@ # # -# Copyright 2008 Sun Microsystems, Inc. All rights reserved. +# Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # @@ -173,7 +173,8 @@ $SkipUnusedSearchPath = qr{ /usr/sfw/lib.*\ from\ .*libcrypto\.so\.0\.9\.8 | # non-OSNet /usr/sfw/lib.*\ from\ .*libnetsnmp\.so\.5 | # non-OSNet /usr/sfw/lib.*\ from\ .*libgcc_s\.so\.1 | # non-OSNet - /usr.*\ from\ .*tst\.gcc\.exe # gcc built + /usr.*\ from\ .*tst\.gcc\.exe | # gcc built + /usr/postgres/8.3/lib.*\ from\ .*libpq\.so\.5 # non-OSNET }x; # Skip "unreferenced object=" ldd(1) diagnostics. @@ -195,7 +196,7 @@ $SkipUnrefObject = qr{ /lib.*\ of\ .*libssl3\.so | # non-OSNET /lib.*\ of\ .*libxml2\.so\.2 | # non-OSNET /lib.*\ of\ .*libxslt\.so\.1 | # non-OSNET - /lib.*\ of\ .*libpq\.so\.4 # non-OSNET + /lib.*\ of\ .*libpq\.so\.4 # non-OSNET }x; # Define any files that should only have unused (ldd -u) processing. |