home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 December / PCWorld_1998-12_cd.iso / software / sybase / ASA / asa60.exe / data1.cab / scripts_files / upgrade.sql < prev    next >
Text File  |  1998-07-27  |  30KB  |  1,050 lines

  1. --  ************************************************************************
  2. --  *       Copyright (C) 1998 by Sybase Inc.  All rights                   *
  3. --  *       reserved. No part of this software may be reproduced            *
  4. --  *       in any form or by any means - graphic, electronic or            *
  5. --  *       mechanical, including photocopying, recording, taping           *
  6. --  *       or information storage and retrieval systems - except           *
  7. --  *       with the written permission of Sybase Inc.                      *
  8. --  *************************************************************************
  9. --
  10. --  WARNING: This is a program generated file. Do not edit.
  11. --
  12.     
  13.     
  14.     
  15.  
  16. CREATE VARIABLE @page_size        smallint 
  17. go
  18. CREATE VARIABLE @encryption        char(1)
  19. go
  20. CREATE VARIABLE @blank_padding        char(1)
  21. go
  22. CREATE VARIABLE @case_sensitivity    char(1)
  23. go
  24. CREATE VARIABLE @default_collation    char(10)
  25. go
  26. CREATE VARIABLE @database_version    smallint
  27. go
  28. CREATE VARIABLE @sysinfo_exists        char(1)
  29. go
  30. CREATE VARIABLE @avoid_view_collisions    char(1)
  31. go
  32. set @database_version = @newest_database_version
  33. go
  34. if @upgrade_type <=  10  then
  35.   begin
  36.     declare num int;
  37.     
  38.     select count(*) into num from SYS.SYSTABLE 
  39.     where table_name='SYSPUBLICATION' and creator=0;
  40.     if num = 1 then
  41.     select count(*) into num from SYS.SYSPUBLICATION;
  42.     if num = 0 then
  43.         alter table SYS.SYSTABLE modify replicate null;
  44.         update SYS.SYSTABLE set replicate='N';
  45.         commit;
  46.         alter table SYS.SYSTABLE modify replicate not null;
  47.         commit;
  48.     end if
  49.     end if
  50.   end
  51. end if
  52. go
  53. if exists( select * from SYS.SYSTABLE where table_name = 'SYSINFO' and
  54.     creator = 0 ) then
  55.     SET @sysinfo_exists = 'Y';
  56.     SELECT page_size, encryption, blank_padding, case_sensitivity, default_collation 
  57.       INTO @page_size, @encryption, @blank_padding, @case_sensitivity, @default_collation 
  58.     FROM SYS.SYSINFO; 
  59. else 
  60.     set @sysinfo_exists = 'N';
  61. end if
  62. go
  63. SET @avoid_view_collisions = 'N'
  64. go
  65. if exists( select * from SYS.SYSTABLE where table_name = 'SYSCOLUMNS' and
  66.     creator = 0 and table_type = 'VIEW' ) THEN
  67.     drop view SYS.SYSCOLUMNS;
  68. else
  69.     set @avoid_view_collisions = 'Y';
  70. end if
  71. go
  72. if exists( select * from SYS.SYSTABLE where table_name = 'SYSINDEXES' and
  73.     creator = 0 and table_type = 'VIEW' )  THEN
  74.     drop view SYS.SYSINDEXES;
  75. else
  76.     SET @avoid_view_collisions = 'Y';
  77. end if
  78. go
  79. begin
  80.     for dropviews as viewcurs cursor for select table_name from SYS.SYSTABLE 
  81.         where creator = 0 and table_type = 'VIEW'
  82.     do
  83.     execute immediate with quotes 'drop view  "SYS"."' ||  table_name || '"';
  84.     end for;
  85. end
  86. go
  87. commit work
  88. go
  89.     
  90. drop table SYS.DUMMY
  91. go
  92. if @sysinfo_exists = 'Y' then
  93.     drop table SYS.SYSINFO;
  94. end if
  95. go
  96.    
  97.   
  98. if @upgrade_type >=  3  then
  99.   begin
  100.     declare dbo_user_id int;
  101.     select user_id into dbo_user_id from SYS.SYSUSERPERM where user_name='dbo';
  102.     for dropviews as viewcurs cursor for 
  103.         select table_name from SYS.SYSTABLE 
  104.         where creator = dbo_user_id and table_type = 'VIEW'
  105.     do
  106.     execute immediate with quotes 'drop view  "dbo"."' ||  table_name || '"';
  107.     end for;
  108.     
  109.     for dropprocs as proccurs cursor for 
  110.         select proc_name from SYS.SYSPROCEDURE 
  111.         where creator = dbo_user_id
  112.     do
  113.     execute immediate with quotes 'drop procedure "dbo"."' ||  proc_name || '"';
  114.     end for;
  115.     
  116.     drop table dbo.RowGenerator;
  117.   end
  118. end if
  119. go
  120. commit work
  121. go
  122. if not exists( select * from SYS.SYSDOMAIN where domain_id =  24  ) then
  123.     if @upgrade_type <  5  then
  124.         insert into SYS.SYSDOMAIN values (  24 , 'bit' );
  125.     else
  126.         insert into SYS.SYSDOMAIN values (  24 , 'bit', -7, 1 );
  127.     end if;
  128.     commit work;
  129. end if
  130. go
  131. if not exists( select * from SYS.SYSDOMAIN where domain_id =  25  ) then
  132.     if @upgrade_type <  5  then
  133.         insert into SYS.SYSDOMAIN values (  25 , 'java.lang.Object' );
  134.     else
  135.         insert into SYS.SYSDOMAIN values (  25 , 'java.lang.Object', 0, NULL );
  136.     end if;
  137.     commit work;
  138. end if
  139. go
  140. if not exists( select * from SYS.SYSDOMAIN where domain_id =  20  ) then
  141.     if @upgrade_type <  5  then
  142.         insert into SYS.SYSDOMAIN values (  20 , 'bigint' );
  143.         insert into SYS.SYSDOMAIN values (  21 , 'unsigned int' );
  144.         insert into SYS.SYSDOMAIN values (  22 , 'unsigned smallint' );
  145.         insert into SYS.SYSDOMAIN values (  23 , 'unsigned bigint' );
  146.         insert into SYS.SYSDOMAIN values (  26 , 'java serialization' );
  147.         insert into SYS.SYSDOMAIN values (  27 , 'decimal' );
  148.         insert into SYS.SYSDOMAIN values (  28 , 'varbinary' );
  149.     else
  150.         insert into SYS.SYSDOMAIN values (  20 , 'bigint', -5, 20 );
  151.         insert into SYS.SYSDOMAIN values (  21 , 'unsigned int', -9, 10 );
  152.         insert into SYS.SYSDOMAIN values (  22 , 'unsigned smallint', -10, 5 );
  153.         insert into SYS.SYSDOMAIN values (  23 , 'unsigned bigint', -11, 21 );
  154.         insert into SYS.SYSDOMAIN values (  26 , 'java serialization', -4, NULL );
  155.         insert into SYS.SYSDOMAIN values (  27 , 'decimal', 2, NULL );
  156.         insert into SYS.SYSDOMAIN values (  28 , 'varbinary', -2, NULL );
  157.     end if;
  158.     commit work;
  159. end if
  160. go
  161. import upgrflag.sql
  162. if @upgrade_type <  3  then
  163.     begin
  164.     declare dbo_user_id        int;
  165.     
  166.     INSERT INTO SYS.SYSDOMAIN VALUES (  19 , 'tinyint' );
  167.     commit work;
  168.     
  169.     if @collation_size <= 1024 then
  170.         alter table SYS.SYSCOLLATION modify collation_order BINARY(1280);
  171.         update SYS.SYSCOLLATION SET collation_order = collation_order || @flags;
  172.         COMMIT WORK;
  173.     end if;
  174.     
  175.     select max( user_id )+1 into dbo_user_id from SYS.SYSUSERPERM;
  176.     insert into SYSUSERPERM values ( 
  177.         dbo_user_id, 'dbo', NULL, 'Y', 'Y', 'N', 'Y', NULL );
  178.     insert into SYSGROUP values ( dbo_user_id,  2  );
  179.     insert into SYSGROUP values (  0 , dbo_user_id );
  180.     commit work;
  181.     end
  182. end if
  183. go
  184.   
  185.     
  186. if @upgrade_type <  3  then
  187.     alter table SYS.SYSTABLE add replicate char(1);
  188.     update SYS.SYSTABLE set replicate = 'N';
  189.     alter table SYS.SYSTABLE modify replicate char(1) not null;
  190.     alter table SYS.SYSCOLUMN add "check" long varchar NULL;
  191.     alter table SYS.SYSCOLUMN add user_type smallint NULL;
  192.     alter table SYS.SYSUSERPERM add publishauth char(1);
  193.     update SYS.SYSUSERPERM set publishauth = 'N';
  194.     commit work;
  195.     alter table SYS.SYSUSERPERM modify publishauth char(1) NOT NULL;
  196.     commit work;
  197. end if
  198. go
  199. if @upgrade_type =  2  then 
  200.     alter table SYS.SYSPROCEDURE add replicate   char(1);
  201.     update SYS.SYSPROCEDURE set replicate = 'N';
  202.     alter table SYS.SYSPROCEDURE modify replicate NOT NULL;
  203.     alter table SYS.SYSPROCPARM ADD "default" long varchar NULL;
  204.     commit work;
  205. end if
  206. go
  207. if @upgrade_type <  3  then
  208. CREATE TABLE SYS.SYSPUBLICATION (
  209.     publication_id     smallint         NOT NULL,
  210.     creator         smallint         NOT NULL,
  211.     publication_name    char(128)       NOT NULL,
  212.     remarks        long varchar,
  213.     PRIMARY KEY (publication_id)
  214. )
  215.  ; 
  216. GRANT SELECT on SYS.SYSPUBLICATION to SYS
  217.  ; 
  218. create table SYS.SYSARTICLE (
  219.     publication_id     smallint         NOT NULL,
  220.     table_id         smallint         NOT NULL,
  221.     where_expr        long varchar,
  222.     subscribe_by_expr    long varchar,
  223.     query        char(1)        NOT NULL,
  224.     PRIMARY KEY (publication_id, table_id)
  225. )
  226.  ; 
  227. GRANT SELECT on SYS.SYSARTICLE to SYS
  228.  ; 
  229. create table SYS.SYSARTICLECOL (
  230.     publication_id     smallint         NOT NULL,
  231.     table_id         smallint         NOT NULL,
  232.     column_id         smallint         NOT NULL,
  233.     PRIMARY KEY (publication_id, table_id, column_id)
  234. )
  235.  ; 
  236. GRANT SELECT on SYS.SYSARTICLECOL to SYS
  237.  ; 
  238. create table SYS.SYSREMOTEUSER (
  239.     user_id         smallint         NOT NULL,
  240.     consolidate        char(1)        NOT NULL,
  241.     type_id        smallint    NOT NULL,
  242.     address        long varchar    NOT NULL,
  243.     frequency        char(1)        NOT NULL,
  244.     send_time        time,
  245.     log_send        numeric(20,0)    NOT NULL,
  246.     time_sent        timestamp,
  247.     log_sent        numeric(20,0)    NOT NULL,
  248.     confirm_sent    numeric(20,0)    NOT NULL,
  249.     send_count        integer        NOT NULL,
  250.     resend_count    integer        NOT NULL,
  251.     time_received    timestamp,
  252.     log_received    numeric(20,0)    NOT NULL,
  253.     confirm_received    numeric(20,0),
  254.     receive_count    integer        NOT NULL,
  255.     rereceive_count    integer        NOT NULL,
  256.     PRIMARY KEY (user_id)
  257. )
  258.  ; 
  259. GRANT SELECT on SYS.SYSREMOTEUSER to SYS
  260.  ; 
  261. create table SYS.SYSSUBSCRIPTION (
  262.     publication_id     smallint         NOT NULL,
  263.     user_id         smallint         NOT NULL,
  264.     subscribe_by    char(128)    NOT NULL,
  265.     created        numeric(20,0)    NOT NULL,
  266.     started        numeric(20,0),
  267.     PRIMARY KEY (publication_id, user_id, subscribe_by)
  268. )
  269.  ; 
  270. GRANT SELECT on SYS.SYSSUBSCRIPTION to SYS
  271.  ; 
  272. CREATE table SYS.SYSUSERMESSAGES (
  273.         error    int        NOT NULL,    
  274.         uid         smallint         NOT NULL,
  275.         description varchar(255)    NOT NULL,
  276.         langid    smallint    NOT NULL,
  277.         unique (error,langid)
  278.         )
  279.  ; 
  280. GRANT SELECT on SYS.SYSUSERMESSAGES TO SYS, PUBLIC
  281.  ; 
  282.     
  283. CREATE table SYS.SYSUSERTYPE (
  284.         type_id        smallint    NOT NULL,
  285.         creator         smallint         NOT NULL,
  286.         domain_id        smallint    NOT NULL,
  287.         nulls        char(1)        NOT NULL,
  288.         width        smallint    NOT NULL,
  289.         scale        smallint    NOT NULL,
  290.         type_name        char(128)    NOT NULL,
  291.         "default"        long varchar    NULL,
  292.         "check"        long varchar    NULL,
  293.         format_str      char(128),
  294.         super_type_id    smallint    NULL,
  295.         unique    (type_name),
  296.         primary key (type_id)
  297.         )
  298.  ; 
  299. ALTER TABLE SYS.SYSUSERTYPE ADD FOREIGN KEY super_type_id references
  300.     SYS.SYSUSERTYPE( type_id )
  301.  ; 
  302. GRANT SELECT on SYS.SYSUSERTYPE TO SYS, PUBLIC
  303.  ; 
  304. CREATE table SYS.SYSEXTENT (
  305.         file_id    smallint    NOT NULL,
  306.             extent_id   smallint        NOT NULL,
  307.             first_page  int             NOT NULL,
  308.             last_page   int             NOT NULL,
  309.             file_name   long varchar    NOT NULL,
  310.         primary key (file_id, extent_id),
  311.         )
  312.  ; 
  313. GRANT SELECT on SYS.SYSEXTENT TO SYS, PUBLIC
  314.  ; 
  315. CREATE table SYS.SYSREMOTETYPE (
  316.         type_id        smallint        NOT NULL,
  317.         type_name        char(128)       NOT NULL,
  318.         publisher_address    long varchar    NOT NULL,
  319.         remarks        long varchar,
  320.         PRIMARY KEY (type_id)
  321.     )
  322.  ; 
  323. GRANT SELECT on SYS.SYSREMOTETYPE to SYS
  324.  ; 
  325. end if
  326. go
  327. if @upgrade_type <  3  then
  328. ALTER table SYSPUBLICATION add foreign key for SYSUSERPERM
  329.             ( creator is user_id )
  330.  ; 
  331.         
  332. ALTER table SYSARTICLE add foreign key for SYSPUBLICATION
  333.  ; 
  334.     
  335. ALTER table SYSARTICLE add foreign key for SYSTABLE
  336.  ; 
  337.     
  338. ALTER table SYSARTICLECOL add foreign key for SYSARTICLE
  339.  ; 
  340.     
  341. ALTER table SYSARTICLECOL add foreign key for SYSCOLUMN
  342.  ; 
  343.     
  344. ALTER table SYSREMOTEUSER add foreign key for SYSUSERPERM
  345.  ; 
  346.     
  347. ALTER table SYSSUBSCRIPTION add foreign key for SYSPUBLICATION
  348.  ; 
  349.     
  350. ALTER table SYSSUBSCRIPTION add foreign key for SYSREMOTEUSER
  351.  ; 
  352.     
  353. ALTER table SYSREMOTEUSER add foreign key for SYSREMOTETYPE
  354.  ; 
  355. ALTER table SYSUSERTYPE add foreign key for SYSUSERPERM
  356.         (creator is user_id)
  357.  ; 
  358. ALTER table SYSUSERTYPE add foreign key for SYSDOMAIN
  359.  ; 
  360. ALTER table SYSCOLUMN add foreign key for SYSUSERTYPE
  361.         (user_type is type_id)
  362.  ; 
  363. ALTER table SYSEXTENT add foreign key for SYSFILE
  364.  ; 
  365. end if
  366. go
  367. if @upgrade_type <=  3  then
  368.     alter table SYS.SYSCOLUMN add format_str char(128) NULL;
  369.     
  370.     if @upgrade_type =  3  then
  371.     
  372.     
  373.     alter table SYS.SYSUSERTYPE add format_str char(128) NULL;
  374.     alter table SYS.SYSUSERTYPE delete foreign key SYSUSERPERM;
  375.     alter table SYS.SYSUSERTYPE 
  376.             add foreign key for sysuserperm
  377.             (creator IS user_id);
  378.     alter table SYS.SYSREMOTE delete frequency_units,
  379.             delete send_frequency;
  380.     alter table SYS.SYSREMOTE rename SYSREMOTEUSER;
  381.     end if;
  382.     
  383.     if @upgrade_type <=  4  then
  384.     alter table SYS.SYSUSERPERM add remotedbaauth char(1);
  385.     update SYS.SYSUSERPERM set remotedbaauth = 'N';
  386.     commit work;
  387.     alter table SYS.SYSUSERPERM
  388.             modify remotedbaauth char(1) NOT NULL;
  389.     end if
  390. end if
  391. go
  392. if @upgrade_type <  3  then
  393.     INSERT INTO SYS.SYSREMOTETYPE ( type_id, type_name, publisher_address )
  394.         VALUES ( 0, 'FILE', '' )
  395.  ; 
  396.     INSERT INTO SYS.SYSREMOTETYPE ( type_id, type_name, publisher_address )
  397.         VALUES ( 1, 'MAPI', '' )
  398.  ; 
  399.     INSERT INTO SYS.SYSREMOTETYPE ( type_id, type_name, publisher_address )
  400.         VALUES ( 2, 'VIM', '' )
  401.  ; 
  402.     INSERT INTO SYS.SYSREMOTETYPE ( type_id, type_name, publisher_address )
  403.         VALUES ( 3, 'SMTP', '' )
  404.  ; 
  405.     INSERT INTO SYS.SYSREMOTETYPE ( type_id, type_name, publisher_address )
  406.         VALUES ( 4, 'FTP', '' )
  407.  ; 
  408. else
  409.     begin
  410.     declare ftp_count int;
  411.     select count(*) into ftp_count from SYS.SYSREMOTETYPE where type_name = 'FTP';
  412.     if ftp_count = 0 then    
  413.         INSERT INTO SYS.SYSREMOTETYPE ( type_id, type_name, publisher_address )
  414.             VALUES ( 4, 'FTP', '' )
  415.     end if
  416.     end
  417. end if
  418. go
  419. if @upgrade_type =  3  then
  420.     insert into SYSREMOTETYPE (type_id, type_name, publisher_address)
  421.         select number(*), address_type, '' from SYSREMOTEUSER
  422.         group by address_type;
  423.     drop index remote_address;
  424.     alter table SYSREMOTEUSER
  425.         add    type_id            smallint,
  426.         add    log_send        numeric(20,0),
  427.         add    frequency        char(1),
  428.         add    send_time        time,
  429.         add    send_count        integer,
  430.         add    receive_count        integer;
  431.     alter table SYSREMOTEUSER
  432.         rename  user_type  to  consolidate;
  433.     update SYSREMOTEUSER u
  434.         set type_id = ( select type_id from SYSREMOTETYPE t
  435.             where t.type_name = u.address_type ),
  436.         consolidate = ( if consolidate = 'C' then 'Y' else 'N' endif ),
  437.         log_send = log_sent,
  438.                frequency = 'A',
  439.                send_count = 0,
  440.                receive_count = 0;
  441.     alter table SYSREMOTEUSER modify type_id NOT NULL,
  442.                   modify log_send NOT NULL,
  443.                   modify frequency NOT NULL,
  444.                   modify send_count NOT NULL,
  445.                   modify receive_count NOT NULL,
  446.                   delete address_type;
  447.     alter table SYSREMOTEUSER add foreign key for SYSREMOTETYPE;
  448.     create unique index remote_address on SYSREMOTEUSER
  449.     ( type_id, address );
  450. end if
  451. go
  452. if @upgrade_type <  5  then
  453.     GRANT DBA to dbo;
  454.     alter table SYS.SYSDOMAIN add type_id    smallint NULL;
  455.     alter table SYS.SYSDOMAIN add "precision"    smallint NULL;
  456. end if
  457. go
  458. UPDATE SYS.SYSDOMAIN set type_id = 5, "precision" = 5 where domain_id = 1
  459. go
  460. UPDATE SYS.SYSDOMAIN set type_id = 4, "precision" = 10 where domain_id = 2
  461. go
  462. UPDATE SYS.SYSDOMAIN set type_id = 2, "precision" = NULL where domain_id = 3
  463. go
  464. UPDATE SYS.SYSDOMAIN set type_id = 7, "precision" = 7 where domain_id = 4
  465. go
  466. UPDATE SYS.SYSDOMAIN set type_id = 8, "precision" = 15 where domain_id = 5
  467. go
  468. UPDATE SYS.SYSDOMAIN set type_id = 9, "precision" = NULL where domain_id = 6
  469. go
  470. UPDATE SYS.SYSDOMAIN set type_id = 1, "precision" = NULL where domain_id = 7
  471. go
  472. UPDATE SYS.SYSDOMAIN set type_id = 1, "precision" = NULL where domain_id = 8
  473. go
  474. UPDATE SYS.SYSDOMAIN set type_id = 12, "precision" = NULL where domain_id = 9
  475. go
  476. UPDATE SYS.SYSDOMAIN set type_id = -1, "precision" = NULL where domain_id = 10
  477. go
  478. UPDATE SYS.SYSDOMAIN set type_id = -2, "precision" = NULL where domain_id = 11
  479. go
  480. UPDATE SYS.SYSDOMAIN set type_id = -4, "precision" = NULL where domain_id = 12
  481. go
  482. UPDATE SYS.SYSDOMAIN set type_id = 11, "precision" = NULL where domain_id = 13
  483. go
  484. UPDATE SYS.SYSDOMAIN set type_id = 10, "precision" = NULL where domain_id = 14
  485. go
  486. UPDATE SYS.SYSDOMAIN set type_id = -6, "precision" = 3 where domain_id = 19
  487. go
  488. UPDATE SYS.SYSDOMAIN set type_id = -5, "precision" = 20 where domain_id = 20
  489. go
  490. UPDATE SYS.SYSDOMAIN set type_id = -9, "precision" = 10 where domain_id = 21
  491. go
  492. UPDATE SYS.SYSDOMAIN set type_id = -10, "precision" = 5 where domain_id = 22
  493. go
  494. UPDATE SYS.SYSDOMAIN set type_id = -11, "precision" = 21 where domain_id = 23
  495. go
  496. UPDATE SYS.SYSDOMAIN set type_id = -7, "precision" = 1 where domain_id = 24
  497. go
  498. UPDATE SYS.SYSDOMAIN set type_id = 0, "precision" = NULL where domain_id = 25
  499. go
  500. UPDATE SYS.SYSDOMAIN set type_id = -4, "precision" = NULL where domain_id = 26
  501. go
  502. UPDATE SYS.SYSDOMAIN set type_id = 2, "precision" = NULL where domain_id = 27
  503. go
  504. UPDATE SYS.SYSDOMAIN set type_id = -2, "precision" = NULL where domain_id = 28
  505. go
  506. if @upgrade_type <  5  then
  507.     alter table SYS.SYSDOMAIN modify type_id NOT NULL;
  508. end if
  509. go
  510. import saopts.sql
  511. if @upgrade_type <  6  then
  512.     ALTER TABLE SYS.SYSCOLPERM
  513.         ADD privilege_type smallint NULL,
  514.         ADD is_grantable char(1) NULL;
  515.     UPDATE SYS.SYSCOLPERM
  516.         SET privilege_type = 8, is_grantable = 'N';
  517.     UPDATE SYS.SYSCOLPERM SET is_grantable = 'Y'
  518.         WHERE EXISTS (SELECT 1 FROM SYS.SYSTABLEPERM TPERMS
  519.             WHERE TPERMS.ttable_id = SYS.SYSCOLPERM.table_id
  520.             AND TPERMS.grantee = SYS.SYSCOLPERM.grantee
  521.             AND TPERMS.grantor = SYS.SYSCOLPERM.grantor
  522.             AND TPERMS.updatecols = 'G');
  523.     ALTER TABLE SYS.SYSCOLPERM
  524.         MODIFY privilege_type NOT NULL;
  525.     ALTER TABLE SYS.SYSCOLPERM
  526.         MODIFY is_grantable NOT NULL;
  527.     ALTER TABLE SYS.SYSCOLPERM
  528.         DELETE PRIMARY KEY;
  529.     ALTER TABLE SYS.SYSCOLPERM
  530.         ADD PRIMARY KEY
  531.         ( table_id, grantee, grantor, column_id, privilege_type );
  532. end if
  533. go
  534. if @upgrade_type <  7  then
  535.     if @upgrade_type >  2  then
  536.     alter table SYS.SYSARTICLE add query char(1);
  537.     update SYS.SYSARTICLE set query = 'N';
  538.     alter table SYS.SYSARTICLE modify query NOT NULL;
  539.     end if
  540. end if
  541. go
  542. if @upgrade_type <=  8  then
  543. CREATE TABLE SYS.SYSSQLSERVERTYPE (
  544.         ss_user_type        smallint    NOT NULL,
  545.         ss_domain_id        smallint      NOT NULL,
  546.         ss_type_name        varchar(30)    NOT NULL,
  547.         primary_sa_domain_id    smallint    NOT NULL,
  548.         primary_sa_user_type    smallint    NULL,
  549.         PRIMARY KEY ( ss_user_type )
  550.     )
  551.  ; 
  552. GRANT SELECT on SYS.SYSSQLSERVERTYPE TO SYS, PUBLIC
  553.  ; 
  554. CREATE TABLE SYS.SYSTYPEMAP (
  555.         ss_user_type        smallint     NOT NULL,
  556.         sa_domain_id        smallint     NOT NULL,
  557.         sa_user_type        smallint    NULL,
  558.         nullable            char(1)    NULL
  559.     )
  560.  ; 
  561. GRANT SELECT on SYS.SYSTYPEMAP TO SYS, PUBLIC
  562.  ; 
  563. INSERT INTO SYS.SYSSQLSERVERTYPE
  564.     VALUES (  1 ,    47,    'char',         8 ,        NULL )
  565.  ;     
  566. INSERT INTO SYS.SYSSQLSERVERTYPE
  567.     VALUES (  2 ,    39,    'varchar',     9 ,        NULL )
  568.  ;     
  569. INSERT INTO SYS.SYSSQLSERVERTYPE
  570.     VALUES (  3 ,    45,    'binary',     11 ,        NULL )
  571.  ;     
  572. INSERT INTO SYS.SYSSQLSERVERTYPE
  573.     VALUES (  4 ,37,    'varbinary',     11 ,        NULL )
  574.  ;     
  575. INSERT INTO SYS.SYSSQLSERVERTYPE
  576.     VALUES (  5 ,    48,    'tinyint',     19 ,        NULL )
  577.  ;     
  578. INSERT INTO SYS.SYSSQLSERVERTYPE
  579.     VALUES (  6 ,    52,    'smallint',     1 ,        NULL )
  580.  ;     
  581. INSERT INTO SYS.SYSSQLSERVERTYPE
  582.     VALUES (  7 ,    56,    'int',         2 ,        NULL )
  583.  ;     
  584. INSERT INTO SYS.SYSSQLSERVERTYPE
  585.     VALUES (  8 ,    62,    'float',     5 ,        NULL )
  586.  ;     
  587. INSERT INTO SYS.SYSSQLSERVERTYPE
  588.     VALUES (  10 ,    63,    'numeric',     3 ,        NULL )
  589.  ;     
  590. INSERT INTO SYS.SYSSQLSERVERTYPE
  591.     VALUES (  11 ,    60,    'money',     3 ,        101 )
  592.  ;     
  593. INSERT INTO SYS.SYSSQLSERVERTYPE
  594.     VALUES (  12 ,    61,    'datetime',     13 ,   103 )
  595.  ;     
  596. INSERT INTO SYS.SYSSQLSERVERTYPE
  597.     VALUES (  13 ,    38,    'intn',         2 ,        NULL )
  598.  ;     
  599. INSERT INTO SYS.SYSSQLSERVERTYPE
  600.     VALUES (  14 ,    109,    'floatn',     5 ,        NULL )
  601.  ;     
  602. INSERT INTO SYS.SYSSQLSERVERTYPE
  603.     VALUES (  15 ,    111,    'datetimn',     13 ,   103 )
  604.  ;     
  605. INSERT INTO SYS.SYSSQLSERVERTYPE
  606.     VALUES (  16 ,    50,    'bit',         24 ,        NULL )
  607.  ;     
  608. INSERT INTO SYS.SYSSQLSERVERTYPE
  609.     VALUES (  17 ,    110,    'moneyn',     3 ,        101 )
  610.  ;     
  611. INSERT INTO SYS.SYSSQLSERVERTYPE
  612.     VALUES (  18 ,    39,    'sysname',     9 ,        108 )
  613.  ;     
  614. INSERT INTO SYS.SYSSQLSERVERTYPE
  615.     VALUES (  19 ,    35,    'text',         10 , 105 )
  616.  ;     
  617. INSERT INTO SYS.SYSSQLSERVERTYPE
  618.     VALUES (  20 ,    34,    'image',     12 ,  106 )
  619.  ;     
  620. INSERT INTO SYS.SYSSQLSERVERTYPE
  621.     VALUES (  21 ,122,    'smallmoney',     3 ,        102 )
  622.  ;     
  623. INSERT INTO SYS.SYSSQLSERVERTYPE
  624.     VALUES (  22 ,58,    'smalldatetime', 13 ,   104 )
  625.  ;     
  626. INSERT INTO SYS.SYSSQLSERVERTYPE
  627.     VALUES (  23 ,    59,    'real',         4 ,        NULL )
  628.  ; 
  629.  ;     
  630.  ;     
  631. INSERT INTO SYS.SYSSQLSERVERTYPE
  632.     VALUES (  26 ,    55,    'decimal',     3 ,        NULL )
  633.  ;     
  634. INSERT INTO SYS.SYSSQLSERVERTYPE
  635.     VALUES (  27 ,    106,    'decimaln',     3 ,        NULL )
  636.  ;     
  637. INSERT INTO SYS.SYSSQLSERVERTYPE
  638.     VALUES (  28 ,    108,    'numericn',     3 ,        NULL )
  639.  ;     
  640. INSERT INTO SYS.SYSSQLSERVERTYPE
  641.     VALUES (  80 ,37,    'timestamp',     13 ,   NULL )
  642.  ;     
  643. INSERT INTO SYS.SYSTYPEMAP
  644.     VALUES (  6 ,     1 ,        NULL,    NULL )
  645.  ;     
  646. INSERT INTO SYS.SYSTYPEMAP
  647.     VALUES (  7 ,     2 ,        NULL,    'N' )
  648.  ;     
  649. INSERT INTO SYS.SYSTYPEMAP
  650.     VALUES (  13 ,     2 ,        NULL,    'Y' )
  651.  ;     
  652. INSERT INTO SYS.SYSTYPEMAP
  653.     VALUES (  10 ,     3 ,        NULL,    'N' )
  654.  ;     
  655. INSERT INTO SYS.SYSTYPEMAP
  656.     VALUES (  28 ,     3 ,        NULL,    'Y' )
  657.  ;     
  658. INSERT INTO SYS.SYSTYPEMAP
  659.     VALUES (  23 ,     4 ,        NULL,    NULL )
  660.  ;     
  661. INSERT INTO SYS.SYSTYPEMAP
  662.     VALUES (  8 ,     5 ,        NULL,    'N' )
  663.  ;     
  664. INSERT INTO SYS.SYSTYPEMAP
  665.     VALUES (  14 ,     5 ,        NULL,    'Y' )
  666.  ;     
  667. INSERT INTO SYS.SYSTYPEMAP
  668.     VALUES (  12 ,     6 ,        NULL,    'N' )
  669.  ;     
  670. INSERT INTO SYS.SYSTYPEMAP
  671.     VALUES (  15 ,     6 ,        NULL,    'Y' )
  672.  ;     
  673. INSERT INTO SYS.SYSTYPEMAP
  674.     VALUES (  1 ,     7 ,        NULL,    NULL )
  675.  ;     
  676. INSERT INTO SYS.SYSTYPEMAP
  677.     VALUES (  2 ,     9 ,        NULL,    NULL )
  678.  ;     
  679. INSERT INTO SYS.SYSTYPEMAP
  680.     VALUES (  1 ,     8 ,        NULL,    NULL )
  681.  ;     
  682. INSERT INTO SYS.SYSTYPEMAP
  683.     VALUES (  19 ,     10 , NULL,    NULL )
  684.  ;     
  685. INSERT INTO SYS.SYSTYPEMAP
  686.     VALUES (  3 ,     11 ,        NULL,    NULL )
  687.  ;     
  688. INSERT INTO SYS.SYSTYPEMAP
  689.     VALUES (  20 ,     12 ,  NULL,    NULL )
  690.  ;     
  691. INSERT INTO SYS.SYSTYPEMAP
  692.     VALUES (  80 , 13 ,   NULL,    NULL )
  693.  ;     
  694. INSERT INTO SYS.SYSTYPEMAP
  695.     VALUES (  12 ,     14 ,        NULL,    'N' )
  696.  ;     
  697. INSERT INTO SYS.SYSTYPEMAP
  698.     VALUES (  15 ,     14 ,        NULL,    'Y' )
  699.  ;     
  700. INSERT INTO SYS.SYSTYPEMAP
  701.     VALUES (  5 ,     19 ,        NULL,    NULL )
  702.  ;     
  703. INSERT INTO SYS.SYSTYPEMAP
  704.     VALUES (  16 ,     24 ,        NULL,    NULL )
  705.  ; 
  706. INSERT INTO SYS.SYSTYPEMAP
  707.     VALUES (  11 ,     3 ,        101,     'N' )
  708.  ;    
  709. INSERT INTO SYS.SYSTYPEMAP
  710.     VALUES (  17 ,     3 ,        101,     'Y' )
  711.  ;    
  712. INSERT INTO SYS.SYSTYPEMAP
  713.     VALUES (  21 , 3 ,    102,     NULL )
  714.  ;   
  715. INSERT INTO SYS.SYSTYPEMAP
  716.     VALUES (  12 ,  13 ,   103,     'N' )
  717.  ;    
  718. INSERT INTO SYS.SYSTYPEMAP
  719.     VALUES (  15 ,  13 ,   103,     'Y' )
  720.  ;    
  721. INSERT INTO SYS.SYSTYPEMAP
  722.     VALUES (  22 , 13 ,  104,  NULL )
  723.  ;   
  724. INSERT INTO SYS.SYSTYPEMAP
  725.     VALUES (  19 ,     10 , 105,     NULL )
  726.  ;   
  727. INSERT INTO SYS.SYSTYPEMAP
  728.     VALUES (  20 ,     12 ,  106,     NULL )
  729.  ;   
  730. INSERT INTO SYS.SYSTYPEMAP
  731.     VALUES (  18 ,     9 ,        108,     NULL )
  732.  ;   
  733. COMMIT WORK
  734.  ; 
  735. ALTER table SYSTYPEMAP add foreign key for SYSDOMAIN
  736.         (sa_domain_id is domain_id)
  737.  ; 
  738. end if
  739. go
  740. if @upgrade_type <=  9  then
  741. CREATE TABLE SYS.SYSLOGIN (
  742.         integrated_login_id        char(128)     NOT NULL,
  743.         login_uid             smallint          NOT NULL,
  744.         remarks            long varchar,
  745.         PRIMARY KEY ( integrated_login_id )
  746.     )
  747.  ; 
  748. end if
  749. go
  750. if @upgrade_type <=  10  then
  751.     alter table SYS.SYSPROCPARM add user_type int;
  752.     create table SYS.SYSJAR (
  753.             jar_id         smallint        not null,
  754.             creator         smallint         not null,
  755.             jar_name    long varchar    not null,
  756.             jar_file    long varchar,
  757.             create_time    timestamp    not null,
  758.             update_time    timestamp    not null,
  759.             remarks        long varchar,
  760.             primary key ( jar_id )
  761.         );
  762.     create unique index jar_name on SYS.SYSJAR ( jar_name );
  763.     
  764.     create table SYS.SYSJAVACLASS (
  765.             class_id         smallint     not null,
  766.             replaced_by         smallint ,
  767.             creator         smallint         not null,
  768.             jar_id         smallint ,
  769.             type_id        smallint,
  770.             class_name        long varchar    not null,
  771.             public        char(1)        not null,
  772.             component_id     smallint ,
  773.             create_time        timestamp    not null,
  774.             update_time        timestamp    not null,
  775.             class_descriptor    long binary,
  776.             remarks            long varchar,
  777.             primary key ( class_id ),
  778.             foreign key ( replaced_by )
  779.                 references SYS.SYSJAVACLASS( class_id )
  780.         );
  781.     
  782.     create table SYS.SYSJARCOMPONENT (
  783.             component_id         smallint     not null,
  784.             jar_id             smallint ,
  785.             component_name        long varchar,
  786.             component_type        char(1),
  787.             create_time            timestamp    not null,
  788.             contents            long binary,
  789.             remarks            long varchar,
  790.             primary key ( component_id )
  791.         );
  792.     
  793.     if @upgrade_type >=  3  then
  794.     alter table SYSUSERTYPE add super_type_id smallint NULL;
  795.     
  796.     alter table SYSUSERTYPE add foreign key super_type_id references
  797.             SYSUSERTYPE( type_id );
  798.     end if;
  799.     alter table SYSJARCOMPONENT add foreign key for SYSJAR;
  800.     
  801.     alter table SYSJAVACLASS add foreign key for SYSJAR;
  802.     
  803.     alter table SYSJAVACLASS add foreign key for SYSJARCOMPONENT;
  804.     
  805.     alter table SYSJAVACLASS add foreign key for SYSUSERPERM
  806.         ( creator is user_id );
  807.     
  808.     alter table SYSJAVACLASS add foreign key for SYSUSERTYPE
  809. end if
  810. go
  811. if @upgrade_type <=  10  then
  812.     alter table SYS.SYSCOLUMN add column_type char(1) NULL;
  813.     commit work;
  814. end if
  815. go
  816. ALTER TABLE SYS.SYSTABLE ADD existing_obj    char(1)
  817. go
  818. ALTER TABLE SYS.SYSTABLE ADD remote_location    long varchar
  819. go
  820. ALTER TABLE SYS.SYSTABLE ADD remote_objtype    char(1)
  821. go
  822. ALTER TABLE SYS.SYSTABLE ADD srvid        int
  823. go
  824. ALTER TABLE SYS.SYSCOLUMN ADD remote_name varchar(128)
  825. go
  826. ALTER TABLE SYS.SYSCOLUMN ADD remote_type  smallint 
  827. go
  828. if @upgrade_type <=  10  then
  829.     create table SYS.SYSCOLLATIONMAPPINGS (
  830.             collation_label    char(10)    not null,
  831.         collation_name  char(128)        not null,
  832.         cs_label    char(128),
  833.         so_case_label    char(128),
  834.         so_caseless_label char(128),
  835.         jdk_label char(128),
  836.         primary key ( collation_label ),
  837.     );
  838.     commit work;
  839. end if
  840. go
  841. import collsqmp.sql
  842. import custmap.sql
  843. commit work;
  844. import sysviews.sql
  845. CREATE TABLE SYS.DUMMY ( dummy_col INT NOT NULL )
  846. go
  847. INSERT INTO SYS.DUMMY VALUES ( 0 )
  848. go
  849. GRANT SELECT on SYS.DUMMY to SYS
  850. go
  851.     
  852. CREATE TABLE SYSINFO (
  853.         page_size        smallint    NOT NULL,
  854.         encryption        char(1)        NOT NULL,
  855.         blank_padding    char(1)        NOT NULL,
  856.         case_sensitivity    char(1)        NOT NULL,
  857.         default_collation    char(10),
  858.         database_version    smallint    NOT NULL,
  859.         classes_version    char(10)
  860.     )
  861. go
  862. INSERT INTO SYSINFO VALUES
  863.     (@page_size,
  864.      @encryption,
  865.      @blank_padding,
  866.      @case_sensitivity,
  867.      @default_collation,
  868.      @database_version,
  869.      '1.1.3' )
  870. go
  871. GRANT SELECT on SYS.SYSINFO to SYS
  872. go
  873. COMMIT WORK
  874. go
  875. if @upgrade_type <=  10  then
  876.     update SYS.SYSCOLUMN set column_type = 'R';
  877.     commit work;
  878.     alter table SYS.SYSCOLUMN modify column_type NOT NULL;
  879.     commit work;
  880. end if
  881. go
  882. if @upgrade_type <  4  then
  883. CREATE DOMAIN money            numeric(19,4)
  884.  ; 
  885. CREATE DOMAIN smallmoney    numeric(10,4)
  886.  ; 
  887. CREATE DOMAIN datetime            timestamp
  888.  ; 
  889. CREATE DOMAIN smalldatetime        timestamp
  890.  ; 
  891. CREATE DOMAIN text        long varchar
  892.  ; 
  893. CREATE DOMAIN image            long binary
  894.  ; 
  895. CREATE DOMAIN oldbit            tinyint
  896.  ; 
  897. CREATE DOMAIN sysname            varchar(30) not null
  898.  ; 
  899. end if
  900. go
  901. import  dbovws50.sql  
  902. if @upgrade_type <  3  then
  903. CREATE UNIQUE INDEX publication_name ON SYSPUBLICATION
  904.     ( publication_name, creator )
  905.  ; 
  906.     
  907. CREATE UNIQUE INDEX remote_address ON SYSREMOTEUSER
  908.     ( type_id, address )
  909.  ; 
  910.     
  911. CREATE INDEX remote_frequency ON SYSREMOTEUSER
  912.     ( frequency, send_time )
  913.  ; 
  914.     
  915. CREATE UNIQUE INDEX remote_type ON SYSREMOTETYPE
  916.     ( type_name )
  917.  ; 
  918.     
  919. COMMIT WORK
  920.  ; 
  921. end if
  922. go
  923. if not exists ( select * from SYS.SYSUSERPERM where user_name = 'rs_systabgroup' ) then
  924.     if @upgrade_type <=  10  then
  925.     
  926. grant connect to rs_systabgroup
  927.  ; 
  928. grant group to rs_systabgroup
  929.  ; 
  930. grant resource to rs_systabgroup
  931.  ; 
  932. commit work
  933.  ; 
  934.     
  935. create table rs_systabgroup.rs_lastcommit (
  936.     origin          int         primary key,
  937.     origin_qid      binary(36),
  938.     secondary_qid   binary(36),
  939.     origin_time     datetime,
  940.     commit_time     datetime )
  941.  ; 
  942.     
  943. create table rs_systabgroup.rs_threads (
  944.     id            int        primary key,
  945.     seq            int )
  946.  ; 
  947. commit work
  948.  ; 
  949.     end if
  950. end if
  951. go
  952. import  sybprc50.sql   
  953. CREATE TABLE SYS.SYSSERVERS (
  954.         srvid        int     NOT NULL,
  955.         srvname        varchar(128)    NOT NULL,
  956.         srvclass        long varchar    NOT NULL,
  957.         srvinfo        long varchar,
  958.         srvreadonly        char(1)        NOT NULL,
  959.         PRIMARY KEY ( srvid )
  960.     )
  961. go
  962. GRANT SELECT on SYS.SYSSERVERS TO SYS
  963. go
  964. CREATE TABLE SYS.SYSEXTERNLOGINS (
  965.         user_id         smallint      NOT NULL,
  966.         srvid        int     NOT NULL,
  967.         remote_login    varchar(128),
  968.         remote_password    varbinary(128),
  969.         PRIMARY KEY ( user_id, srvid )
  970.     )
  971. go
  972. GRANT SELECT on SYS.SYSEXTERNLOGINS TO SYS
  973. go
  974. alter table SYS.SYSEXTERNLOGINS add foreign key for SYS.SYSUSERPERM
  975.     ( user_id is user_id )
  976. go
  977.     
  978. alter table SYS.SYSEXTERNLOGINS add foreign key for SYS.SYSSERVERS
  979.     ( srvid is srvid )
  980. go
  981.     
  982. alter table SYS.SYSTABLE add foreign key for SYS.SYSSERVERS
  983.     ( srvid is srvid )
  984. go
  985. commit work
  986. go
  987. if @upgrade_type <=  3  then
  988.     
  989.     
  990.     
  991.     begin   
  992.     declare username VARCHAR(130);    
  993.     declare password VARCHAR(130);    
  994.     declare pwdcurs insensitive cursor for select user_name, password
  995.         from SYS.SYSUSERPERM where password is not NULL;
  996.     
  997.     alter table SYS.SYSUSERPERM modify password binary(128) NULL;
  998.     commit;
  999.     
  1000.     open pwdcurs with hold;
  1001.     PassWordLoop:
  1002.      loop
  1003.         fetch next pwdcurs into username, password;
  1004.         if SQLSTATE = '02000' then
  1005.            leave PassWordLoop; 
  1006.         end if;
  1007.         execute immediate with quotes 'grant connect to "' || username ||
  1008.                   '" identified by "' || password || '"';
  1009.     end loop;
  1010.     close pwdcurs;
  1011.             
  1012.     alter table SYS.SYSUSERPERM modify password binary(36) NULL;
  1013.     commit;
  1014.     end
  1015. end if
  1016. go
  1017. if @upgrade_type <=  10  then
  1018.     create table dbo.EXCLUDEOBJECT (
  1019.         name char( 128 ),
  1020.         type char(1),
  1021.         PRIMARY KEY( name, type )
  1022.         );
  1023.     grant select on dbo.EXCLUDEOBJECT to PUBLIC;
  1024.     commit;
  1025. end if
  1026. go
  1027. import mkexclud.sql
  1028. import instjava.sql
  1029. commit
  1030. go
  1031. DROP VARIABLE @page_size        
  1032. go
  1033. DROP VARIABLE @encryption        
  1034. go
  1035. DROP VARIABLE @blank_padding    
  1036. go
  1037. DROP VARIABLE @case_sensitivity    
  1038. go
  1039. DROP VARIABLE @default_collation
  1040. go
  1041. DROP VARIABLE @database_version    
  1042. go
  1043. DROP VARIABLE @sysinfo_exists    
  1044. go
  1045. DROP VARIABLE @avoid_view_collisions
  1046. go
  1047. DROP VARIABLE @install_java_classes
  1048. go
  1049. DROP VARIABLE @flags
  1050.