IBX Test Suite Copyright MWA Software 2016-2021 Starting Tests Client API Version = 4.0 Firebird Environment Variable = /opt/firebird/4.0.2 Firebird Bin Directory = /opt/firebird/4.0.2/bin Firebird Conf Directory = /opt/firebird/4.0.2/ Firebird Client Library Path = /opt/firebird/4.0.2/lib/libfbclient.so Running Test 01: Open and read from Employee Database Read dataset unidirectional buffering Row No = 1 EMP_NO = 12 FIRST_NAME = Terri LAST_NAME = Lee PHONE_EXT = 256 HIRE_DATE = 01/5/1990 DEPT_NO = 000 JOB_CODE = Admin JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 53793 FULL_NAME = Lee, Terri DEPT_PATH = Corporate Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset = UTF8 Codepage = 65001) Row No = 2 EMP_NO = 105 FIRST_NAME = Oliver H. LAST_NAME = Bender PHONE_EXT = 255 HIRE_DATE = 08/10/1992 DEPT_NO = 000 JOB_CODE = CEO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 212850 FULL_NAME = Bender, Oliver H. DEPT_PATH = Corporate Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset = UTF8 Codepage = 65001) Row No = 3 EMP_NO = 85 FIRST_NAME = Mary S. LAST_NAME = MacDonald PHONE_EXT = 477 HIRE_DATE = 01/6/1992 DEPT_NO = 100 JOB_CODE = VP JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 111262.5 FULL_NAME = MacDonald, Mary S. DEPT_PATH = Corporate Headquarters / Sales and Marketing (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100 (Charset = UTF8 Codepage = 65001) Row No = 4 EMP_NO = 127 FIRST_NAME = Michael LAST_NAME = Yanowski PHONE_EXT = 492 HIRE_DATE = 09/8/1993 DEPT_NO = 100 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 44000 FULL_NAME = Yanowski, Michael DEPT_PATH = Corporate Headquarters / Sales and Marketing (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100 (Charset = UTF8 Codepage = 65001) Row No = 5 EMP_NO = 8 FIRST_NAME = Leslie LAST_NAME = Johnson PHONE_EXT = 410 HIRE_DATE = 05/4/1989 DEPT_NO = 180 JOB_CODE = Mktg JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 64635 FULL_NAME = Johnson, Leslie DEPT_PATH = Corporate Headquarters / Sales and Marketing / Marketing (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;180 (Charset = UTF8 Codepage = 65001) Row No = 6 EMP_NO = 52 FIRST_NAME = Carol LAST_NAME = Nordstrom PHONE_EXT = 420 HIRE_DATE = 02/10/1991 DEPT_NO = 180 JOB_CODE = PRel JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 42742.5 FULL_NAME = Nordstrom, Carol DEPT_PATH = Corporate Headquarters / Sales and Marketing / Marketing (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;180 (Charset = UTF8 Codepage = 65001) Row No = 7 EMP_NO = 5 FIRST_NAME = Kim LAST_NAME = Lambert PHONE_EXT = 22 HIRE_DATE = 06/2/1989 DEPT_NO = 130 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 102750 FULL_NAME = Lambert, Kim DEPT_PATH = Corporate Headquarters / Sales and Marketing / Field Office: East Coast (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;130 (Charset = UTF8 Codepage = 65001) Row No = 8 EMP_NO = 11 FIRST_NAME = K. J. LAST_NAME = Weston PHONE_EXT = 34 HIRE_DATE = 17/1/1990 DEPT_NO = 130 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 86292.94 FULL_NAME = Weston, K. J. DEPT_PATH = Corporate Headquarters / Sales and Marketing / Field Office: East Coast (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;130 (Charset = UTF8 Codepage = 65001) Row No = 9 EMP_NO = 72 FIRST_NAME = Claudia LAST_NAME = Sutherland PHONE_EXT = NULL HIRE_DATE = 20/4/1992 DEPT_NO = 140 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Canada SALARY = 100914 FULL_NAME = Sutherland, Claudia DEPT_PATH = Corporate Headquarters / Sales and Marketing / Field Office: Canada (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;140 (Charset = UTF8 Codepage = 65001) Row No = 10 EMP_NO = 34 FIRST_NAME = Janet LAST_NAME = Baldwin PHONE_EXT = 2 HIRE_DATE = 21/3/1991 DEPT_NO = 110 JOB_CODE = Sales JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 61637.81 FULL_NAME = Baldwin, Janet DEPT_PATH = Corporate Headquarters / Sales and Marketing / Pacific Rim Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;110 (Charset = UTF8 Codepage = 65001) Row No = 11 EMP_NO = 61 FIRST_NAME = Luke LAST_NAME = Leung PHONE_EXT = 3 HIRE_DATE = 18/2/1992 DEPT_NO = 110 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 68805 FULL_NAME = Leung, Luke DEPT_PATH = Corporate Headquarters / Sales and Marketing / Pacific Rim Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;110 (Charset = UTF8 Codepage = 65001) Row No = 12 EMP_NO = 110 FIRST_NAME = Yuki LAST_NAME = Ichida PHONE_EXT = 22 HIRE_DATE = 04/2/1993 DEPT_NO = 115 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = Japan SALARY = 6000000 FULL_NAME = Ichida, Yuki DEPT_PATH = Corporate Headquarters / Sales and Marketing / Pacific Rim Headquarters / Field Office: Japan (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;110;115 (Charset = UTF8 Codepage = 65001) Row No = 13 EMP_NO = 118 FIRST_NAME = Takashi LAST_NAME = Yamamoto PHONE_EXT = 23 HIRE_DATE = 01/7/1993 DEPT_NO = 115 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Japan SALARY = 7480000 FULL_NAME = Yamamoto, Takashi DEPT_PATH = Corporate Headquarters / Sales and Marketing / Pacific Rim Headquarters / Field Office: Japan (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;110;115 (Charset = UTF8 Codepage = 65001) Row No = 14 EMP_NO = 28 FIRST_NAME = Ann LAST_NAME = Bennet PHONE_EXT = 5 HIRE_DATE = 01/2/1991 DEPT_NO = 120 JOB_CODE = Admin JOB_GRADE = 5 JOB_COUNTRY = England SALARY = 22935 FULL_NAME = Bennet, Ann DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;120 (Charset = UTF8 Codepage = 65001) Row No = 15 EMP_NO = 36 FIRST_NAME = Roger LAST_NAME = Reeves PHONE_EXT = 6 HIRE_DATE = 25/4/1991 DEPT_NO = 120 JOB_CODE = Sales JOB_GRADE = 3 JOB_COUNTRY = England SALARY = 33620.63 FULL_NAME = Reeves, Roger DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;120 (Charset = UTF8 Codepage = 65001) Row No = 16 EMP_NO = 37 FIRST_NAME = Willie LAST_NAME = Stansbury PHONE_EXT = 7 HIRE_DATE = 25/4/1991 DEPT_NO = 120 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = England SALARY = 39224.06 FULL_NAME = Stansbury, Willie DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;120 (Charset = UTF8 Codepage = 65001) Row No = 17 EMP_NO = 141 FIRST_NAME = Pierre LAST_NAME = Osborne PHONE_EXT = NULL HIRE_DATE = 03/1/1994 DEPT_NO = 121 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Switzerland SALARY = 110000 FULL_NAME = Osborne, Pierre DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters / Field Office: Switzerland (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;120;121 (Charset = UTF8 Codepage = 65001) Row No = 18 EMP_NO = 134 FIRST_NAME = Jacques LAST_NAME = Glon PHONE_EXT = NULL HIRE_DATE = 23/8/1993 DEPT_NO = 123 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = France SALARY = 38500 FULL_NAME = Glon, Jacques DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters / Field Office: France (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;120;123 (Charset = UTF8 Codepage = 65001) Row No = 19 EMP_NO = 121 FIRST_NAME = Roberto LAST_NAME = Ferrari PHONE_EXT = 1 HIRE_DATE = 12/7/1993 DEPT_NO = 125 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Italy SALARY = 33000 FULL_NAME = Ferrari, Roberto DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters / Field Office: Italy (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;120;125 (Charset = UTF8 Codepage = 65001) Row No = 20 EMP_NO = 2 FIRST_NAME = Robert LAST_NAME = Nelson PHONE_EXT = 250 HIRE_DATE = 28/12/1988 DEPT_NO = 600 JOB_CODE = VP JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 105900 FULL_NAME = Nelson, Robert DEPT_PATH = Corporate Headquarters / Engineering (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600 (Charset = UTF8 Codepage = 65001) Row No = 21 EMP_NO = 109 FIRST_NAME = Kelly LAST_NAME = Brown PHONE_EXT = 202 HIRE_DATE = 04/2/1993 DEPT_NO = 600 JOB_CODE = Admin JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 27000 FULL_NAME = Brown, Kelly DEPT_PATH = Corporate Headquarters / Engineering (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600 (Charset = UTF8 Codepage = 65001) Row No = 22 EMP_NO = 4 FIRST_NAME = Bruce LAST_NAME = Young PHONE_EXT = 233 HIRE_DATE = 28/12/1988 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 97500 FULL_NAME = Young, Bruce DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Software Development (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;621 (Charset = UTF8 Codepage = 65001) Row No = 23 EMP_NO = 45 FIRST_NAME = Ashok LAST_NAME = Ramanathan PHONE_EXT = 209 HIRE_DATE = 01/8/1991 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 80689.5 FULL_NAME = Ramanathan, Ashok DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Software Development (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;621 (Charset = UTF8 Codepage = 65001) Row No = 24 EMP_NO = 83 FIRST_NAME = Dana LAST_NAME = Bishop PHONE_EXT = 290 HIRE_DATE = 01/6/1992 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 62550 FULL_NAME = Bishop, Dana DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Software Development (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;621 (Charset = UTF8 Codepage = 65001) Row No = 25 EMP_NO = 138 FIRST_NAME = T.J. LAST_NAME = Green PHONE_EXT = 218 HIRE_DATE = 01/11/1993 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 36000 FULL_NAME = Green, T.J. DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Software Development (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;621 (Charset = UTF8 Codepage = 65001) Row No = 26 EMP_NO = 9 FIRST_NAME = Phil LAST_NAME = Forest PHONE_EXT = 229 HIRE_DATE = 17/4/1989 DEPT_NO = 622 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 75060 FULL_NAME = Forest, Phil DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Quality Assurance (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;622 (Charset = UTF8 Codepage = 65001) Row No = 27 EMP_NO = 71 FIRST_NAME = Jennifer M. LAST_NAME = Burbank PHONE_EXT = 289 HIRE_DATE = 15/4/1992 DEPT_NO = 622 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 53167.5 FULL_NAME = Burbank, Jennifer M. DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Quality Assurance (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;622 (Charset = UTF8 Codepage = 65001) Row No = 28 EMP_NO = 145 FIRST_NAME = Mark LAST_NAME = Guckenheimer PHONE_EXT = 221 HIRE_DATE = 02/5/1994 DEPT_NO = 622 JOB_CODE = Eng JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 32000 FULL_NAME = Guckenheimer, Mark DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Quality Assurance (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;622 (Charset = UTF8 Codepage = 65001) Row No = 29 EMP_NO = 15 FIRST_NAME = Katherine LAST_NAME = Young PHONE_EXT = 231 HIRE_DATE = 14/6/1990 DEPT_NO = 623 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 67241.25 FULL_NAME = Young, Katherine DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Customer Support (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;623 (Charset = UTF8 Codepage = 65001) Row No = 30 EMP_NO = 29 FIRST_NAME = Roger LAST_NAME = De Souza PHONE_EXT = 288 HIRE_DATE = 18/2/1991 DEPT_NO = 623 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 69482.63 FULL_NAME = De Souza, Roger DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Customer Support (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;623 (Charset = UTF8 Codepage = 65001) Row No = 31 EMP_NO = 44 FIRST_NAME = Leslie LAST_NAME = Phong PHONE_EXT = 216 HIRE_DATE = 03/6/1991 DEPT_NO = 623 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 56034.38 FULL_NAME = Phong, Leslie DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Customer Support (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;623 (Charset = UTF8 Codepage = 65001) Row No = 32 EMP_NO = 114 FIRST_NAME = Bill LAST_NAME = Parker PHONE_EXT = 247 HIRE_DATE = 01/6/1993 DEPT_NO = 623 JOB_CODE = Eng JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 35000 FULL_NAME = Parker, Bill DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Customer Support (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;623 (Charset = UTF8 Codepage = 65001) Row No = 33 EMP_NO = 136 FIRST_NAME = Scott LAST_NAME = Johnson PHONE_EXT = 265 HIRE_DATE = 13/9/1993 DEPT_NO = 623 JOB_CODE = Doc JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 60000 FULL_NAME = Johnson, Scott DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Customer Support (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;623 (Charset = UTF8 Codepage = 65001) Row No = 34 EMP_NO = 65 FIRST_NAME = Sue Anne LAST_NAME = O'Brien PHONE_EXT = 877 HIRE_DATE = 23/3/1992 DEPT_NO = 670 JOB_CODE = Admin JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 31275 FULL_NAME = O'Brien, Sue Anne DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;670 (Charset = UTF8 Codepage = 65001) Row No = 35 EMP_NO = 107 FIRST_NAME = Kevin LAST_NAME = Cook PHONE_EXT = 894 HIRE_DATE = 01/2/1993 DEPT_NO = 670 JOB_CODE = Dir JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 111262.5 FULL_NAME = Cook, Kevin DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;670 (Charset = UTF8 Codepage = 65001) Row No = 36 EMP_NO = 20 FIRST_NAME = Chris LAST_NAME = Papadopoulos PHONE_EXT = 887 HIRE_DATE = 01/1/1990 DEPT_NO = 671 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 89655 FULL_NAME = Papadopoulos, Chris DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Research and Development (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;671 (Charset = UTF8 Codepage = 65001) Row No = 37 EMP_NO = 24 FIRST_NAME = Pete LAST_NAME = Fisher PHONE_EXT = 888 HIRE_DATE = 12/9/1990 DEPT_NO = 671 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 81810.19 FULL_NAME = Fisher, Pete DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Research and Development (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;671 (Charset = UTF8 Codepage = 65001) Row No = 38 EMP_NO = 113 FIRST_NAME = Mary LAST_NAME = Page PHONE_EXT = 845 HIRE_DATE = 12/4/1993 DEPT_NO = 671 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 48000 FULL_NAME = Page, Mary DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Research and Development (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;671 (Charset = UTF8 Codepage = 65001) Row No = 39 EMP_NO = 94 FIRST_NAME = Randy LAST_NAME = Williams PHONE_EXT = 892 HIRE_DATE = 08/8/1992 DEPT_NO = 672 JOB_CODE = Mngr JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 56295 FULL_NAME = Williams, Randy DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Customer Services (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;672 (Charset = UTF8 Codepage = 65001) Row No = 40 EMP_NO = 144 FIRST_NAME = John LAST_NAME = Montgomery PHONE_EXT = 820 HIRE_DATE = 30/3/1994 DEPT_NO = 672 JOB_CODE = Eng JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 35000 FULL_NAME = Montgomery, John DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Customer Services (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;672 (Charset = UTF8 Codepage = 65001) Row No = 41 EMP_NO = 14 FIRST_NAME = Stewart LAST_NAME = Hall PHONE_EXT = 227 HIRE_DATE = 04/6/1990 DEPT_NO = 900 JOB_CODE = Finan JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 69482.63 FULL_NAME = Hall, Stewart DEPT_PATH = Corporate Headquarters / Finance (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;900 (Charset = UTF8 Codepage = 65001) Row No = 42 EMP_NO = 46 FIRST_NAME = Walter LAST_NAME = Steadman PHONE_EXT = 210 HIRE_DATE = 09/8/1991 DEPT_NO = 900 JOB_CODE = CFO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 116100 FULL_NAME = Steadman, Walter DEPT_PATH = Corporate Headquarters / Finance (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;900 (Charset = UTF8 Codepage = 65001) Rows printed = 42 Current memory = 19,661,120 Delta memory = 14,464 Max memory = 19,783,104 Elapsed time= 0.027 sec Cpu = 0.000 sec Buffers = 2048 Reads = 2 Writes = 0 Fetches = 151 Selects = 0 Inserts = 0 Updates = 0 Deletes = 0 Reconnect Read dataset bidirectional buffering Row No = 1 EMP_NO = 12 FIRST_NAME = Terri LAST_NAME = Lee PHONE_EXT = 256 HIRE_DATE = 01/5/1990 DEPT_NO = 000 JOB_CODE = Admin JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 53793 FULL_NAME = Lee, Terri DEPT_PATH = Corporate Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset = UTF8 Codepage = 65001) Row No = 2 EMP_NO = 105 FIRST_NAME = Oliver H. LAST_NAME = Bender PHONE_EXT = 255 HIRE_DATE = 08/10/1992 DEPT_NO = 000 JOB_CODE = CEO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 212850 FULL_NAME = Bender, Oliver H. DEPT_PATH = Corporate Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset = UTF8 Codepage = 65001) Row No = 3 EMP_NO = 85 FIRST_NAME = Mary S. LAST_NAME = MacDonald PHONE_EXT = 477 HIRE_DATE = 01/6/1992 DEPT_NO = 100 JOB_CODE = VP JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 111262.5 FULL_NAME = MacDonald, Mary S. DEPT_PATH = Corporate Headquarters / Sales and Marketing (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100 (Charset = UTF8 Codepage = 65001) Row No = 4 EMP_NO = 127 FIRST_NAME = Michael LAST_NAME = Yanowski PHONE_EXT = 492 HIRE_DATE = 09/8/1993 DEPT_NO = 100 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 44000 FULL_NAME = Yanowski, Michael DEPT_PATH = Corporate Headquarters / Sales and Marketing (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100 (Charset = UTF8 Codepage = 65001) Row No = 5 EMP_NO = 8 FIRST_NAME = Leslie LAST_NAME = Johnson PHONE_EXT = 410 HIRE_DATE = 05/4/1989 DEPT_NO = 180 JOB_CODE = Mktg JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 64635 FULL_NAME = Johnson, Leslie DEPT_PATH = Corporate Headquarters / Sales and Marketing / Marketing (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;180 (Charset = UTF8 Codepage = 65001) Row No = 6 EMP_NO = 52 FIRST_NAME = Carol LAST_NAME = Nordstrom PHONE_EXT = 420 HIRE_DATE = 02/10/1991 DEPT_NO = 180 JOB_CODE = PRel JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 42742.5 FULL_NAME = Nordstrom, Carol DEPT_PATH = Corporate Headquarters / Sales and Marketing / Marketing (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;180 (Charset = UTF8 Codepage = 65001) Row No = 7 EMP_NO = 5 FIRST_NAME = Kim LAST_NAME = Lambert PHONE_EXT = 22 HIRE_DATE = 06/2/1989 DEPT_NO = 130 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 102750 FULL_NAME = Lambert, Kim DEPT_PATH = Corporate Headquarters / Sales and Marketing / Field Office: East Coast (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;130 (Charset = UTF8 Codepage = 65001) Row No = 8 EMP_NO = 11 FIRST_NAME = K. J. LAST_NAME = Weston PHONE_EXT = 34 HIRE_DATE = 17/1/1990 DEPT_NO = 130 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 86292.94 FULL_NAME = Weston, K. J. DEPT_PATH = Corporate Headquarters / Sales and Marketing / Field Office: East Coast (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;130 (Charset = UTF8 Codepage = 65001) Row No = 9 EMP_NO = 72 FIRST_NAME = Claudia LAST_NAME = Sutherland PHONE_EXT = NULL HIRE_DATE = 20/4/1992 DEPT_NO = 140 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Canada SALARY = 100914 FULL_NAME = Sutherland, Claudia DEPT_PATH = Corporate Headquarters / Sales and Marketing / Field Office: Canada (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;140 (Charset = UTF8 Codepage = 65001) Row No = 10 EMP_NO = 34 FIRST_NAME = Janet LAST_NAME = Baldwin PHONE_EXT = 2 HIRE_DATE = 21/3/1991 DEPT_NO = 110 JOB_CODE = Sales JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 61637.81 FULL_NAME = Baldwin, Janet DEPT_PATH = Corporate Headquarters / Sales and Marketing / Pacific Rim Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;110 (Charset = UTF8 Codepage = 65001) Row No = 11 EMP_NO = 61 FIRST_NAME = Luke LAST_NAME = Leung PHONE_EXT = 3 HIRE_DATE = 18/2/1992 DEPT_NO = 110 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 68805 FULL_NAME = Leung, Luke DEPT_PATH = Corporate Headquarters / Sales and Marketing / Pacific Rim Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;110 (Charset = UTF8 Codepage = 65001) Row No = 12 EMP_NO = 110 FIRST_NAME = Yuki LAST_NAME = Ichida PHONE_EXT = 22 HIRE_DATE = 04/2/1993 DEPT_NO = 115 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = Japan SALARY = 6000000 FULL_NAME = Ichida, Yuki DEPT_PATH = Corporate Headquarters / Sales and Marketing / Pacific Rim Headquarters / Field Office: Japan (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;110;115 (Charset = UTF8 Codepage = 65001) Row No = 13 EMP_NO = 118 FIRST_NAME = Takashi LAST_NAME = Yamamoto PHONE_EXT = 23 HIRE_DATE = 01/7/1993 DEPT_NO = 115 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Japan SALARY = 7480000 FULL_NAME = Yamamoto, Takashi DEPT_PATH = Corporate Headquarters / Sales and Marketing / Pacific Rim Headquarters / Field Office: Japan (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;110;115 (Charset = UTF8 Codepage = 65001) Row No = 14 EMP_NO = 28 FIRST_NAME = Ann LAST_NAME = Bennet PHONE_EXT = 5 HIRE_DATE = 01/2/1991 DEPT_NO = 120 JOB_CODE = Admin JOB_GRADE = 5 JOB_COUNTRY = England SALARY = 22935 FULL_NAME = Bennet, Ann DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;120 (Charset = UTF8 Codepage = 65001) Row No = 15 EMP_NO = 36 FIRST_NAME = Roger LAST_NAME = Reeves PHONE_EXT = 6 HIRE_DATE = 25/4/1991 DEPT_NO = 120 JOB_CODE = Sales JOB_GRADE = 3 JOB_COUNTRY = England SALARY = 33620.63 FULL_NAME = Reeves, Roger DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;120 (Charset = UTF8 Codepage = 65001) Row No = 16 EMP_NO = 37 FIRST_NAME = Willie LAST_NAME = Stansbury PHONE_EXT = 7 HIRE_DATE = 25/4/1991 DEPT_NO = 120 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = England SALARY = 39224.06 FULL_NAME = Stansbury, Willie DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;120 (Charset = UTF8 Codepage = 65001) Row No = 17 EMP_NO = 141 FIRST_NAME = Pierre LAST_NAME = Osborne PHONE_EXT = NULL HIRE_DATE = 03/1/1994 DEPT_NO = 121 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Switzerland SALARY = 110000 FULL_NAME = Osborne, Pierre DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters / Field Office: Switzerland (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;120;121 (Charset = UTF8 Codepage = 65001) Row No = 18 EMP_NO = 134 FIRST_NAME = Jacques LAST_NAME = Glon PHONE_EXT = NULL HIRE_DATE = 23/8/1993 DEPT_NO = 123 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = France SALARY = 38500 FULL_NAME = Glon, Jacques DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters / Field Office: France (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;120;123 (Charset = UTF8 Codepage = 65001) Row No = 19 EMP_NO = 121 FIRST_NAME = Roberto LAST_NAME = Ferrari PHONE_EXT = 1 HIRE_DATE = 12/7/1993 DEPT_NO = 125 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Italy SALARY = 33000 FULL_NAME = Ferrari, Roberto DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters / Field Office: Italy (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;120;125 (Charset = UTF8 Codepage = 65001) Row No = 20 EMP_NO = 2 FIRST_NAME = Robert LAST_NAME = Nelson PHONE_EXT = 250 HIRE_DATE = 28/12/1988 DEPT_NO = 600 JOB_CODE = VP JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 105900 FULL_NAME = Nelson, Robert DEPT_PATH = Corporate Headquarters / Engineering (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600 (Charset = UTF8 Codepage = 65001) Row No = 21 EMP_NO = 109 FIRST_NAME = Kelly LAST_NAME = Brown PHONE_EXT = 202 HIRE_DATE = 04/2/1993 DEPT_NO = 600 JOB_CODE = Admin JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 27000 FULL_NAME = Brown, Kelly DEPT_PATH = Corporate Headquarters / Engineering (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600 (Charset = UTF8 Codepage = 65001) Row No = 22 EMP_NO = 4 FIRST_NAME = Bruce LAST_NAME = Young PHONE_EXT = 233 HIRE_DATE = 28/12/1988 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 97500 FULL_NAME = Young, Bruce DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Software Development (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;621 (Charset = UTF8 Codepage = 65001) Row No = 23 EMP_NO = 45 FIRST_NAME = Ashok LAST_NAME = Ramanathan PHONE_EXT = 209 HIRE_DATE = 01/8/1991 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 80689.5 FULL_NAME = Ramanathan, Ashok DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Software Development (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;621 (Charset = UTF8 Codepage = 65001) Row No = 24 EMP_NO = 83 FIRST_NAME = Dana LAST_NAME = Bishop PHONE_EXT = 290 HIRE_DATE = 01/6/1992 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 62550 FULL_NAME = Bishop, Dana DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Software Development (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;621 (Charset = UTF8 Codepage = 65001) Row No = 25 EMP_NO = 138 FIRST_NAME = T.J. LAST_NAME = Green PHONE_EXT = 218 HIRE_DATE = 01/11/1993 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 36000 FULL_NAME = Green, T.J. DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Software Development (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;621 (Charset = UTF8 Codepage = 65001) Row No = 26 EMP_NO = 9 FIRST_NAME = Phil LAST_NAME = Forest PHONE_EXT = 229 HIRE_DATE = 17/4/1989 DEPT_NO = 622 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 75060 FULL_NAME = Forest, Phil DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Quality Assurance (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;622 (Charset = UTF8 Codepage = 65001) Row No = 27 EMP_NO = 71 FIRST_NAME = Jennifer M. LAST_NAME = Burbank PHONE_EXT = 289 HIRE_DATE = 15/4/1992 DEPT_NO = 622 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 53167.5 FULL_NAME = Burbank, Jennifer M. DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Quality Assurance (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;622 (Charset = UTF8 Codepage = 65001) Row No = 28 EMP_NO = 145 FIRST_NAME = Mark LAST_NAME = Guckenheimer PHONE_EXT = 221 HIRE_DATE = 02/5/1994 DEPT_NO = 622 JOB_CODE = Eng JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 32000 FULL_NAME = Guckenheimer, Mark DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Quality Assurance (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;622 (Charset = UTF8 Codepage = 65001) Row No = 29 EMP_NO = 15 FIRST_NAME = Katherine LAST_NAME = Young PHONE_EXT = 231 HIRE_DATE = 14/6/1990 DEPT_NO = 623 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 67241.25 FULL_NAME = Young, Katherine DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Customer Support (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;623 (Charset = UTF8 Codepage = 65001) Row No = 30 EMP_NO = 29 FIRST_NAME = Roger LAST_NAME = De Souza PHONE_EXT = 288 HIRE_DATE = 18/2/1991 DEPT_NO = 623 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 69482.63 FULL_NAME = De Souza, Roger DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Customer Support (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;623 (Charset = UTF8 Codepage = 65001) Row No = 31 EMP_NO = 44 FIRST_NAME = Leslie LAST_NAME = Phong PHONE_EXT = 216 HIRE_DATE = 03/6/1991 DEPT_NO = 623 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 56034.38 FULL_NAME = Phong, Leslie DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Customer Support (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;623 (Charset = UTF8 Codepage = 65001) Row No = 32 EMP_NO = 114 FIRST_NAME = Bill LAST_NAME = Parker PHONE_EXT = 247 HIRE_DATE = 01/6/1993 DEPT_NO = 623 JOB_CODE = Eng JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 35000 FULL_NAME = Parker, Bill DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Customer Support (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;623 (Charset = UTF8 Codepage = 65001) Row No = 33 EMP_NO = 136 FIRST_NAME = Scott LAST_NAME = Johnson PHONE_EXT = 265 HIRE_DATE = 13/9/1993 DEPT_NO = 623 JOB_CODE = Doc JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 60000 FULL_NAME = Johnson, Scott DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Customer Support (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;623 (Charset = UTF8 Codepage = 65001) Row No = 34 EMP_NO = 65 FIRST_NAME = Sue Anne LAST_NAME = O'Brien PHONE_EXT = 877 HIRE_DATE = 23/3/1992 DEPT_NO = 670 JOB_CODE = Admin JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 31275 FULL_NAME = O'Brien, Sue Anne DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;670 (Charset = UTF8 Codepage = 65001) Row No = 35 EMP_NO = 107 FIRST_NAME = Kevin LAST_NAME = Cook PHONE_EXT = 894 HIRE_DATE = 01/2/1993 DEPT_NO = 670 JOB_CODE = Dir JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 111262.5 FULL_NAME = Cook, Kevin DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;670 (Charset = UTF8 Codepage = 65001) Row No = 36 EMP_NO = 20 FIRST_NAME = Chris LAST_NAME = Papadopoulos PHONE_EXT = 887 HIRE_DATE = 01/1/1990 DEPT_NO = 671 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 89655 FULL_NAME = Papadopoulos, Chris DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Research and Development (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;671 (Charset = UTF8 Codepage = 65001) Row No = 37 EMP_NO = 24 FIRST_NAME = Pete LAST_NAME = Fisher PHONE_EXT = 888 HIRE_DATE = 12/9/1990 DEPT_NO = 671 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 81810.19 FULL_NAME = Fisher, Pete DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Research and Development (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;671 (Charset = UTF8 Codepage = 65001) Row No = 38 EMP_NO = 113 FIRST_NAME = Mary LAST_NAME = Page PHONE_EXT = 845 HIRE_DATE = 12/4/1993 DEPT_NO = 671 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 48000 FULL_NAME = Page, Mary DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Research and Development (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;671 (Charset = UTF8 Codepage = 65001) Row No = 39 EMP_NO = 94 FIRST_NAME = Randy LAST_NAME = Williams PHONE_EXT = 892 HIRE_DATE = 08/8/1992 DEPT_NO = 672 JOB_CODE = Mngr JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 56295 FULL_NAME = Williams, Randy DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Customer Services (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;672 (Charset = UTF8 Codepage = 65001) Row No = 40 EMP_NO = 144 FIRST_NAME = John LAST_NAME = Montgomery PHONE_EXT = 820 HIRE_DATE = 30/3/1994 DEPT_NO = 672 JOB_CODE = Eng JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 35000 FULL_NAME = Montgomery, John DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Customer Services (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;672 (Charset = UTF8 Codepage = 65001) Row No = 41 EMP_NO = 14 FIRST_NAME = Stewart LAST_NAME = Hall PHONE_EXT = 227 HIRE_DATE = 04/6/1990 DEPT_NO = 900 JOB_CODE = Finan JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 69482.63 FULL_NAME = Hall, Stewart DEPT_PATH = Corporate Headquarters / Finance (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;900 (Charset = UTF8 Codepage = 65001) Row No = 42 EMP_NO = 46 FIRST_NAME = Walter LAST_NAME = Steadman PHONE_EXT = 210 HIRE_DATE = 09/8/1991 DEPT_NO = 900 JOB_CODE = CFO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 116100 FULL_NAME = Steadman, Walter DEPT_PATH = Corporate Headquarters / Finance (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;900 (Charset = UTF8 Codepage = 65001) Rows printed = 42 Server Side Filter: Hire Date < 1/1/90 Row No = 1 EMP_NO = 8 FIRST_NAME = Leslie LAST_NAME = Johnson PHONE_EXT = 410 HIRE_DATE = 05/4/1989 DEPT_NO = 180 JOB_CODE = Mktg JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 64635 FULL_NAME = Johnson, Leslie DEPT_PATH = Corporate Headquarters / Sales and Marketing / Marketing (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;180 (Charset = UTF8 Codepage = 65001) Row No = 2 EMP_NO = 5 FIRST_NAME = Kim LAST_NAME = Lambert PHONE_EXT = 22 HIRE_DATE = 06/2/1989 DEPT_NO = 130 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 102750 FULL_NAME = Lambert, Kim DEPT_PATH = Corporate Headquarters / Sales and Marketing / Field Office: East Coast (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;130 (Charset = UTF8 Codepage = 65001) Row No = 3 EMP_NO = 2 FIRST_NAME = Robert LAST_NAME = Nelson PHONE_EXT = 250 HIRE_DATE = 28/12/1988 DEPT_NO = 600 JOB_CODE = VP JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 105900 FULL_NAME = Nelson, Robert DEPT_PATH = Corporate Headquarters / Engineering (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600 (Charset = UTF8 Codepage = 65001) Row No = 4 EMP_NO = 4 FIRST_NAME = Bruce LAST_NAME = Young PHONE_EXT = 233 HIRE_DATE = 28/12/1988 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 97500 FULL_NAME = Young, Bruce DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Software Development (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;621 (Charset = UTF8 Codepage = 65001) Row No = 5 EMP_NO = 9 FIRST_NAME = Phil LAST_NAME = Forest PHONE_EXT = 229 HIRE_DATE = 17/4/1989 DEPT_NO = 622 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 75060 FULL_NAME = Forest, Phil DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Quality Assurance (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;622 (Charset = UTF8 Codepage = 65001) Rows printed = 5 Client side Filter: Hire Date > 1/1/94 Row No = 1 EMP_NO = 141 FIRST_NAME = Pierre LAST_NAME = Osborne PHONE_EXT = NULL HIRE_DATE = 03/1/1994 DEPT_NO = 121 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Switzerland SALARY = 110000 FULL_NAME = Osborne, Pierre DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters / Field Office: Switzerland (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;120;121 (Charset = UTF8 Codepage = 65001) Row No = 2 EMP_NO = 145 FIRST_NAME = Mark LAST_NAME = Guckenheimer PHONE_EXT = 221 HIRE_DATE = 02/5/1994 DEPT_NO = 622 JOB_CODE = Eng JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 32000 FULL_NAME = Guckenheimer, Mark DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Quality Assurance (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;622 (Charset = UTF8 Codepage = 65001) Row No = 3 EMP_NO = 144 FIRST_NAME = John LAST_NAME = Montgomery PHONE_EXT = 820 HIRE_DATE = 30/3/1994 DEPT_NO = 672 JOB_CODE = Eng JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 35000 FULL_NAME = Montgomery, John DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Customer Services (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;672 (Charset = UTF8 Codepage = 65001) Rows printed = 3 TIBQuery with open parameters - select only records with First Name = Claudia Row No = 1 EMP_NO = 72 FIRST_NAME = Claudia LAST_NAME = Sutherland PHONE_EXT = NULL HIRE_DATE = 20/4/1992 DEPT_NO = 140 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Canada SALARY = 100914 FULL_NAME = Sutherland, Claudia DEPT_PATH = Corporate Headquarters / Sales and Marketing / Field Office: Canada (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;140 (Charset = UTF8 Codepage = 65001) Rows printed = 1 ------------------------------------------------------ Running Test 02: Database Event Handlers and Idle disconnect Before Connect Connected to inet://localhost/employee DPB: Item Count = 3 isc_dpb_user_name = SYSDBA isc_dpb_password = xxxxxxxx isc_dpb_lc_ctype = UTF8 Before Disconnect inet://localhost/employee Disconnected after 4 ms Before Connect Connected to inet://localhost/employee DPB: Item Count = 3 isc_dpb_user_name = SYSDBA isc_dpb_password = xxxxxxxx isc_dpb_lc_ctype = UTF8 Before Disconnect inet://localhost/employee Disconnected after 1958 ms Idle Timer Expired for Test_Database_02 Database Closed Transaction Events Before Connect Connected to inet://localhost/employee DPB: Item Count = 3 isc_dpb_user_name = SYSDBA isc_dpb_password = xxxxxxxx isc_dpb_lc_ctype = UTF8 Requested TPB: Item Count = 3 isc_tpb_concurrency isc_tpb_wait isc_tpb_read Transaction Starts TPB: Item Count = 3 isc_tpb_concurrency isc_tpb_wait isc_tpb_read Transaction Ending Transaction Ended after 1 ms Transaction idle timer test Requested TPB: Item Count = 3 isc_tpb_concurrency isc_tpb_wait isc_tpb_read Transaction Starts TPB: Item Count = 3 isc_tpb_concurrency isc_tpb_wait isc_tpb_read Transaction Ending Transaction Ended after 2000 ms Idle Timer Expired for Test_Transaction_02 Before Disconnect inet://localhost/employee Disconnected after 2006 ms SQL Dialect Downgrade test Before Connect Connected to inet://localhost//tmp/ibx-testsuite/testsuite1.fdb DPB: Item Count = 4 isc_dpb_user_name = SYSDBA isc_dpb_password = xxxxxxxx isc_dpb_lc_ctype = UTF8 isc_dpb_set_db_sql_dialect = 1 inet://localhost//tmp/ibx-testsuite/testsuite1.fdb created Before Disconnect inet://localhost//tmp/ibx-testsuite/testsuite1.fdb Disconnected after 5 ms Before Connect Warning: SQL Dialect Downgrade of inet://localhost//tmp/ibx-testsuite/testsuite1.fdb Connected to inet://localhost//tmp/ibx-testsuite/testsuite1.fdb DPB: Item Count = 3 isc_dpb_user_name = SYSDBA isc_dpb_password = xxxxxxxx isc_dpb_lc_ctype = UTF8 Before Disconnect inet://localhost//tmp/ibx-testsuite/testsuite1.fdb Disconnected after 9 ms ------------------------------------------------------ Running Test 03: Database Information Authentication Method = Srp256 Remote Protocol = TCPv4 Attachment SQLDialect = 3 Firebird/Linux/AMD/Intel/x64 (access method), version "LI-V4.0.2.2816 Firebird 4.0" Firebird/Linux/AMD/Intel/x64 (remote server), version "LI-V4.0.2.2816 Firebird 4.0/tcp (zeus)/P17:CZ" Firebird/Linux/AMD/Intel/x64 (remote interface), version "LI-V4.0.2.2816 Firebird 4.0/tcp (zeus)/P17:CZ" on disk structure version 13.0 FB Version: Firebird/Linux/AMD/Intel/x64 (access method), version "LI-V4.0.2.2816 Firebird 4.0", Firebird/Linux/AMD/Intel/x64 (remote server), version "LI-V4.0.2.2816 Firebird 4.0/tcp (zeus)/P17:CZ", Firebird/Linux/AMD/Intel/x64 (remote interface), version "LI-V4.0.2.2816 Firebird 4.0/tcp (zeus)/P17:CZ", on disk structure version 13.0 Firebird Library Pathname = /opt/firebird/4.0.2/lib/libfbclient.so DB SQLDialect = 3 Allocation = 346 Base Level = 4 DB File Name = /opt/firebird/4.0.2/examples/empbuild/employee.fdb DB Site Name = zeus DB Implementation No = 7 Database Created: 10/8/2022 11:51:50 DB Implementation Class = 0 Space is Reserved ODS Minor Version = 0 ODS Major Version = 13 Page Size = 8192 Version = LI-V6.3.2.2816 Firebird 4.0 Current Memory = 19504336 Forced Writes Enabled Max Memory = 19657616 Number of Buffers = 2048 Sweep Interval = 20000 User Names: SYSDBA Fetches = 2054 Marks = 8 Reads = 104 Writes = 2 Pages Free = 310 Pages Used = 36 Transaction Count = 1 Read Idx Count RDB$FIELDS = 18 RDB$INDICES = 71 RDB$RELATION_FIELDS = 18 RDB$RELATIONS = 25 RDB$SECURITY_CLASSES = 12 RDB$TYPES = 2 RDB$TRIGGERS = 27 RDB$USER_PRIVILEGES = 924 RDB$GENERATORS = 5 RDB$CHARACTER_SETS = 2 RDB$COLLATIONS = 2 RDB$ROLES = 1 Read Seq Count RDB$PAGES = 98 RDB$DATABASE = 26 RDB$RELATIONS = 65 Database is Read/Write Hex Dump of Database Page 100: 5 0 0 0 1 0 0 0 0 0 0 0 64 0 0 0 C 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ------------------------------------------------------ Running Test 04: Handling of data types up to Firebird 3 Creating Database from resources/Test04.sql Create Table IBXTest ( TableKey Integer not null, F1 Smallint, F2 Float, F3 Double Precision, F4 Decimal(9,3), F5 Decimal(18,4), F6 Date, F7 Timestamp, F8 Char (2), F9 VarChar(256), F10 Blob, F11 BigInt, "f12" Integer, F13 Time, F14 Blob sub_type text, F15 Double Precision Computed by (F2 + F3), MyArray Integer [0:16], "GRANTS" VarChar(20), "My Field" VarChar(32), "MY Field" VarChar(32), Primary Key(TableKey) ); Transaction Exec Query "Create Table IBXTest ( TableKey Integer not null, F1 Smallint, F2 Float, F3 Double Precision, F4 Decimal(9,3), F5 Decimal(18,4), F6 Date, F7 Timestamp, F8 Char (2), F9 VarChar(256), F10 Blob, F11 BigInt, "f12" Integer, F13 Time, F14 Blob sub_type text, F15 Double Precision Computed by (F2 + F3), MyArray Integer [0:16], "GRANTS" VarChar(20), "My Field" VarChar(32), "MY Field" VarChar(32), Primary Key(TableKey) ) " Create Generator IBXGen; Transaction Exec Query "Create Generator IBXGen " Transaction Exec Query "Select A.TABLEKEY, A.F1, A.F2, A.F3, A.F4, A.F5, A.F6, A.F7, A.F8, A.F9, A.F10, A.F11, A."f12", A.F13, A.F14, A.MyArray, A.GRANTS, A."My Field" as MYFIELD1, A."MY Field" as MYFIELD2 From IBXTEST A " Add a record Transaction Exec Query "Select Gen_ID(IBXGEN,1) From RDB$Database " Transaction Insert Transaction Exec Query "Insert Into IBXTEST(TABLEKEY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, "f12", F13, F14, MyArray, GRANTS) Values(:TABLEKEY, :F1, :F2, :F3, :F4, :F5, :F6, :F7,:F8, :F9, :F10, :F11, :F12, :F13, :F14, :MyArray, :GRANTS) Returning MyArray, F10, F14, F15 " Transaction Post Add and edit a record Transaction Exec Query "Select Gen_ID(IBXGEN,1) From RDB$Database " Transaction Insert Transaction Exec Query "Insert Into IBXTEST(TABLEKEY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, "f12", F13, F14, MyArray, GRANTS) Values(:TABLEKEY, :F1, :F2, :F3, :F4, :F5, :F6, :F7,:F8, :F9, :F10, :F11, :F12, :F13, :F14, :MyArray, :GRANTS) Returning MyArray, F10, F14, F15 " Transaction Post Transaction Edit Transaction Exec Query "Update IBXTEST A Set A.F1 = :F1, A.F2 = :F2, A.F3 = :F3, A.F4 = :F4, A.F5 = :F5, A.F6 = :F6, A.F7 = :F7, A.F8 = :F8, A.F9 = :F9, A.F10 = :F10, A.F11 = :F11, A."f12" = :F12, A.F13 = :F13, A.F14 = :F14, A.MyArray = :MyArray, A."My Field" = :MYFIELD1, A."MY Field" = :MYFIELD2, A.GRANTS = :GRANTS Where A.TABLEKEY = :OLD_TABLEKEY " Transaction Post Clear Blob and Array Transaction Exec Query "Select Gen_ID(IBXGEN,1) From RDB$Database " Transaction Insert Transaction Exec Query "Insert Into IBXTEST(TABLEKEY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, "f12", F13, F14, MyArray, GRANTS) Values(:TABLEKEY, :F1, :F2, :F3, :F4, :F5, :F6, :F7,:F8, :F9, :F10, :F11, :F12, :F13, :F14, :MyArray, :GRANTS) Returning MyArray, F10, F14, F15 " Transaction Post Transaction Edit Transaction Exec Query "Update IBXTEST A Set A.F1 = :F1, A.F2 = :F2, A.F3 = :F3, A.F4 = :F4, A.F5 = :F5, A.F6 = :F6, A.F7 = :F7, A.F8 = :F8, A.F9 = :F9, A.F10 = :F10, A.F11 = :F11, A."f12" = :F12, A.F13 = :F13, A.F14 = :F14, A.MyArray = :MyArray, A."My Field" = :MYFIELD1, A."MY Field" = :MYFIELD2, A.GRANTS = :GRANTS Where A.TABLEKEY = :OLD_TABLEKEY " Transaction Exec Query "Select A.TABLEKEY, A.F1, A.F2, A.F3, A.F4, A.F5, A.F6, A.F7, A.F8, A.F9, A.F10, A.F11, A."f12", A.F13, A.F14, A.MyArray, A.GRANTS, A."My Field" as MYFIELD1, A."MY Field" as MYFIELD2 From IBXTEST A Where A.TABLEKEY = :TABLEKEY " Transaction Post Transaction Exec Query "Select A.TABLEKEY, A.F1, A.F2, A.F3, A.F4, A.F5, A.F6, A.F7, A.F8, A.F9, A.F10, A.F11, A."f12", A.F13, A.F14, A.MyArray, A.GRANTS, A."My Field" as MYFIELD1, A."MY Field" as MYFIELD2 From IBXTEST A " Row No = 1 TABLEKEY = 1 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 543916 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = NULL MYFIELD2 = NULL Row No = 2 TABLEKEY = 2 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 543916 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = My Field (Charset = UTF8 Codepage = 65001) MYFIELD2 = MY Field (Charset = UTF8 Codepage = 65001) Row No = 3 TABLEKEY = 3 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 543916 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 = NULL MYARRAY = NULL GRANTS = NULL MYFIELD1 = NULL MYFIELD2 = NULL Rows printed = 3 Transaction Exec Query "Delete From IBXTEST A Where A.TABLEKEY = :OLD_TABLEKEY " Transaction Delete Transaction Exec Query "Select A.TABLEKEY, A.F1, A.F2, A.F3, A.F4, A.F5, A.F6, A.F7, A.F8, A.F9, A.F10, A.F11, A."f12", A.F13, A.F14, A.MyArray, A.GRANTS, A."My Field" as MYFIELD1, A."MY Field" as MYFIELD2 From IBXTEST A " Delete a record Transaction Exec Query "Delete From IBXTEST A Where A.TABLEKEY = :OLD_TABLEKEY " Transaction Delete Row No = 1 TABLEKEY = 2 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 543916 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = My Field (Charset = UTF8 Codepage = 65001) MYFIELD2 = MY Field (Charset = UTF8 Codepage = 65001) Rows printed = 1 Rollback Retaining Transaction Exec Query "Select A.TABLEKEY, A.F1, A.F2, A.F3, A.F4, A.F5, A.F6, A.F7, A.F8, A.F9, A.F10, A.F11, A."f12", A.F13, A.F14, A.MyArray, A.GRANTS, A."My Field" as MYFIELD1, A."MY Field" as MYFIELD2 From IBXTEST A " Row No = 1 TABLEKEY = 1 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 543916 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = NULL MYFIELD2 = NULL Row No = 2 TABLEKEY = 2 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 543916 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = My Field (Charset = UTF8 Codepage = 65001) MYFIELD2 = MY Field (Charset = UTF8 Codepage = 65001) Rows printed = 2 Delete a record Transaction Exec Query "Delete From IBXTEST A Where A.TABLEKEY = :OLD_TABLEKEY " Transaction Delete Row No = 1 TABLEKEY = 2 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 543916 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = My Field (Charset = UTF8 Codepage = 65001) MYFIELD2 = MY Field (Charset = UTF8 Codepage = 65001) Rows printed = 1 Rollback Transaction Exec Query "Select A.TABLEKEY, A.F1, A.F2, A.F3, A.F4, A.F5, A.F6, A.F7, A.F8, A.F9, A.F10, A.F11, A."f12", A.F13, A.F14, A.MyArray, A.GRANTS, A."My Field" as MYFIELD1, A."MY Field" as MYFIELD2 From IBXTEST A " Row No = 1 TABLEKEY = 1 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 543916 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = NULL MYFIELD2 = NULL Row No = 2 TABLEKEY = 2 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 543916 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = My Field (Charset = UTF8 Codepage = 65001) MYFIELD2 = MY Field (Charset = UTF8 Codepage = 65001) Rows printed = 2 Commit Retaining Transaction Exec Query "Select Gen_ID(IBXGEN,1) From RDB$Database " Transaction Insert Transaction Exec Query "Insert Into IBXTEST(TABLEKEY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, "f12", F13, F14, MyArray, GRANTS) Values(:TABLEKEY, :F1, :F2, :F3, :F4, :F5, :F6, :F7,:F8, :F9, :F10, :F11, :F12, :F13, :F14, :MyArray, :GRANTS) Returning MyArray, F10, F14, F15 " Transaction Post Transaction Exec Query "Select A.TABLEKEY, A.F1, A.F2, A.F3, A.F4, A.F5, A.F6, A.F7, A.F8, A.F9, A.F10, A.F11, A."f12", A.F13, A.F14, A.MyArray, A.GRANTS, A."My Field" as MYFIELD1, A."MY Field" as MYFIELD2 From IBXTEST A " Row No = 1 TABLEKEY = 1 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 543916 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = NULL MYFIELD2 = NULL Row No = 2 TABLEKEY = 2 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 543916 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = My Field (Charset = UTF8 Codepage = 65001) MYFIELD2 = MY Field (Charset = UTF8 Codepage = 65001) Row No = 3 TABLEKEY = 4 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 543916 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = NULL MYFIELD2 = NULL Rows printed = 3 Commit Transaction Exec Query "Select A.TABLEKEY, A.F1, A.F2, A.F3, A.F4, A.F5, A.F6, A.F7, A.F8, A.F9, A.F10, A.F11, A."f12", A.F13, A.F14, A.MyArray, A.GRANTS, A."My Field" as MYFIELD1, A."MY Field" as MYFIELD2 From IBXTEST A " Row No = 1 TABLEKEY = 1 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 543916 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = NULL MYFIELD2 = NULL Row No = 2 TABLEKEY = 2 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 543916 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = My Field (Charset = UTF8 Codepage = 65001) MYFIELD2 = MY Field (Charset = UTF8 Codepage = 65001) Row No = 3 TABLEKEY = 4 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 543916 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = NULL MYFIELD2 = NULL Rows printed = 3 Creating Database from SQL Creating Database from resources/Test04.sql Create Table IBXTest ( TableKey Integer not null, F1 Smallint, F2 Float, F3 Double Precision, F4 Decimal(9,3), F5 Decimal(18,4), F6 Date, F7 Timestamp, F8 Char (2), F9 VarChar(256), F10 Blob, F11 BigInt, "f12" Integer, F13 Time, F14 Blob sub_type text, F15 Double Precision Computed by (F2 + F3), MyArray Integer [0:16], "GRANTS" VarChar(20), "My Field" VarChar(32), "MY Field" VarChar(32), Primary Key(TableKey) ); Transaction Exec Query "Create Table IBXTest ( TableKey Integer not null, F1 Smallint, F2 Float, F3 Double Precision, F4 Decimal(9,3), F5 Decimal(18,4), F6 Date, F7 Timestamp, F8 Char (2), F9 VarChar(256), F10 Blob, F11 BigInt, "f12" Integer, F13 Time, F14 Blob sub_type text, F15 Double Precision Computed by (F2 + F3), MyArray Integer [0:16], "GRANTS" VarChar(20), "My Field" VarChar(32), "MY Field" VarChar(32), Primary Key(TableKey) ) " Create Generator IBXGen; Transaction Exec Query "Create Generator IBXGen " Database Name = inet://localhost//tmp/ibx-testsuite/testsuite1.fdb Transaction Exec Query "Select A.TABLEKEY, A.F1, A.F2, A.F3, A.F4, A.F5, A.F6, A.F7, A.F8, A.F9, A.F10, A.F11, A."f12", A.F13, A.F14, A.MyArray, A.GRANTS, A."My Field" as MYFIELD1, A."MY Field" as MYFIELD2 From IBXTEST A " Add a record Transaction Exec Query "Select Gen_ID(IBXGEN,1) From RDB$Database " Transaction Insert Transaction Exec Query "Insert Into IBXTEST(TABLEKEY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, "f12", F13, F14, MyArray, GRANTS) Values(:TABLEKEY, :F1, :F2, :F3, :F4, :F5, :F6, :F7,:F8, :F9, :F10, :F11, :F12, :F13, :F14, :MyArray, :GRANTS) Returning MyArray, F10, F14, F15 " Transaction Post Row No = 1 TABLEKEY = 1 F1 = 2 F2 = 0.314000000000 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 543916 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = NULL MYFIELD2 = NULL Rows printed = 1 ------------------------------------------------------ Running Test 05: Firebird 4 Data Types Creating Database from resources/Test05.sql Create Table IBXTest ( TableKey Integer not null, F1 Timestamp with Time Zone, F2 Time with Time Zone, F3 DecFloat(16), F4 DecFloat(34), F5 Numeric (24,6), F6 INT128, Primary Key(TableKey) ) SQL SECURITY DEFINER; ALTER DATABASE SET DEFAULT SQL SECURITY DEFINER; Create Generator IBXGen; Extracting Database Schema SET SQL DIALECT 3; SET AUTODDL ON; /* CREATE DATABASE 'inet://localhost//tmp/ibx-testsuite/testsuite1.fdb' PAGE_SIZE 8192 DEFAULT CHARACTER SET UTF8; */ ALTER DATABASE SET DEFAULT SQL SECURITY DEFINER; /* Table: IBXTEST, Owner: SYSDBA */ CREATE TABLE IBXTEST ( TABLEKEY INTEGER NOT NULL, F1 TIMESTAMP WITH TIME ZONE, F2 TIME WITH TIME ZONE, F3 DECFLOAT(16), F4 DECFLOAT(34), F5 NUMERIC(24,6), F6 INT128, PRIMARY KEY (TABLEKEY) ) SQL SECURITY DEFINER; CREATE SEQUENCE IBXGEN; /* Comments on System Objects */ /* Grant Roles for this database */ /* Grant permissions for this database */ Add a record Row No = 1 TABLEKEY = 1 F1 = 11/11/1918 00:11:00.1111 +01:00 F2 = 22:02:10.0050 -08:00 F3 = 12345678912.1200 F4 = 64100000000.011 F5 = 123456123456123456123456.123456 F6 = 123456789123456789 Rows printed = 1 F1 in UTC Time = 10/11/1918 23:11:00.111 F2 in UTC Time = 06:02:10.0050 TZ Text Option = GMT Row No = 1 TABLEKEY = 1 F1 = 10/11/1918 23:11:00.1111 F2 = 06:02:10.0050 F3 = 12345678912.1200 F4 = 64100000000.011 F5 = 123456123456123456123456.123456 F6 = 123456789123456789 Rows printed = 1 TZ Text Option = Original format Row No = 1 TABLEKEY = 1 F1 = 11/11/1918 00:11:00.1111 CET F2 = 22:02:10.0050 America/Los_Angeles F3 = 12345678912.1200 F4 = 64100000000.011 F5 = 123456123456123456123456.123456 F6 = 123456789123456789 Rows printed = 1 TZ Text Option = offset with Default time zone date of 2020/7/1 Row No = 1 TABLEKEY = 1 F1 = 11/11/1918 00:11:00.1111 +01:00 F2 = 23:02:10.0050 -07:00 F3 = 12345678912.1200 F4 = 64100000000.011 F5 = 123456123456123456123456.123456 F6 = 123456789123456789 Rows printed = 1 Update a record with a non default time zone date Row No = 1 TABLEKEY = 1 F1 = 11/11/1918 00:11:00.1111 +01:00 F2 = 11:02:10.0150 -05:00 F3 = 12345678912.1200 F4 = 64100000000.011 F5 = 123456123456123456123456.123456 F6 = 123456789123456789 Rows printed = 1 Restore original default time zone date Row No = 1 TABLEKEY = 1 F1 = 11/11/1918 00:11:00.1111 +01:00 F2 = 10:02:10.0150 -05:00 F3 = 12345678912.1200 F4 = 64100000000.011 F5 = 123456123456123456123456.123456 F6 = 123456789123456789 Rows printed = 1 ------------------------------------------------------ Running Test 06: Multi-Database Transaction Creating Database from resources/Test06.sql Create Table IBXTest ( TableKey Integer not null, F1 Smallint, F2 Float, F3 Double Precision, F4 Decimal(9,3), F5 Decimal(18,4), F6 Date, F7 Timestamp, F8 Char (2), F9 VarChar(256), F10 Blob, F11 BigInt, "f12" Integer, F13 Time, "GRANTS" VarChar(20), "My Field" VarChar(32), "MY Field" VarChar(32), Primary Key(TableKey) ); Create Generator IBXGen; Creating Database from resources/Test06.sql Create Table IBXTest ( TableKey Integer not null, F1 Smallint, F2 Float, F3 Double Precision, F4 Decimal(9,3), F5 Decimal(18,4), F6 Date, F7 Timestamp, F8 Char (2), F9 VarChar(256), F10 Blob, F11 BigInt, "f12" Integer, F13 Time, "GRANTS" VarChar(20), "My Field" VarChar(32), "MY Field" VarChar(32), Primary Key(TableKey) ); Create Generator IBXGen; Add Row to First Database TABLEKEY = 1 Add Row to Second Database TABLEKEY = 1 Query First Database TABLEKEY = 1 F1 = 1 Query Second Database TABLEKEY = 1 F1 = 2 ------------------------------------------------------ Running Test 07: Open and read from Employee Database using IBSQL Metadata SQLType =SQL_SHORT sub type = 0 Table = EMPLOYEE Owner = SYSDBA Column Name = EMP_NO Alias Name = EMP_NO Field Name = EMP_NO Scale = 0 Charset id = 0 Not Null Size = 2 SQLType =SQL_VARYING sub type = 0 Table = EMPLOYEE Owner = SYSDBA Column Name = FIRST_NAME Alias Name = FIRST_NAME Field Name = FIRST_NAME Scale = 0 Charset id = 0 Not Null Size = 15 SQLType =SQL_VARYING sub type = 0 Table = EMPLOYEE Owner = SYSDBA Column Name = LAST_NAME Alias Name = LAST_NAME Field Name = LAST_NAME Scale = 0 Charset id = 0 Not Null Size = 20 SQLType =SQL_VARYING sub type = 0 Table = EMPLOYEE Owner = SYSDBA Column Name = PHONE_EXT Alias Name = PHONE_EXT Field Name = PHONE_EXT Scale = 0 Charset id = 0 Nullable Size = 4 SQLType =SQL_TIMESTAMP sub type = 0 Table = EMPLOYEE Owner = SYSDBA Column Name = HIRE_DATE Alias Name = HIRE_DATE Field Name = HIRE_DATE Scale = 0 Charset id = 0 Not Null Size = 8 SQLType =SQL_TEXT sub type = 0 Table = EMPLOYEE Owner = SYSDBA Column Name = DEPT_NO Alias Name = DEPT_NO Field Name = DEPT_NO Scale = 0 Charset id = 0 Not Null Size = 3 SQLType =SQL_VARYING sub type = 0 Table = EMPLOYEE Owner = SYSDBA Column Name = JOB_CODE Alias Name = JOB_CODE Field Name = JOB_CODE Scale = 0 Charset id = 0 Not Null Size = 5 SQLType =SQL_SHORT sub type = 0 Table = EMPLOYEE Owner = SYSDBA Column Name = JOB_GRADE Alias Name = JOB_GRADE Field Name = JOB_GRADE Scale = 0 Charset id = 0 Not Null Size = 2 SQLType =SQL_VARYING sub type = 0 Table = EMPLOYEE Owner = SYSDBA Column Name = JOB_COUNTRY Alias Name = JOB_COUNTRY Field Name = JOB_COUNTRY Scale = 0 Charset id = 0 Not Null Size = 15 SQLType =SQL_INT64 sub type = 0 Table = EMPLOYEE Owner = SYSDBA Column Name = SALARY Alias Name = SALARY Field Name = SALARY Scale = -2 Charset id = 0 Not Null Size = 8 SQLType =SQL_VARYING sub type = 0 Table = EMPLOYEE Owner = SYSDBA Column Name = FULL_NAME Alias Name = FULL_NAME Field Name = FULL_NAME Scale = 0 Charset id = 0 Nullable Size = 37 SQLType =SQL_VARYING sub type = 0 Table = Owner = Column Name = Alias Name = DEPT_PATH Field Name = DEPT_PATH Scale = 0 Charset id = 4 Not Null Size = 1024 SQLType =SQL_VARYING sub type = 0 Table = Owner = Column Name = Alias Name = DEPT_KEY_PATH Field Name = DEPT_KEY_PATH Scale = 0 Charset id = 4 Not Null Size = 256 Select Expression -> Refetch -> Sort (record length: 1612, key length: 8) -> Nested Loop Join (inner) -> Recursion -> Filter -> Table "DEPARTMENT" as "DEPTS DEPARTMENT" Access By ID -> Bitmap -> Index "RDB$FOREIGN6" Range Scan (full match) -> Filter -> Table "DEPARTMENT" as "DEPTS D" Access By ID -> Bitmap -> Index "RDB$FOREIGN6" Range Scan (full match) -> Filter -> Table "EMPLOYEE" as "A" Access By ID -> Bitmap -> Index "RDB$FOREIGN8" Range Scan (full match) EMP_NO = 2 FIRST_NAME = Robert LAST_NAME = Nelson PHONE_EXT = 250 HIRE_DATE = 1988/12/28 00:00:00.0000 DEPT_NO = 600 JOB_CODE = VP JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 105,900.00 FULL_NAME = Nelson, Robert DEPT_PATH = Corporate Headquarters / Engineering (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600 (Charset Id = 4 Codepage = 65001) EMP_NO = 4 FIRST_NAME = Bruce LAST_NAME = Young PHONE_EXT = 233 HIRE_DATE = 1988/12/28 00:00:00.0000 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 97,500.00 FULL_NAME = Young, Bruce DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Software Development (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;621 (Charset Id = 4 Codepage = 65001) EMP_NO = 5 FIRST_NAME = Kim LAST_NAME = Lambert PHONE_EXT = 22 HIRE_DATE = 1989/02/06 00:00:00.0000 DEPT_NO = 130 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 102,750.00 FULL_NAME = Lambert, Kim DEPT_PATH = Corporate Headquarters / Sales and Marketing / Field Office: East Coast (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;130 (Charset Id = 4 Codepage = 65001) EMP_NO = 8 FIRST_NAME = Leslie LAST_NAME = Johnson PHONE_EXT = 410 HIRE_DATE = 1989/04/05 00:00:00.0000 DEPT_NO = 180 JOB_CODE = Mktg JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 64,635.00 FULL_NAME = Johnson, Leslie DEPT_PATH = Corporate Headquarters / Sales and Marketing / Marketing (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;180 (Charset Id = 4 Codepage = 65001) EMP_NO = 9 FIRST_NAME = Phil LAST_NAME = Forest PHONE_EXT = 229 HIRE_DATE = 1989/04/17 00:00:00.0000 DEPT_NO = 622 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 75,060.00 FULL_NAME = Forest, Phil DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Quality Assurance (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;622 (Charset Id = 4 Codepage = 65001) EMP_NO = 11 FIRST_NAME = K. J. LAST_NAME = Weston PHONE_EXT = 34 HIRE_DATE = 1990/01/17 00:00:00.0000 DEPT_NO = 130 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 86,292.94 FULL_NAME = Weston, K. J. DEPT_PATH = Corporate Headquarters / Sales and Marketing / Field Office: East Coast (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;130 (Charset Id = 4 Codepage = 65001) EMP_NO = 12 FIRST_NAME = Terri LAST_NAME = Lee PHONE_EXT = 256 HIRE_DATE = 1990/05/01 00:00:00.0000 DEPT_NO = 000 JOB_CODE = Admin JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 53,793.00 FULL_NAME = Lee, Terri DEPT_PATH = Corporate Headquarters (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset Id = 4 Codepage = 65001) EMP_NO = 14 FIRST_NAME = Stewart LAST_NAME = Hall PHONE_EXT = 227 HIRE_DATE = 1990/06/04 00:00:00.0000 DEPT_NO = 900 JOB_CODE = Finan JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 69,482.63 FULL_NAME = Hall, Stewart DEPT_PATH = Corporate Headquarters / Finance (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;900 (Charset Id = 4 Codepage = 65001) EMP_NO = 15 FIRST_NAME = Katherine LAST_NAME = Young PHONE_EXT = 231 HIRE_DATE = 1990/06/14 00:00:00.0000 DEPT_NO = 623 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 67,241.25 FULL_NAME = Young, Katherine DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Customer Support (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;623 (Charset Id = 4 Codepage = 65001) EMP_NO = 20 FIRST_NAME = Chris LAST_NAME = Papadopoulos PHONE_EXT = 887 HIRE_DATE = 1990/01/01 00:00:00.0000 DEPT_NO = 671 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 89,655.00 FULL_NAME = Papadopoulos, Chris DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Research and Development (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;671 (Charset Id = 4 Codepage = 65001) EMP_NO = 24 FIRST_NAME = Pete LAST_NAME = Fisher PHONE_EXT = 888 HIRE_DATE = 1990/09/12 00:00:00.0000 DEPT_NO = 671 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 81,810.19 FULL_NAME = Fisher, Pete DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Research and Development (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;671 (Charset Id = 4 Codepage = 65001) EMP_NO = 28 FIRST_NAME = Ann LAST_NAME = Bennet PHONE_EXT = 5 HIRE_DATE = 1991/02/01 00:00:00.0000 DEPT_NO = 120 JOB_CODE = Admin JOB_GRADE = 5 JOB_COUNTRY = England SALARY = 22,935.00 FULL_NAME = Bennet, Ann DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;120 (Charset Id = 4 Codepage = 65001) EMP_NO = 29 FIRST_NAME = Roger LAST_NAME = De Souza PHONE_EXT = 288 HIRE_DATE = 1991/02/18 00:00:00.0000 DEPT_NO = 623 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 69,482.63 FULL_NAME = De Souza, Roger DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Customer Support (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;623 (Charset Id = 4 Codepage = 65001) EMP_NO = 34 FIRST_NAME = Janet LAST_NAME = Baldwin PHONE_EXT = 2 HIRE_DATE = 1991/03/21 00:00:00.0000 DEPT_NO = 110 JOB_CODE = Sales JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 61,637.81 FULL_NAME = Baldwin, Janet DEPT_PATH = Corporate Headquarters / Sales and Marketing / Pacific Rim Headquarters (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;110 (Charset Id = 4 Codepage = 65001) EMP_NO = 36 FIRST_NAME = Roger LAST_NAME = Reeves PHONE_EXT = 6 HIRE_DATE = 1991/04/25 00:00:00.0000 DEPT_NO = 120 JOB_CODE = Sales JOB_GRADE = 3 JOB_COUNTRY = England SALARY = 33,620.63 FULL_NAME = Reeves, Roger DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;120 (Charset Id = 4 Codepage = 65001) EMP_NO = 37 FIRST_NAME = Willie LAST_NAME = Stansbury PHONE_EXT = 7 HIRE_DATE = 1991/04/25 00:00:00.0000 DEPT_NO = 120 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = England SALARY = 39,224.06 FULL_NAME = Stansbury, Willie DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;120 (Charset Id = 4 Codepage = 65001) EMP_NO = 44 FIRST_NAME = Leslie LAST_NAME = Phong PHONE_EXT = 216 HIRE_DATE = 1991/06/03 00:00:00.0000 DEPT_NO = 623 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 56,034.38 FULL_NAME = Phong, Leslie DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Customer Support (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;623 (Charset Id = 4 Codepage = 65001) EMP_NO = 45 FIRST_NAME = Ashok LAST_NAME = Ramanathan PHONE_EXT = 209 HIRE_DATE = 1991/08/01 00:00:00.0000 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 80,689.50 FULL_NAME = Ramanathan, Ashok DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Software Development (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;621 (Charset Id = 4 Codepage = 65001) EMP_NO = 46 FIRST_NAME = Walter LAST_NAME = Steadman PHONE_EXT = 210 HIRE_DATE = 1991/08/09 00:00:00.0000 DEPT_NO = 900 JOB_CODE = CFO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 116,100.00 FULL_NAME = Steadman, Walter DEPT_PATH = Corporate Headquarters / Finance (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;900 (Charset Id = 4 Codepage = 65001) EMP_NO = 52 FIRST_NAME = Carol LAST_NAME = Nordstrom PHONE_EXT = 420 HIRE_DATE = 1991/10/02 00:00:00.0000 DEPT_NO = 180 JOB_CODE = PRel JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 42,742.50 FULL_NAME = Nordstrom, Carol DEPT_PATH = Corporate Headquarters / Sales and Marketing / Marketing (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;180 (Charset Id = 4 Codepage = 65001) EMP_NO = 61 FIRST_NAME = Luke LAST_NAME = Leung PHONE_EXT = 3 HIRE_DATE = 1992/02/18 00:00:00.0000 DEPT_NO = 110 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 68,805.00 FULL_NAME = Leung, Luke DEPT_PATH = Corporate Headquarters / Sales and Marketing / Pacific Rim Headquarters (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;110 (Charset Id = 4 Codepage = 65001) EMP_NO = 65 FIRST_NAME = Sue Anne LAST_NAME = O'Brien PHONE_EXT = 877 HIRE_DATE = 1992/03/23 00:00:00.0000 DEPT_NO = 670 JOB_CODE = Admin JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 31,275.00 FULL_NAME = O'Brien, Sue Anne DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;670 (Charset Id = 4 Codepage = 65001) EMP_NO = 71 FIRST_NAME = Jennifer M. LAST_NAME = Burbank PHONE_EXT = 289 HIRE_DATE = 1992/04/15 00:00:00.0000 DEPT_NO = 622 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 53,167.50 FULL_NAME = Burbank, Jennifer M. DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Quality Assurance (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;622 (Charset Id = 4 Codepage = 65001) EMP_NO = 72 FIRST_NAME = Claudia LAST_NAME = Sutherland PHONE_EXT = NULL HIRE_DATE = 1992/04/20 00:00:00.0000 DEPT_NO = 140 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Canada SALARY = 100,914.00 FULL_NAME = Sutherland, Claudia DEPT_PATH = Corporate Headquarters / Sales and Marketing / Field Office: Canada (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;140 (Charset Id = 4 Codepage = 65001) EMP_NO = 83 FIRST_NAME = Dana LAST_NAME = Bishop PHONE_EXT = 290 HIRE_DATE = 1992/06/01 00:00:00.0000 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 62,550.00 FULL_NAME = Bishop, Dana DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Software Development (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;621 (Charset Id = 4 Codepage = 65001) EMP_NO = 85 FIRST_NAME = Mary S. LAST_NAME = MacDonald PHONE_EXT = 477 HIRE_DATE = 1992/06/01 00:00:00.0000 DEPT_NO = 100 JOB_CODE = VP JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 111,262.50 FULL_NAME = MacDonald, Mary S. DEPT_PATH = Corporate Headquarters / Sales and Marketing (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100 (Charset Id = 4 Codepage = 65001) EMP_NO = 94 FIRST_NAME = Randy LAST_NAME = Williams PHONE_EXT = 892 HIRE_DATE = 1992/08/08 00:00:00.0000 DEPT_NO = 672 JOB_CODE = Mngr JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 56,295.00 FULL_NAME = Williams, Randy DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Customer Services (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;672 (Charset Id = 4 Codepage = 65001) EMP_NO = 105 FIRST_NAME = Oliver H. LAST_NAME = Bender PHONE_EXT = 255 HIRE_DATE = 1992/10/08 00:00:00.0000 DEPT_NO = 000 JOB_CODE = CEO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 212,850.00 FULL_NAME = Bender, Oliver H. DEPT_PATH = Corporate Headquarters (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset Id = 4 Codepage = 65001) EMP_NO = 107 FIRST_NAME = Kevin LAST_NAME = Cook PHONE_EXT = 894 HIRE_DATE = 1993/02/01 00:00:00.0000 DEPT_NO = 670 JOB_CODE = Dir JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 111,262.50 FULL_NAME = Cook, Kevin DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;670 (Charset Id = 4 Codepage = 65001) EMP_NO = 109 FIRST_NAME = Kelly LAST_NAME = Brown PHONE_EXT = 202 HIRE_DATE = 1993/02/04 00:00:00.0000 DEPT_NO = 600 JOB_CODE = Admin JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 27,000.00 FULL_NAME = Brown, Kelly DEPT_PATH = Corporate Headquarters / Engineering (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600 (Charset Id = 4 Codepage = 65001) EMP_NO = 110 FIRST_NAME = Yuki LAST_NAME = Ichida PHONE_EXT = 22 HIRE_DATE = 1993/02/04 00:00:00.0000 DEPT_NO = 115 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = Japan SALARY = 6,000,000.00 FULL_NAME = Ichida, Yuki DEPT_PATH = Corporate Headquarters / Sales and Marketing / Pacific Rim Headquarters / Field Office: Japan (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;110;115 (Charset Id = 4 Codepage = 65001) EMP_NO = 113 FIRST_NAME = Mary LAST_NAME = Page PHONE_EXT = 845 HIRE_DATE = 1993/04/12 00:00:00.0000 DEPT_NO = 671 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 48,000.00 FULL_NAME = Page, Mary DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Research and Development (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;671 (Charset Id = 4 Codepage = 65001) EMP_NO = 114 FIRST_NAME = Bill LAST_NAME = Parker PHONE_EXT = 247 HIRE_DATE = 1993/06/01 00:00:00.0000 DEPT_NO = 623 JOB_CODE = Eng JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 35,000.00 FULL_NAME = Parker, Bill DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Customer Support (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;623 (Charset Id = 4 Codepage = 65001) EMP_NO = 118 FIRST_NAME = Takashi LAST_NAME = Yamamoto PHONE_EXT = 23 HIRE_DATE = 1993/07/01 00:00:00.0000 DEPT_NO = 115 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Japan SALARY = 7,480,000.00 FULL_NAME = Yamamoto, Takashi DEPT_PATH = Corporate Headquarters / Sales and Marketing / Pacific Rim Headquarters / Field Office: Japan (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;110;115 (Charset Id = 4 Codepage = 65001) EMP_NO = 121 FIRST_NAME = Roberto LAST_NAME = Ferrari PHONE_EXT = 1 HIRE_DATE = 1993/07/12 00:00:00.0000 DEPT_NO = 125 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Italy SALARY = 33,000.00 FULL_NAME = Ferrari, Roberto DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters / Field Office: Italy (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;120;125 (Charset Id = 4 Codepage = 65001) EMP_NO = 127 FIRST_NAME = Michael LAST_NAME = Yanowski PHONE_EXT = 492 HIRE_DATE = 1993/08/09 00:00:00.0000 DEPT_NO = 100 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 44,000.00 FULL_NAME = Yanowski, Michael DEPT_PATH = Corporate Headquarters / Sales and Marketing (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100 (Charset Id = 4 Codepage = 65001) EMP_NO = 134 FIRST_NAME = Jacques LAST_NAME = Glon PHONE_EXT = NULL HIRE_DATE = 1993/08/23 00:00:00.0000 DEPT_NO = 123 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = France SALARY = 38,500.00 FULL_NAME = Glon, Jacques DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters / Field Office: France (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;120;123 (Charset Id = 4 Codepage = 65001) EMP_NO = 136 FIRST_NAME = Scott LAST_NAME = Johnson PHONE_EXT = 265 HIRE_DATE = 1993/09/13 00:00:00.0000 DEPT_NO = 623 JOB_CODE = Doc JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 60,000.00 FULL_NAME = Johnson, Scott DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Customer Support (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;623 (Charset Id = 4 Codepage = 65001) EMP_NO = 138 FIRST_NAME = T.J. LAST_NAME = Green PHONE_EXT = 218 HIRE_DATE = 1993/11/01 00:00:00.0000 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 36,000.00 FULL_NAME = Green, T.J. DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Software Development (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;621 (Charset Id = 4 Codepage = 65001) EMP_NO = 141 FIRST_NAME = Pierre LAST_NAME = Osborne PHONE_EXT = NULL HIRE_DATE = 1994/01/03 00:00:00.0000 DEPT_NO = 121 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Switzerland SALARY = 110,000.00 FULL_NAME = Osborne, Pierre DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters / Field Office: Switzerland (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;120;121 (Charset Id = 4 Codepage = 65001) EMP_NO = 144 FIRST_NAME = John LAST_NAME = Montgomery PHONE_EXT = 820 HIRE_DATE = 1994/03/30 00:00:00.0000 DEPT_NO = 672 JOB_CODE = Eng JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 35,000.00 FULL_NAME = Montgomery, John DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Customer Services (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;672 (Charset Id = 4 Codepage = 65001) EMP_NO = 145 FIRST_NAME = Mark LAST_NAME = Guckenheimer PHONE_EXT = 221 HIRE_DATE = 1994/05/02 00:00:00.0000 DEPT_NO = 622 JOB_CODE = Eng JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 32,000.00 FULL_NAME = Guckenheimer, Mark DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Quality Assurance (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;622 (Charset Id = 4 Codepage = 65001) Current memory = 19,662,336 Delta memory = 16,416 Max memory = 19,757,280 Elapsed time= 0.010 sec Cpu = 0.010 sec Buffers = 2048 Reads = 2 Writes = 0 Fetches = 193 ------------------------------------------------------ With Named Parameter EMP_NO = 12 FIRST_NAME = Terri LAST_NAME = Lee PHONE_EXT = 256 HIRE_DATE = 1990/05/01 00:00:00.0000 DEPT_NO = 000 JOB_CODE = Admin JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 53,793.00 FULL_NAME = Lee, Terri DEPT_PATH = Corporate Headquarters (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset Id = 4 Codepage = 65001) EMP_NO = 8 FIRST_NAME = Leslie LAST_NAME = Johnson PHONE_EXT = 410 HIRE_DATE = 1989/04/05 00:00:00.0000 DEPT_NO = 180 JOB_CODE = Mktg JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 64,635.00 FULL_NAME = Johnson, Leslie DEPT_PATH = Corporate Headquarters / Sales and Marketing / Marketing (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;180 (Charset Id = 4 Codepage = 65001) EMP_NO = 5 FIRST_NAME = Kim LAST_NAME = Lambert PHONE_EXT = 22 HIRE_DATE = 1989/02/06 00:00:00.0000 DEPT_NO = 130 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 102,750.00 FULL_NAME = Lambert, Kim DEPT_PATH = Corporate Headquarters / Sales and Marketing / Field Office: East Coast (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;130 (Charset Id = 4 Codepage = 65001) EMP_NO = 11 FIRST_NAME = K. J. LAST_NAME = Weston PHONE_EXT = 34 HIRE_DATE = 1990/01/17 00:00:00.0000 DEPT_NO = 130 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 86,292.94 FULL_NAME = Weston, K. J. DEPT_PATH = Corporate Headquarters / Sales and Marketing / Field Office: East Coast (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;130 (Charset Id = 4 Codepage = 65001) EMP_NO = 2 FIRST_NAME = Robert LAST_NAME = Nelson PHONE_EXT = 250 HIRE_DATE = 1988/12/28 00:00:00.0000 DEPT_NO = 600 JOB_CODE = VP JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 105,900.00 FULL_NAME = Nelson, Robert DEPT_PATH = Corporate Headquarters / Engineering (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600 (Charset Id = 4 Codepage = 65001) EMP_NO = 4 FIRST_NAME = Bruce LAST_NAME = Young PHONE_EXT = 233 HIRE_DATE = 1988/12/28 00:00:00.0000 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 97,500.00 FULL_NAME = Young, Bruce DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Software Development (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;621 (Charset Id = 4 Codepage = 65001) EMP_NO = 9 FIRST_NAME = Phil LAST_NAME = Forest PHONE_EXT = 229 HIRE_DATE = 1989/04/17 00:00:00.0000 DEPT_NO = 622 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 75,060.00 FULL_NAME = Forest, Phil DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Quality Assurance (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;622 (Charset Id = 4 Codepage = 65001) EMP_NO = 15 FIRST_NAME = Katherine LAST_NAME = Young PHONE_EXT = 231 HIRE_DATE = 1990/06/14 00:00:00.0000 DEPT_NO = 623 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 67,241.25 FULL_NAME = Young, Katherine DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Customer Support (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;623 (Charset Id = 4 Codepage = 65001) EMP_NO = 20 FIRST_NAME = Chris LAST_NAME = Papadopoulos PHONE_EXT = 887 HIRE_DATE = 1990/01/01 00:00:00.0000 DEPT_NO = 671 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 89,655.00 FULL_NAME = Papadopoulos, Chris DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Research and Development (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;671 (Charset Id = 4 Codepage = 65001) EMP_NO = 24 FIRST_NAME = Pete LAST_NAME = Fisher PHONE_EXT = 888 HIRE_DATE = 1990/09/12 00:00:00.0000 DEPT_NO = 671 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 81,810.19 FULL_NAME = Fisher, Pete DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Research and Development (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;671 (Charset Id = 4 Codepage = 65001) EMP_NO = 14 FIRST_NAME = Stewart LAST_NAME = Hall PHONE_EXT = 227 HIRE_DATE = 1990/06/04 00:00:00.0000 DEPT_NO = 900 JOB_CODE = Finan JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 69,482.63 FULL_NAME = Hall, Stewart DEPT_PATH = Corporate Headquarters / Finance (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;900 (Charset Id = 4 Codepage = 65001) With Positional Parameter EMP_NO = 8 FIRST_NAME = Leslie LAST_NAME = Johnson PHONE_EXT = 410 HIRE_DATE = 1989/04/05 00:00:00.0000 DEPT_NO = 180 JOB_CODE = Mktg JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 64,635.00 FULL_NAME = Johnson, Leslie DEPT_PATH = Corporate Headquarters / Sales and Marketing / Marketing (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;180 (Charset Id = 4 Codepage = 65001) EMP_NO = 5 FIRST_NAME = Kim LAST_NAME = Lambert PHONE_EXT = 22 HIRE_DATE = 1989/02/06 00:00:00.0000 DEPT_NO = 130 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 102,750.00 FULL_NAME = Lambert, Kim DEPT_PATH = Corporate Headquarters / Sales and Marketing / Field Office: East Coast (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;100;130 (Charset Id = 4 Codepage = 65001) EMP_NO = 2 FIRST_NAME = Robert LAST_NAME = Nelson PHONE_EXT = 250 HIRE_DATE = 1988/12/28 00:00:00.0000 DEPT_NO = 600 JOB_CODE = VP JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 105,900.00 FULL_NAME = Nelson, Robert DEPT_PATH = Corporate Headquarters / Engineering (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600 (Charset Id = 4 Codepage = 65001) EMP_NO = 4 FIRST_NAME = Bruce LAST_NAME = Young PHONE_EXT = 233 HIRE_DATE = 1988/12/28 00:00:00.0000 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 97,500.00 FULL_NAME = Young, Bruce DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Software Development (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;621 (Charset Id = 4 Codepage = 65001) EMP_NO = 9 FIRST_NAME = Phil LAST_NAME = Forest PHONE_EXT = 229 HIRE_DATE = 1989/04/17 00:00:00.0000 DEPT_NO = 622 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 75,060.00 FULL_NAME = Forest, Phil DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Quality Assurance (Charset Id = 4 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;622 (Charset Id = 4 Codepage = 65001) Get Employee Project Metadata SQLType =SQL_TEXT sub type = 0 Table = GET_EMP_PROJ Owner = SYSDBA Column Name = PROJ_ID Alias Name = PROJ_ID Field Name = PROJ_ID Scale = 0 Charset id = 0 Nullable Size = 5 PROJ_ID = VBASE PROJ_ID = MAPDB Call Delete Employee - exception expected Terminated with Exception:Engine Code: 335544517 exception 2 -REASSIGN_SALES -Reassign the sales records before deleting this employee. -At procedure 'DELETE_EMPLOYEE' line: 19, col: 3 Scollable Cursors Do Fetch Next: EMP_NO = 2 FIRST_NAME = Robert LAST_NAME = Nelson PHONE_EXT = 250 HIRE_DATE = 1988/12/28 00:00:00.0000 DEPT_NO = 600 JOB_CODE = VP JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 105,900.00 FULL_NAME = Nelson, Robert Do Fetch Last: Test Completed with Error: Engine Code: 335544378 feature is not supported ------------------------------------------------------ Running Test 08: TIBDataset: Locate, Bookmark and Lookup Field No 1 Name = EMP_NO DataType = ftSmallint Field No 2 Name = FIRST_NAME DataType = ftString Field No 3 Name = LAST_NAME DataType = ftString Field No 4 Name = PHONE_EXT DataType = ftString Field No 5 Name = HIRE_DATE DataType = ftDateTime Field No 6 Name = DEPT_NO DataType = ftString Field No 7 Name = JOB_CODE DataType = ftString Field No 8 Name = JOB_GRADE DataType = ftSmallint Field No 9 Name = JOB_COUNTRY DataType = ftString Field No 10 Name = SALARY DataType = ftBCD Field No 11 Name = FULL_NAME DataType = ftString Field No 12 Name = DEPT_PATH DataType = ftString Field No 13 Name = DEPT_KEY_PATH DataType = ftString Field No -1 Name = HireYear DataType = ftInteger Field No -1 Name = HireDatePlus1 DataType = ftDate EMP_NO = 12 FIRST_NAME = Terri LAST_NAME = Lee PHONE_EXT = 256 HIRE_DATE = 01/5/1990 DEPT_NO = 000 JOB_CODE = Admin JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 53793 FULL_NAME = Lee, Terri DEPT_PATH = Corporate Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset = UTF8 Codepage = 65001) HireYear = 1990 HireDatePlus1 = 02/5/1990 EMP_NO = 36 FIRST_NAME = Roger LAST_NAME = Reeves PHONE_EXT = 6 HIRE_DATE = 25/4/1991 DEPT_NO = 120 JOB_CODE = Sales JOB_GRADE = 3 JOB_COUNTRY = England SALARY = 33620.63 FULL_NAME = Reeves, Roger DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;120 (Charset = UTF8 Codepage = 65001) HireYear = 1991 HireDatePlus1 = 26/4/1991 Back to EMP_NO = 12 EMP_NO = 12 FIRST_NAME = Terri LAST_NAME = Lee PHONE_EXT = 256 HIRE_DATE = 01/5/1990 DEPT_NO = 000 JOB_CODE = Admin JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 53793 FULL_NAME = Lee, Terri DEPT_PATH = Corporate Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset = UTF8 Codepage = 65001) HireYear = 1990 HireDatePlus1 = 02/5/1990 Locate Employee 20, First Name and Last Name Field No. 0 = Chris Field No. 1 = Papadopoulos Print All Row No = 1 EMP_NO = 2 FIRST_NAME = Robert LAST_NAME = Nelson PHONE_EXT = 250 HIRE_DATE = 28/12/1988 DEPT_NO = 600 JOB_CODE = VP JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 105900 FULL_NAME = Nelson, Robert DEPT_PATH = Corporate Headquarters / Engineering (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600 (Charset = UTF8 Codepage = 65001) HireYear = 1988 HireDatePlus1 = 29/12/1988 Row No = 2 EMP_NO = 4 FIRST_NAME = Bruce LAST_NAME = Young PHONE_EXT = 233 HIRE_DATE = 28/12/1988 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 97500 FULL_NAME = Young, Bruce DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Software Development (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;621 (Charset = UTF8 Codepage = 65001) HireYear = 1988 HireDatePlus1 = 29/12/1988 Row No = 3 EMP_NO = 5 FIRST_NAME = Kim LAST_NAME = Lambert PHONE_EXT = 22 HIRE_DATE = 06/2/1989 DEPT_NO = 130 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 102750 FULL_NAME = Lambert, Kim DEPT_PATH = Corporate Headquarters / Sales and Marketing / Field Office: East Coast (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;130 (Charset = UTF8 Codepage = 65001) HireYear = 1989 HireDatePlus1 = 07/2/1989 Row No = 4 EMP_NO = 8 FIRST_NAME = Leslie LAST_NAME = Johnson PHONE_EXT = 410 HIRE_DATE = 05/4/1989 DEPT_NO = 180 JOB_CODE = Mktg JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 64635 FULL_NAME = Johnson, Leslie DEPT_PATH = Corporate Headquarters / Sales and Marketing / Marketing (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;180 (Charset = UTF8 Codepage = 65001) HireYear = 1989 HireDatePlus1 = 06/4/1989 Row No = 5 EMP_NO = 9 FIRST_NAME = Phil LAST_NAME = Forest PHONE_EXT = 229 HIRE_DATE = 17/4/1989 DEPT_NO = 622 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 75060 FULL_NAME = Forest, Phil DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Quality Assurance (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;622 (Charset = UTF8 Codepage = 65001) HireYear = 1989 HireDatePlus1 = 18/4/1989 Row No = 6 EMP_NO = 11 FIRST_NAME = K. J. LAST_NAME = Weston PHONE_EXT = 34 HIRE_DATE = 17/1/1990 DEPT_NO = 130 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 86292.94 FULL_NAME = Weston, K. J. DEPT_PATH = Corporate Headquarters / Sales and Marketing / Field Office: East Coast (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;130 (Charset = UTF8 Codepage = 65001) HireYear = 1990 HireDatePlus1 = 18/1/1990 Row No = 7 EMP_NO = 12 FIRST_NAME = Terri LAST_NAME = Lee PHONE_EXT = 256 HIRE_DATE = 01/5/1990 DEPT_NO = 000 JOB_CODE = Admin JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 53793 FULL_NAME = Lee, Terri DEPT_PATH = Corporate Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset = UTF8 Codepage = 65001) HireYear = 1990 HireDatePlus1 = 02/5/1990 Row No = 8 EMP_NO = 14 FIRST_NAME = Stewart LAST_NAME = Hall PHONE_EXT = 227 HIRE_DATE = 04/6/1990 DEPT_NO = 900 JOB_CODE = Finan JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 69482.63 FULL_NAME = Hall, Stewart DEPT_PATH = Corporate Headquarters / Finance (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;900 (Charset = UTF8 Codepage = 65001) HireYear = 1990 HireDatePlus1 = 05/6/1990 Row No = 9 EMP_NO = 15 FIRST_NAME = Katherine LAST_NAME = Young PHONE_EXT = 231 HIRE_DATE = 14/6/1990 DEPT_NO = 623 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 67241.25 FULL_NAME = Young, Katherine DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Customer Support (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;623 (Charset = UTF8 Codepage = 65001) HireYear = 1990 HireDatePlus1 = 15/6/1990 Row No = 10 EMP_NO = 20 FIRST_NAME = Chris LAST_NAME = Papadopoulos PHONE_EXT = 887 HIRE_DATE = 01/1/1990 DEPT_NO = 671 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 89655 FULL_NAME = Papadopoulos, Chris DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Research and Development (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;671 (Charset = UTF8 Codepage = 65001) HireYear = 1990 HireDatePlus1 = 02/1/1990 Row No = 11 EMP_NO = 24 FIRST_NAME = Pete LAST_NAME = Fisher PHONE_EXT = 888 HIRE_DATE = 12/9/1990 DEPT_NO = 671 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 81810.19 FULL_NAME = Fisher, Pete DEPT_PATH = Corporate Headquarters / Engineering / Consumer Electronics Div. / Research and Development (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;670;671 (Charset = UTF8 Codepage = 65001) HireYear = 1990 HireDatePlus1 = 13/9/1990 Row No = 12 EMP_NO = 28 FIRST_NAME = Ann LAST_NAME = Bennet PHONE_EXT = 5 HIRE_DATE = 01/2/1991 DEPT_NO = 120 JOB_CODE = Admin JOB_GRADE = 5 JOB_COUNTRY = England SALARY = 22935 FULL_NAME = Bennet, Ann DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;120 (Charset = UTF8 Codepage = 65001) HireYear = 1991 HireDatePlus1 = 02/2/1991 Row No = 13 EMP_NO = 29 FIRST_NAME = Roger LAST_NAME = De Souza PHONE_EXT = 288 HIRE_DATE = 18/2/1991 DEPT_NO = 623 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 69482.63 FULL_NAME = De Souza, Roger DEPT_PATH = Corporate Headquarters / Engineering / Software Products Div. / Customer Support (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;600;620;623 (Charset = UTF8 Codepage = 65001) HireYear = 1991 HireDatePlus1 = 19/2/1991 Row No = 14 EMP_NO = 34 FIRST_NAME = Janet LAST_NAME = Baldwin PHONE_EXT = 2 HIRE_DATE = 21/3/1991 DEPT_NO = 110 JOB_CODE = Sales JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 61637.81 FULL_NAME = Baldwin, Janet DEPT_PATH = Corporate Headquarters / Sales and Marketing / Pacific Rim Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;110 (Charset = UTF8 Codepage = 65001) HireYear = 1991 HireDatePlus1 = 22/3/1991 Row No = 15 EMP_NO = 36 FIRST_NAME = Roger LAST_NAME = Reeves PHONE_EXT = 6 HIRE_DATE = 25/4/1991 DEPT_NO = 120 JOB_CODE = Sales JOB_GRADE = 3 JOB_COUNTRY = England SALARY = 33620.63 FULL_NAME = Reeves, Roger DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;120 (Charset = UTF8 Codepage = 65001) HireYear = 1991 HireDatePlus1 = 26/4/1991 Row No = 16 EMP_NO = 37 FIRST_NAME = Willie LAST_NAME = Stansbury PHONE_EXT = 7 HIRE_DATE = 25/4/1991 DEPT_NO = 120 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = England SALARY = 39224.06 FULL_NAME = Stansbury, Willie DEPT_PATH = Corporate Headquarters / Sales and Marketing / European Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000;100;120 (Charset = UTF8 Codepage = 65001) HireYear = 1991 HireDatePlus1 = 26/4/1991 Rows printed = 16 ------------------------------------------------------ Running Test 09: Extract DDL from example Employee Database Extracting Database Schema and Data SET SQL DIALECT 3; SET AUTODDL ON; /* CREATE DATABASE 'inet://localhost/employee' PAGE_SIZE 8192 DEFAULT CHARACTER SET NONE; */ /* Domain definitions */ CREATE DOMAIN ADDRESSLINE AS VARCHAR(30); CREATE DOMAIN BUDGET AS DECIMAL(12,2) DEFAULT 50000; CREATE DOMAIN COUNTRYNAME AS VARCHAR(15); CREATE DOMAIN CUSTNO AS INTEGER; CREATE DOMAIN DEPTNO AS CHAR(3); CREATE DOMAIN EMPNO AS SMALLINT; CREATE DOMAIN FIRSTNAME AS VARCHAR(15); CREATE DOMAIN JOBCODE AS VARCHAR(5); CREATE DOMAIN JOBGRADE AS SMALLINT; CREATE DOMAIN LASTNAME AS VARCHAR(20); CREATE DOMAIN PHONENUMBER AS VARCHAR(20); CREATE DOMAIN PONUMBER AS CHAR(8); CREATE DOMAIN PRODTYPE AS VARCHAR(12) DEFAULT 'software' NOT NULL; CREATE DOMAIN PROJNO AS CHAR(5); CREATE DOMAIN SALARY AS NUMERIC(10,2) DEFAULT 0; /* Table: COUNTRY, Owner: SYSDBA */ CREATE TABLE COUNTRY ( COUNTRY COUNTRYNAME NOT NULL, CURRENCY VARCHAR(10) NOT NULL, PRIMARY KEY (COUNTRY) ); /* Table: CUSTOMER, Owner: SYSDBA */ CREATE TABLE CUSTOMER ( CUST_NO CUSTNO NOT NULL, CUSTOMER VARCHAR(25) NOT NULL, CONTACT_FIRST FIRSTNAME, CONTACT_LAST LASTNAME, PHONE_NO PHONENUMBER, ADDRESS_LINE1 ADDRESSLINE, ADDRESS_LINE2 ADDRESSLINE, CITY VARCHAR(25), STATE_PROVINCE VARCHAR(15), COUNTRY COUNTRYNAME, POSTAL_CODE VARCHAR(12), ON_HOLD CHAR(1) DEFAULT NULL, PRIMARY KEY (CUST_NO) ); /* Table: DEPARTMENT, Owner: SYSDBA */ CREATE TABLE DEPARTMENT ( DEPT_NO DEPTNO NOT NULL, DEPARTMENT VARCHAR(25) NOT NULL, HEAD_DEPT DEPTNO, MNGR_NO EMPNO, BUDGET BUDGET, LOCATION VARCHAR(15), PHONE_NO PHONENUMBER DEFAULT '555-1234', UNIQUE (DEPARTMENT), PRIMARY KEY (DEPT_NO) ); /* Table: EMPLOYEE, Owner: SYSDBA */ CREATE TABLE EMPLOYEE ( EMP_NO EMPNO NOT NULL, FIRST_NAME FIRSTNAME NOT NULL, LAST_NAME LASTNAME NOT NULL, PHONE_EXT VARCHAR(4), HIRE_DATE TIMESTAMP DEFAULT 'NOW' NOT NULL, DEPT_NO DEPTNO NOT NULL, JOB_CODE JOBCODE NOT NULL, JOB_GRADE JOBGRADE NOT NULL, JOB_COUNTRY COUNTRYNAME NOT NULL, SALARY SALARY NOT NULL, FULL_NAME COMPUTED BY (last_name || ', ' || first_name), PRIMARY KEY (EMP_NO) ); /* Table: EMPLOYEE_PROJECT, Owner: SYSDBA */ CREATE TABLE EMPLOYEE_PROJECT ( EMP_NO EMPNO NOT NULL, PROJ_ID PROJNO NOT NULL, PRIMARY KEY (EMP_NO, PROJ_ID) ); /* Table: JOB, Owner: SYSDBA */ CREATE TABLE JOB ( JOB_CODE JOBCODE NOT NULL, JOB_GRADE JOBGRADE NOT NULL, JOB_COUNTRY COUNTRYNAME NOT NULL, JOB_TITLE VARCHAR(25) NOT NULL, MIN_SALARY SALARY NOT NULL, MAX_SALARY SALARY NOT NULL, JOB_REQUIREMENT BLOB SUB_TYPE TEXT SEGMENT SIZE 400, LANGUAGE_REQ VARCHAR(15)[1:5], PRIMARY KEY (JOB_CODE, JOB_GRADE, JOB_COUNTRY) ); /* Table: PROJECT, Owner: SYSDBA */ CREATE TABLE PROJECT ( PROJ_ID PROJNO NOT NULL, PROJ_NAME VARCHAR(20) NOT NULL, PROJ_DESC BLOB SUB_TYPE TEXT SEGMENT SIZE 800, TEAM_LEADER EMPNO, PRODUCT PRODTYPE, UNIQUE (PROJ_NAME), PRIMARY KEY (PROJ_ID) ); /* Table: PROJ_DEPT_BUDGET, Owner: SYSDBA */ CREATE TABLE PROJ_DEPT_BUDGET ( FISCAL_YEAR INTEGER NOT NULL, PROJ_ID PROJNO NOT NULL, DEPT_NO DEPTNO NOT NULL, QUART_HEAD_CNT INTEGER[1:4], PROJECTED_BUDGET BUDGET, PRIMARY KEY (FISCAL_YEAR, PROJ_ID, DEPT_NO) ); /* Table: SALARY_HISTORY, Owner: SYSDBA */ CREATE TABLE SALARY_HISTORY ( EMP_NO EMPNO NOT NULL, CHANGE_DATE TIMESTAMP DEFAULT 'NOW' NOT NULL, UPDATER_ID VARCHAR(20) NOT NULL, OLD_SALARY SALARY NOT NULL, PERCENT_CHANGE DOUBLE PRECISION DEFAULT 0 NOT NULL, NEW_SALARY COMPUTED BY (old_salary + old_salary * percent_change / 100), PRIMARY KEY (EMP_NO, CHANGE_DATE, UPDATER_ID) ); /* Table: SALES, Owner: SYSDBA */ CREATE TABLE SALES ( PO_NUMBER PONUMBER NOT NULL, CUST_NO CUSTNO NOT NULL, SALES_REP EMPNO, ORDER_STATUS VARCHAR(7) DEFAULT 'new' NOT NULL, ORDER_DATE TIMESTAMP DEFAULT 'NOW' NOT NULL, SHIP_DATE TIMESTAMP, DATE_NEEDED TIMESTAMP, PAID CHAR(1) DEFAULT 'n', QTY_ORDERED INTEGER DEFAULT 1 NOT NULL, TOTAL_VALUE DECIMAL(9,2) NOT NULL, DISCOUNT FLOAT DEFAULT 0 NOT NULL, ITEM_TYPE PRODTYPE, AGED COMPUTED BY (ship_date - order_date), PRIMARY KEY (PO_NUMBER) ); /* Index definitions for all user tables */ CREATE INDEX CUSTNAMEX ON CUSTOMER(CUSTOMER); CREATE INDEX CUSTREGION ON CUSTOMER(COUNTRY, CITY); CREATE DESCENDING INDEX BUDGETX ON DEPARTMENT(BUDGET); CREATE INDEX NAMEX ON EMPLOYEE(LAST_NAME, FIRST_NAME); CREATE DESCENDING INDEX MAXSALX ON JOB(JOB_COUNTRY, MAX_SALARY); CREATE INDEX MINSALX ON JOB(JOB_COUNTRY, MIN_SALARY); CREATE UNIQUE INDEX PRODTYPEX ON PROJECT(PRODUCT, PROJ_NAME); CREATE DESCENDING INDEX CHANGEX ON SALARY_HISTORY(CHANGE_DATE); CREATE INDEX UPDATERX ON SALARY_HISTORY(UPDATER_ID); CREATE INDEX NEEDX ON SALES(DATE_NEEDED); CREATE DESCENDING INDEX QTYX ON SALES(ITEM_TYPE, QTY_ORDERED); CREATE INDEX SALESTATX ON SALES(ORDER_STATUS, PAID); ALTER TABLE CUSTOMER ADD FOREIGN KEY (COUNTRY) REFERENCES COUNTRY (COUNTRY); ALTER TABLE DEPARTMENT ADD FOREIGN KEY (HEAD_DEPT) REFERENCES DEPARTMENT (DEPT_NO); ALTER TABLE DEPARTMENT ADD FOREIGN KEY (MNGR_NO) REFERENCES EMPLOYEE (EMP_NO); ALTER TABLE EMPLOYEE ADD FOREIGN KEY (DEPT_NO) REFERENCES DEPARTMENT (DEPT_NO); ALTER TABLE EMPLOYEE ADD FOREIGN KEY (JOB_CODE, JOB_GRADE, JOB_COUNTRY) REFERENCES JOB (JOB_CODE, JOB_GRADE, JOB_COUNTRY); ALTER TABLE EMPLOYEE_PROJECT ADD FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE (EMP_NO); ALTER TABLE EMPLOYEE_PROJECT ADD FOREIGN KEY (PROJ_ID) REFERENCES PROJECT (PROJ_ID); ALTER TABLE JOB ADD FOREIGN KEY (JOB_COUNTRY) REFERENCES COUNTRY (COUNTRY); ALTER TABLE PROJECT ADD FOREIGN KEY (TEAM_LEADER) REFERENCES EMPLOYEE (EMP_NO); ALTER TABLE PROJ_DEPT_BUDGET ADD FOREIGN KEY (DEPT_NO) REFERENCES DEPARTMENT (DEPT_NO); ALTER TABLE PROJ_DEPT_BUDGET ADD FOREIGN KEY (PROJ_ID) REFERENCES PROJECT (PROJ_ID); ALTER TABLE SALARY_HISTORY ADD FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE (EMP_NO); ALTER TABLE SALES ADD FOREIGN KEY (CUST_NO) REFERENCES CUSTOMER (CUST_NO); ALTER TABLE SALES ADD FOREIGN KEY (SALES_REP) REFERENCES EMPLOYEE (EMP_NO); CREATE SEQUENCE CUST_NO_GEN; CREATE SEQUENCE EMP_NO_GEN; /* View: PHONE_LIST, Owner: SYSDBA */ CREATE VIEW PHONE_LIST ( EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, LOCATION, PHONE_NO ) AS SELECT emp_no, first_name, last_name, phone_ext, location, phone_no FROM employee, department WHERE employee.dept_no = department.dept_no ; /* Add Domain Check Constraints */ ALTER DOMAIN BUDGET ADD CONSTRAINT CHECK (VALUE > 10000 AND VALUE <= 2000000); ALTER DOMAIN CUSTNO ADD CONSTRAINT CHECK (VALUE > 1000); ALTER DOMAIN DEPTNO ADD CONSTRAINT CHECK (VALUE = '000' OR (VALUE > '0' AND VALUE <= '999') OR VALUE IS NULL); ALTER DOMAIN JOBCODE ADD CONSTRAINT CHECK (VALUE > '99999'); ALTER DOMAIN JOBGRADE ADD CONSTRAINT CHECK (VALUE BETWEEN 0 AND 6); ALTER DOMAIN PONUMBER ADD CONSTRAINT CHECK (VALUE STARTING WITH 'V'); ALTER DOMAIN PRODTYPE ADD CONSTRAINT CHECK (VALUE IN ('software', 'hardware', 'other', 'N/A')); ALTER DOMAIN PROJNO ADD CONSTRAINT CHECK (VALUE = UPPER (VALUE)); ALTER DOMAIN SALARY ADD CONSTRAINT CHECK (VALUE > 0); ALTER TABLE JOB ADD CHECK (min_salary < max_salary); ALTER TABLE EMPLOYEE ADD CHECK ( salary >= (SELECT min_salary FROM job WHERE job.job_code = employee.job_code AND job.job_grade = employee.job_grade AND job.job_country = employee.job_country) AND salary <= (SELECT max_salary FROM job WHERE job.job_code = employee.job_code AND job.job_grade = employee.job_grade AND job.job_country = employee.job_country)); ALTER TABLE PROJ_DEPT_BUDGET ADD CHECK (FISCAL_YEAR >= 1993); ALTER TABLE SALARY_HISTORY ADD CHECK (percent_change between -50 and 50); ALTER TABLE CUSTOMER ADD CHECK (on_hold IS NULL OR on_hold = '*'); ALTER TABLE SALES ADD CHECK (order_status in ('new', 'open', 'shipped', 'waiting')); ALTER TABLE SALES ADD CHECK (ship_date >= order_date OR ship_date IS NULL); ALTER TABLE SALES ADD CHECK (date_needed > order_date OR date_needed IS NULL); ALTER TABLE SALES ADD CHECK (paid in ('y', 'n')); ALTER TABLE SALES ADD CHECK (qty_ordered >= 1); ALTER TABLE SALES ADD CHECK (total_value >= 0); ALTER TABLE SALES ADD CHECK (discount >= 0 AND discount <= 1); ALTER TABLE SALES ADD CHECK (NOT (order_status = 'shipped' AND ship_date IS NULL)); ALTER TABLE SALES ADD CHECK (NOT (order_status = 'shipped' AND EXISTS (SELECT on_hold FROM customer WHERE customer.cust_no = sales.cust_no AND customer.on_hold = '*'))); /* Exceptions */ CREATE EXCEPTION CUSTOMER_CHECK 'Overdue balance -- can not ship.'; CREATE EXCEPTION CUSTOMER_ON_HOLD 'This customer is on hold.'; CREATE EXCEPTION ORDER_ALREADY_SHIPPED 'Order status is "shipped."'; CREATE EXCEPTION REASSIGN_SALES 'Reassign the sales records before deleting this employee.'; CREATE EXCEPTION UNKNOWN_EMP_ID 'Invalid employee number or project id.'; COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Stored procedures Definitions*/ CREATE PROCEDURE SHOW_LANGS ( CODE VARCHAR(5) CHARACTER SET NONE, GRADE SMALLINT, CTY VARCHAR(15) CHARACTER SET NONE ) RETURNS ( LANGUAGES VARCHAR(15) CHARACTER SET NONE ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE ADD_EMP_PROJ ( EMP_NO SMALLINT, PROJ_ID CHAR(5) CHARACTER SET NONE ) AS BEGIN EXIT; END ^ CREATE PROCEDURE ALL_LANGS RETURNS ( CODE VARCHAR(5) CHARACTER SET NONE, GRADE VARCHAR(5) CHARACTER SET NONE, COUNTRY VARCHAR(15) CHARACTER SET NONE, LANG VARCHAR(15) CHARACTER SET NONE ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE DELETE_EMPLOYEE ( EMP_NUM INTEGER ) AS BEGIN EXIT; END ^ CREATE PROCEDURE DEPT_BUDGET ( DNO CHAR(3) CHARACTER SET NONE ) RETURNS ( TOT DECIMAL(12,2) ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE GET_EMP_PROJ ( EMP_NO SMALLINT ) RETURNS ( PROJ_ID CHAR(5) CHARACTER SET NONE ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE MAIL_LABEL ( CUST_NO INTEGER ) RETURNS ( LINE1 CHAR(40) CHARACTER SET NONE, LINE2 CHAR(40) CHARACTER SET NONE, LINE3 CHAR(40) CHARACTER SET NONE, LINE4 CHAR(40) CHARACTER SET NONE, LINE5 CHAR(40) CHARACTER SET NONE, LINE6 CHAR(40) CHARACTER SET NONE ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE ORG_CHART RETURNS ( HEAD_DEPT CHAR(25) CHARACTER SET NONE, DEPARTMENT CHAR(25) CHARACTER SET NONE, MNGR_NAME CHAR(20) CHARACTER SET NONE, TITLE CHAR(5) CHARACTER SET NONE, EMP_CNT INTEGER ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE SHIP_ORDER ( PO_NUM CHAR(8) CHARACTER SET NONE ) AS BEGIN EXIT; END ^ CREATE PROCEDURE SUB_TOT_BUDGET ( HEAD_DEPT CHAR(3) CHARACTER SET NONE ) RETURNS ( TOT_BUDGET DECIMAL(12,2), AVG_BUDGET DECIMAL(12,2), MIN_BUDGET DECIMAL(12,2), MAX_BUDGET DECIMAL(12,2) ) AS BEGIN SUSPEND; EXIT; END ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; SET TERM ^; /* Triggers only will work for SQL triggers */ CREATE TRIGGER SET_CUST_NO FOR CUSTOMER ACTIVE BEFORE INSERT POSITION 0 AS BEGIN if (new.cust_no is null) then new.cust_no = gen_id(cust_no_gen, 1); END ^ CREATE TRIGGER SET_EMP_NO FOR EMPLOYEE ACTIVE BEFORE INSERT POSITION 0 AS BEGIN if (new.emp_no is null) then new.emp_no = gen_id(emp_no_gen, 1); END ^ CREATE TRIGGER SAVE_SALARY_CHANGE FOR EMPLOYEE ACTIVE AFTER UPDATE POSITION 0 AS BEGIN IF (old.salary <> new.salary) THEN INSERT INTO salary_history (emp_no, change_date, updater_id, old_salary, percent_change) VALUES ( old.emp_no, 'NOW', user, old.salary, (new.salary - old.salary) * 100 / old.salary); END ^ CREATE TRIGGER POST_NEW_ORDER FOR SALES ACTIVE AFTER INSERT POSITION 0 AS BEGIN POST_EVENT 'new_order'; END ^ COMMIT WORK^ SET TERM ;^ COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Stored procedure Bodies */ ALTER PROCEDURE SHOW_LANGS ( CODE VARCHAR(5) CHARACTER SET NONE, GRADE SMALLINT, CTY VARCHAR(15) CHARACTER SET NONE ) RETURNS ( LANGUAGES VARCHAR(15) CHARACTER SET NONE ) AS DECLARE VARIABLE i INTEGER; BEGIN i = 1; WHILE (i <= 5) DO BEGIN SELECT language_req[:i] FROM joB WHERE ((job_code = :code) AND (job_grade = :grade) AND (job_country = :cty) AND (language_req IS NOT NULL)) INTO :languages; IF (languages = ' ') THEN /* Prints 'NULL' instead of blanks */ languages = 'NULL'; i = i +1; SUSPEND; END END ^ ALTER PROCEDURE ADD_EMP_PROJ ( EMP_NO SMALLINT, PROJ_ID CHAR(5) CHARACTER SET NONE ) AS BEGIN BEGIN INSERT INTO employee_project (emp_no, proj_id) VALUES (:emp_no, :proj_id); WHEN SQLCODE -530 DO EXCEPTION unknown_emp_id; END END ^ ALTER PROCEDURE ALL_LANGS RETURNS ( CODE VARCHAR(5) CHARACTER SET NONE, GRADE VARCHAR(5) CHARACTER SET NONE, COUNTRY VARCHAR(15) CHARACTER SET NONE, LANG VARCHAR(15) CHARACTER SET NONE ) AS BEGIN FOR SELECT job_code, job_grade, job_country FROM job INTO :code, :grade, :country DO BEGIN FOR SELECT languages FROM show_langs (:code, :grade, :country) INTO :lang DO SUSPEND; /* Put nice separators between rows */ code = '====='; grade = '====='; country = '==============='; lang = '=============='; SUSPEND; END END ^ ALTER PROCEDURE DELETE_EMPLOYEE ( EMP_NUM INTEGER ) AS DECLARE VARIABLE any_sales INTEGER; BEGIN any_sales = 0; /* * If there are any sales records referencing this employee, * can't delete the employee until the sales are re-assigned * to another employee or changed to NULL. */ SELECT count(po_number) FROM sales WHERE sales_rep = :emp_num INTO :any_sales; IF (any_sales > 0) THEN BEGIN EXCEPTION reassign_sales; END /* * If the employee is a manager, update the department. */ UPDATE department SET mngr_no = NULL WHERE mngr_no = :emp_num; /* * If the employee is a project leader, update project. */ UPDATE project SET team_leader = NULL WHERE team_leader = :emp_num; /* * Delete the employee from any projects. */ DELETE FROM employee_project WHERE emp_no = :emp_num; /* * Delete old salary records. */ DELETE FROM salary_history WHERE emp_no = :emp_num; /* * Delete the employee. */ DELETE FROM employee WHERE emp_no = :emp_num; END ^ ALTER PROCEDURE DEPT_BUDGET ( DNO CHAR(3) CHARACTER SET NONE ) RETURNS ( TOT DECIMAL(12,2) ) AS DECLARE VARIABLE sumb DECIMAL(12, 2); DECLARE VARIABLE rdno CHAR(3); DECLARE VARIABLE cnt INTEGER; BEGIN tot = 0; SELECT budget FROM department WHERE dept_no = :dno INTO :tot; SELECT count(budget) FROM department WHERE head_dept = :dno INTO :cnt; IF (cnt = 0) THEN SUSPEND; FOR SELECT dept_no FROM department WHERE head_dept = :dno INTO :rdno DO BEGIN EXECUTE PROCEDURE dept_budget :rdno RETURNING_VALUES :sumb; tot = tot + sumb; END SUSPEND; END ^ ALTER PROCEDURE GET_EMP_PROJ ( EMP_NO SMALLINT ) RETURNS ( PROJ_ID CHAR(5) CHARACTER SET NONE ) AS BEGIN FOR SELECT proj_id FROM employee_project WHERE emp_no = :emp_no INTO :proj_id DO SUSPEND; END ^ ALTER PROCEDURE MAIL_LABEL ( CUST_NO INTEGER ) RETURNS ( LINE1 CHAR(40) CHARACTER SET NONE, LINE2 CHAR(40) CHARACTER SET NONE, LINE3 CHAR(40) CHARACTER SET NONE, LINE4 CHAR(40) CHARACTER SET NONE, LINE5 CHAR(40) CHARACTER SET NONE, LINE6 CHAR(40) CHARACTER SET NONE ) AS DECLARE VARIABLE customer VARCHAR(25); DECLARE VARIABLE first_name VARCHAR(15); DECLARE VARIABLE last_name VARCHAR(20); DECLARE VARIABLE addr1 VARCHAR(30); DECLARE VARIABLE addr2 VARCHAR(30); DECLARE VARIABLE city VARCHAR(25); DECLARE VARIABLE state VARCHAR(15); DECLARE VARIABLE country VARCHAR(15); DECLARE VARIABLE postcode VARCHAR(12); DECLARE VARIABLE cnt INTEGER; BEGIN line1 = ''; line2 = ''; line3 = ''; line4 = ''; line5 = ''; line6 = ''; SELECT customer, contact_first, contact_last, address_line1, address_line2, city, state_province, country, postal_code FROM CUSTOMER WHERE cust_no = :cust_no INTO :customer, :first_name, :last_name, :addr1, :addr2, :city, :state, :country, :postcode; IF (customer IS NOT NULL) THEN line1 = customer; IF (first_name IS NOT NULL) THEN line2 = first_name || ' ' || last_name; ELSE line2 = last_name; IF (addr1 IS NOT NULL) THEN line3 = addr1; IF (addr2 IS NOT NULL) THEN line4 = addr2; IF (country = 'USA') THEN BEGIN IF (city IS NOT NULL) THEN line5 = city || ', ' || state || ' ' || postcode; ELSE line5 = state || ' ' || postcode; END ELSE BEGIN IF (city IS NOT NULL) THEN line5 = city || ', ' || state; ELSE line5 = state; line6 = country || ' ' || postcode; END SUSPEND; END ^ ALTER PROCEDURE ORG_CHART RETURNS ( HEAD_DEPT CHAR(25) CHARACTER SET NONE, DEPARTMENT CHAR(25) CHARACTER SET NONE, MNGR_NAME CHAR(20) CHARACTER SET NONE, TITLE CHAR(5) CHARACTER SET NONE, EMP_CNT INTEGER ) AS DECLARE VARIABLE mngr_no INTEGER; DECLARE VARIABLE dno CHAR(3); BEGIN FOR SELECT h.department, d.department, d.mngr_no, d.dept_no FROM department d LEFT OUTER JOIN department h ON d.head_dept = h.dept_no ORDER BY d.dept_no INTO :head_dept, :department, :mngr_no, :dno DO BEGIN IF (:mngr_no IS NULL) THEN BEGIN mngr_name = '--TBH--'; title = ''; END ELSE SELECT full_name, job_code FROM employee WHERE emp_no = :mngr_no INTO :mngr_name, :title; SELECT COUNT(emp_no) FROM employee WHERE dept_no = :dno INTO :emp_cnt; SUSPEND; END END ^ ALTER PROCEDURE SHIP_ORDER ( PO_NUM CHAR(8) CHARACTER SET NONE ) AS DECLARE VARIABLE ord_stat CHAR(7); DECLARE VARIABLE hold_stat CHAR(1); DECLARE VARIABLE cust_no INTEGER; DECLARE VARIABLE any_po CHAR(8); BEGIN SELECT s.order_status, c.on_hold, c.cust_no FROM sales s, customer c WHERE po_number = :po_num AND s.cust_no = c.cust_no INTO :ord_stat, :hold_stat, :cust_no; /* This purchase order has been already shipped. */ IF (ord_stat = 'shipped') THEN BEGIN EXCEPTION order_already_shipped; END /* Customer is on hold. */ ELSE IF (hold_stat = '*') THEN BEGIN EXCEPTION customer_on_hold; END /* * If there is an unpaid balance on orders shipped over 2 months ago, * put the customer on hold. */ FOR SELECT po_number FROM sales WHERE cust_no = :cust_no AND order_status = 'shipped' AND paid = 'n' AND ship_date < CAST('NOW' AS TIMESTAMP) - 60 INTO :any_po DO BEGIN EXCEPTION customer_check; END /* * Ship the order. */ UPDATE sales SET order_status = 'shipped', ship_date = 'NOW' WHERE po_number = :po_num; END ^ ALTER PROCEDURE SUB_TOT_BUDGET ( HEAD_DEPT CHAR(3) CHARACTER SET NONE ) RETURNS ( TOT_BUDGET DECIMAL(12,2), AVG_BUDGET DECIMAL(12,2), MIN_BUDGET DECIMAL(12,2), MAX_BUDGET DECIMAL(12,2) ) AS BEGIN SELECT SUM(budget), AVG(budget), MIN(budget), MAX(budget) FROM department WHERE head_dept = :head_dept INTO :tot_budget, :avg_budget, :min_budget, :max_budget; SUSPEND; END ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; /* Comments on System Objects */ /* Grant Roles for this database */ /* Grant permissions for this database */ GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE COUNTRY TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE CUSTOMER TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE DEPARTMENT TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE EMPLOYEE TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE EMPLOYEE_PROJECT TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE JOB TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE PHONE_LIST TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE PROJECT TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE PROJ_DEPT_BUDGET TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE SALARY_HISTORY TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE SALES TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE ADD_EMP_PROJ TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE ALL_LANGS TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE DELETE_EMPLOYEE TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE DEPT_BUDGET TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE GET_EMP_PROJ TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE MAIL_LABEL TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE ORG_CHART TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE SHIP_ORDER TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE SHOW_LANGS TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE SUB_TOT_BUDGET TO USER PUBLIC WITH GRANT OPTION ; ------------------------------------------------------ Running Test 10: Create Database from SQL Script and Extract SQL Creating Database from resources/Test10.sql SET SQL DIALECT 3; SET AUTODDL ON; CREATE DATABASE 'inet://localhost//tmp/ibx-testsuite/testsuite1.fdb' PAGE_SIZE 8192 DEFAULT CHARACTER SET NONE; COMMENT ON DATABASE IS 'Employee Test DB'; /* Domain definitions */ CREATE DOMAIN ADDRESSLINE AS VARCHAR(30); CREATE DOMAIN BUDGET AS DECIMAL(12,2) DEFAULT 50000; CREATE DOMAIN COUNTRYNAME AS VARCHAR(15); CREATE DOMAIN CUSTNO AS INTEGER; CREATE DOMAIN DEPTNO AS CHAR(3); CREATE DOMAIN EMPNO AS SMALLINT; CREATE DOMAIN FB$OUT_TYPE AS BLOB SUB_TYPE TEXT SEGMENT SIZE 80 NOT NULL; CREATE DOMAIN FIRSTNAME AS VARCHAR(15); CREATE DOMAIN JOBCODE AS VARCHAR(5); CREATE DOMAIN JOBGRADE AS SMALLINT; CREATE DOMAIN LASTNAME AS VARCHAR(20); CREATE DOMAIN PHONENUMBER AS VARCHAR(20); CREATE DOMAIN PONUMBER AS CHAR(8); CREATE DOMAIN PRODTYPE AS VARCHAR(12) DEFAULT 'software' NOT NULL; CREATE DOMAIN PROJNO AS CHAR(5); CREATE DOMAIN SALARY AS NUMERIC(10,2) DEFAULT 0; /* Table: COUNTRIES, Owner: SYSDBA */ CREATE TABLE COUNTRIES ( COUNTRY VARCHAR(64) NOT NULL, NONEU SMALLINT, ISO2 CHAR(2), ISO3 CHAR(3), PRIMARY KEY (COUNTRY) ); COMMENT ON TABLE COUNTRIES IS 'List of Countries'; COMMENT ON COLUMN COUNTRIES.ISO2 IS 'Two Character ISO Country Code'; /* Table: COUNTRY, Owner: SYSDBA */ CREATE TABLE COUNTRY ( COUNTRY COUNTRYNAME NOT NULL, CURRENCY VARCHAR(10) NOT NULL, PRIMARY KEY (COUNTRY) ); /* Table: CUSTOMER, Owner: SYSDBA */ CREATE TABLE CUSTOMER ( CUST_NO CUSTNO NOT NULL, CUSTOMER VARCHAR(25) NOT NULL, CONTACT_FIRST FIRSTNAME, CONTACT_LAST LASTNAME, PHONE_NO PHONENUMBER, ADDRESS_LINE1 ADDRESSLINE, ADDRESS_LINE2 ADDRESSLINE, CITY VARCHAR(25), STATE_PROVINCE VARCHAR(15), COUNTRY COUNTRYNAME, POSTAL_CODE VARCHAR(12), ON_HOLD CHAR(1) DEFAULT NULL, LONG_REFERENCE BIGINT, PRIMARY KEY (CUST_NO) ); /* Table: DEPARTMENT, Owner: SYSDBA */ CREATE TABLE DEPARTMENT ( DEPT_NO DEPTNO NOT NULL, DEPARTMENT VARCHAR(25) NOT NULL, HEAD_DEPT DEPTNO, MNGR_NO EMPNO, BUDGET BUDGET, LOCATION VARCHAR(15), PHONE_NO PHONENUMBER DEFAULT '555-1234', UNIQUE (DEPARTMENT), PRIMARY KEY (DEPT_NO) ); /* Table: EMPLOYEE, Owner: SYSDBA */ CREATE TABLE EMPLOYEE ( EMP_NO EMPNO NOT NULL, FIRST_NAME FIRSTNAME NOT NULL, LAST_NAME LASTNAME NOT NULL, PHONE_EXT VARCHAR(4), HIRE_DATE TIMESTAMP DEFAULT 'NOW' NOT NULL, DEPT_NO DEPTNO NOT NULL, JOB_CODE JOBCODE NOT NULL, JOB_GRADE JOBGRADE NOT NULL, JOB_COUNTRY COUNTRYNAME NOT NULL, SALARY SALARY NOT NULL, FULL_NAME COMPUTED BY (last_name || ', ' || first_name), PRIMARY KEY (EMP_NO) ); /* Table: EMPLOYEE_PROJECT, Owner: SYSDBA */ CREATE TABLE EMPLOYEE_PROJECT ( EMP_NO EMPNO NOT NULL, PROJ_ID PROJNO NOT NULL, PRIMARY KEY (EMP_NO, PROJ_ID) ); /* Table: FB$OUT_TABLE, Owner: SYSDBA */ CREATE GLOBAL TEMPORARY TABLE FB$OUT_TABLE ( LINE_NUM INTEGER, CONTENT FB$OUT_TYPE ) ON COMMIT PRESERVE ROWS ; /* Table: ITEST, Owner: SYSDBA */ CREATE TABLE ITEST ( "KEY" INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 0) NOT NULL, SOMETEXT VARCHAR(64), PRIMARY KEY ("KEY") ); /* Table: ITEST2, Owner: SYSDBA */ CREATE TABLE ITEST2 ( "KEY" INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 0 INCREMENT BY 1) NOT NULL, SOMETEXT VARCHAR(64), PRIMARY KEY ("KEY") ); /* Table: JOB, Owner: SYSDBA */ CREATE TABLE JOB ( JOB_CODE JOBCODE NOT NULL, JOB_GRADE JOBGRADE NOT NULL, JOB_COUNTRY COUNTRYNAME NOT NULL, JOB_TITLE VARCHAR(25) NOT NULL, MIN_SALARY SALARY NOT NULL, MAX_SALARY SALARY NOT NULL, JOB_REQUIREMENT BLOB SUB_TYPE TEXT SEGMENT SIZE 400, LANGUAGE_REQ VARCHAR(15)[1:5], PRIMARY KEY (JOB_CODE, JOB_GRADE, JOB_COUNTRY) ); /* Table: PROJECT, Owner: SYSDBA */ CREATE TABLE PROJECT ( PROJ_ID PROJNO NOT NULL, PROJ_NAME VARCHAR(20) NOT NULL, PROJ_DESC BLOB SUB_TYPE TEXT SEGMENT SIZE 800, TEAM_LEADER EMPNO, PRODUCT PRODTYPE, UNIQUE (PROJ_NAME), PRIMARY KEY (PROJ_ID) ); /* Table: PROJ_DEPT_BUDGET, Owner: SYSDBA */ CREATE TABLE PROJ_DEPT_BUDGET ( FISCAL_YEAR INTEGER NOT NULL, PROJ_ID PROJNO NOT NULL, DEPT_NO DEPTNO NOT NULL, QUART_HEAD_CNT INTEGER[1:4], PROJECTED_BUDGET BUDGET, PRIMARY KEY (FISCAL_YEAR, PROJ_ID, DEPT_NO) ); /* Table: SALARY_HISTORY, Owner: SYSDBA */ CREATE TABLE SALARY_HISTORY ( EMP_NO EMPNO NOT NULL, CHANGE_DATE TIMESTAMP DEFAULT 'NOW' NOT NULL, UPDATER_ID VARCHAR(20) NOT NULL, OLD_SALARY SALARY NOT NULL, PERCENT_CHANGE DOUBLE PRECISION DEFAULT 0 NOT NULL, NEW_SALARY COMPUTED BY (old_salary + old_salary * percent_change / 100), PRIMARY KEY (EMP_NO, CHANGE_DATE, UPDATER_ID) ); /* Table: SALES, Owner: SYSDBA */ CREATE TABLE SALES ( PO_NUMBER PONUMBER NOT NULL, CUST_NO CUSTNO NOT NULL, SALES_REP EMPNO, ORDER_STATUS VARCHAR(7) DEFAULT 'new' NOT NULL, ORDER_DATE TIMESTAMP DEFAULT 'NOW' NOT NULL, SHIP_DATE TIMESTAMP, DATE_NEEDED TIMESTAMP, PAID CHAR(1) DEFAULT 'n', QTY_ORDERED INTEGER DEFAULT 1 NOT NULL, TOTAL_VALUE DECIMAL(9,2) NOT NULL, DISCOUNT FLOAT DEFAULT 0 NOT NULL, ITEM_TYPE PRODTYPE, AGED COMPUTED BY (ship_date - order_date), PRIMARY KEY (PO_NUMBER) ); /* External Function declarations */ DECLARE EXTERNAL FUNCTION ADDDAY TIMESTAMP, INTEGER RETURNS TIMESTAMP ENTRY_POINT 'addDay' MODULE_NAME 'fbudf' ; DECLARE EXTERNAL FUNCTION I64TRUNCATE NUMERIC(18,0) BY DESCRIPTOR, NUMERIC(18,0) BY DESCRIPTOR RETURNS PARAMETER 2 ENTRY_POINT 'fbtruncate' MODULE_NAME 'fbudf' ; DECLARE EXTERNAL FUNCTION TESTIT TIMESTAMP, INTEGER NULL, CSTRING(10) CHARACTER SET NONE, CSTRING(10) CHARACTER SET NONE BY DESCRIPTOR RETURNS CSTRING(32) CHARACTER SET NONE FREE_IT ENTRY_POINT 'testit' MODULE_NAME 'fbudf' ; /* Data Starts */ /* Inserting data into Table: COUNTRY */ INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('USA','Dollar'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('England','Pound'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Canada','CdnDlr'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Switzerland','SFranc'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Japan','Yen'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Italy','Euro'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('France','Euro'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Germany','Euro'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Australia','ADollar'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Hong Kong','HKDollar'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Netherlands','Euro'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Belgium','Euro'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Austria','Euro'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Fiji','FDollar'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Russia','Ruble'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Romania','RLeu'); COMMIT; /* Inserting data into Table: CUSTOMER */ INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1001,'Signature Design','Dale J.','Little','(619) 530-2710','15500 Pacific Heights Blvd.',NULL,'San Diego','CA','USA','92121',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1002,'Dallas Technologies','Glen','Brown','(214) 960-2233','P. O. Box 47000',NULL,'Dallas','TX','USA','75205','*',NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1003,'Buttle, Griffith and Co.','James','Buttle','(617) 488-1864','2300 Newbury Street','Suite 101','Boston','MA','USA','02115',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1004,'Central Bank','Elizabeth','Brocket','61 211 99 88','66 Lloyd Street',NULL,'Manchester',NULL,'England','M2 3LA',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1005,'DT Systems, LTD.','Tai','Wu','(852) 850 43 98','400 Connaught Road',NULL,'Central Hong Kong',NULL,'Hong Kong',NULL,NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1006,'DataServe International','Tomas','Bright','(613) 229 3323','2000 Carling Avenue','Suite 150','Ottawa','ON','Canada','K1V 9G1',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1007,'Mrs. Beauvais',NULL,'Mrs. Beauvais',NULL,'P.O. Box 22743',NULL,'Pebble Beach','CA','USA','93953',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1008,'Anini Vacation Rentals','Leilani','Briggs','(808) 835-7605','3320 Lawai Road',NULL,'Lihue','HI','USA','96766',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1009,'Max','Max',NULL,'22 01 23','1 Emerald Cove',NULL,'Turtle Island',NULL,'Fiji',NULL,'*',NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1010,'MPM Corporation','Miwako','Miyamoto','3 880 77 19','2-64-7 Sasazuka',NULL,'Tokyo',NULL,'Japan','150',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1011,'Dynamic Intelligence Corp','Victor','Granges','01 221 16 50','Florhofgasse 10',NULL,'Zurich',NULL,'Switzerland','8005',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1012,'3D-Pad Corp.','Michelle','Roche','1 43 60 61','22 Place de la Concorde',NULL,'Paris',NULL,'France','75008',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1013,'Lorenzi Export, Ltd.','Andreas','Lorenzi','02 404 6284','Via Eugenia, 15',NULL,'Milan',NULL,'Italy','20124',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1014,'Dyno Consulting','Greta','Hessels','02 500 5940','Rue Royale 350',NULL,'Brussels',NULL,'Belgium','1210',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1015,'GeoTech Inc.','K.M.','Neppelenbroek','(070) 44 91 18','P.0.Box 702',NULL,'Den Haag',NULL,'Netherlands','2514',NULL,NULL); COMMIT; /* Inserting data into Table: DEPARTMENT */ INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('000','Corporate Headquarters',NULL,105,1000000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('100','Sales and Marketing','000',85,2000000,'San Francisco','(415) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('600','Engineering','000',2,1100000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('900','Finance','000',46,400000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('180','Marketing','100',NULL,1500000,'San Francisco','(415) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('620','Software Products Div.','600',NULL,1200000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('621','Software Development','620',NULL,400000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('622','Quality Assurance','620',9,300000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('623','Customer Support','620',15,650000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('670','Consumer Electronics Div.','600',107,1150000,'Burlington, VT','(802) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('671','Research and Development','670',20,460000,'Burlington, VT','(802) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('672','Customer Services','670',94,850000,'Burlington, VT','(802) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('130','Field Office: East Coast','100',11,500000,'Boston','(617) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('140','Field Office: Canada','100',72,500000,'Toronto','(416) 677-1000'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('110','Pacific Rim Headquarters','100',34,600000,'Kuaui','(808) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('115','Field Office: Japan','110',118,500000,'Tokyo','3 5350 0901'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('116','Field Office: Singapore','110',NULL,300000,'Singapore','3 55 1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('120','European Headquarters','100',36,700000,'London','71 235-4400'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('121','Field Office: Switzerland','120',141,500000,'Zurich','1 211 7767'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('123','Field Office: France','120',134,400000,'Cannes','58 68 11 12'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('125','Field Office: Italy','120',121,400000,'Milan','2 430 39 39'); COMMIT; /* Inserting data into Table: EMPLOYEE */ INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(2,'Robert','Nelson','250','1988.12.28 00:00:00.000','600','VP',2,'USA',105900); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(4,'Bruce','Young','233','1988.12.28 00:00:00.000','621','Eng',2,'USA',97500); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(5,'Kim','Lambert','22','1989.02.06 00:00:00.000','130','Eng',2,'USA',102750); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(8,'Leslie','Johnson','410','1989.04.05 00:00:00.000','180','Mktg',3,'USA',64635); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(9,'Phil','Forest','229','1989.04.17 00:00:00.000','622','Mngr',3,'USA',75060); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(11,'K. J.','Weston','34','1990.01.17 00:00:00.000','130','SRep',4,'USA',86292.94); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(12,'Terri','Lee','256','1990.05.01 00:00:00.000','000','Admin',4,'USA',53793); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(14,'Stewart','Hall','227','1990.06.04 00:00:00.000','900','Finan',3,'USA',69482.63); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(15,'Katherine','Young','231','1990.06.14 00:00:00.000','623','Mngr',3,'USA',67241.25); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(20,'Chris','Papadopoulos','887','1990.01.01 00:00:00.000','671','Mngr',3,'USA',89655); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(24,'Pete','Fisher','888','1990.09.12 00:00:00.000','671','Eng',3,'USA',81810.19); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(28,'Ann','Bennet','5','1991.02.01 00:00:00.000','120','Admin',5,'England',22935); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(29,'Roger','De Souza','288','1991.02.18 00:00:00.000','623','Eng',3,'USA',69482.63); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(34,'Janet','Baldwin','2','1991.03.21 00:00:00.000','110','Sales',3,'USA',61637.8); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(36,'Roger','Reeves','6','1991.04.25 00:00:00.000','120','Sales',3,'England',33620.63); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(37,'Willie','Stansbury','7','1991.04.25 00:00:00.000','120','Eng',4,'England',39224.06); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(44,'Leslie','Phong','216','1991.06.03 00:00:00.000','623','Eng',4,'USA',56034.38); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(45,'Ashok','Ramanathan','209','1991.08.01 00:00:00.000','621','Eng',3,'USA',80689.5); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(46,'Walter','Steadman','210','1991.08.09 00:00:00.000','900','CFO',1,'USA',116100); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(52,'Carol','Nordstrom','420','1991.10.02 00:00:00.000','180','PRel',4,'USA',42742.5); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(61,'Luke','Leung','3','1992.02.18 00:00:00.000','110','SRep',4,'USA',68805); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(65,'Sue Anne','O''Brien','877','1992.03.23 00:00:00.000','670','Admin',5,'USA',31275); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(71,'Jennifer M.','Burbank','289','1992.04.15 00:00:00.000','622','Eng',3,'USA',53167.5); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(72,'Claudia','Sutherland',NULL,'1992.04.20 00:00:00.000','140','SRep',4,'Canada',100914); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(83,'Dana','Bishop','290','1992.06.02 00:00:00.000','621','Eng',3,'USA',62550.02); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(85,'Mary S.','MacDonald','477','1992.06.01 00:00:00.000','100','VP',2,'USA',111262.5); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(94,'Randy','Williams','892','1992.08.08 00:00:00.000','672','Mngr',4,'USA',56295); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(105,'Oliver H A','Bender','255','1992.10.08 00:00:00.000','000','CEO',1,'USA',212850); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(107,'Kevin','Cook','894','1993.02.01 00:00:00.000','670','Dir',2,'USA',111262.5); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(109,'Kelly','Brown','202','1993.02.04 00:00:00.000','600','Admin',5,'USA',27000.01); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(110,'Yuki','Ichida','22','1993.02.04 00:00:00.000','115','Eng',3,'Japan',6000000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(113,'Mary','Page','845','1993.04.12 00:00:00.000','671','Eng',4,'USA',48000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(114,'Bill','Parker','247','1993.06.01 00:00:00.000','623','Eng',5,'USA',35000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(118,'Takashi','Yamamoto','23','1993.07.01 00:00:00.000','115','SRep',4,'Japan',7480000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(121,'Roberto','Ferrari','1','1993.07.12 00:00:00.000','125','SRep',4,'USA',33000.01); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(127,'Michael','Yanowski','492','1993.08.09 00:00:00.000','100','SRep',4,'USA',44000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(134,'Jacques','Glon',NULL,'1993.08.23 00:00:00.000','123','SRep',4,'France',38500); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(136,'Scott','Johnson','265','1993.09.13 00:00:00.000','623','Doc',3,'USA',60000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(138,'T.J.','Green','218','1993.11.01 00:00:00.000','621','Eng',4,'USA',36000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(141,'Pierre','Osborne',NULL,'1994.01.03 00:00:00.000','121','SRep',4,'Switzerland',110000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(144,'John','Montgomery','820','1994.03.30 00:00:00.000','672','Eng',5,'USA',35000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(145,'Mark','Guckenheimer','221','1994.05.02 00:00:00.000','622','Eng',5,'USA',32000); COMMIT; /* Inserting data into Table: EMPLOYEE_PROJECT */ INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(144,'DGPII'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(113,'DGPII'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(24,'DGPII'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(8,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(136,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(15,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(71,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(145,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(44,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(4,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(83,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(138,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(45,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(20,'GUIDE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(24,'GUIDE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(113,'GUIDE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(8,'GUIDE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(4,'MAPDB'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(71,'MAPDB'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(46,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(105,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(12,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(85,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(110,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(34,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(8,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(14,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(52,'MKTPR'); COMMIT; /* Inserting data into Table: ITEST */ INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(1,'Testing'); INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(3,'Another'); INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(4,'Test'); INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(7,'Test'); INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(8,'Again'); INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(9,'Test'); INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(10,' 2'); COMMIT; /* Inserting data into Table: JOB */ INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('CEO',1,'USA','Chief Executive Officer',130000,250000,'No specific requirements. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('CFO',1,'USA','Chief Financial Officer',85000,140000,'15+ years in finance or 5+ years as a CFO with a proven track record. MBA or J.D. degree. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('VP',2,'USA','Vice President',80000,130000,'No specific requirements. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Dir',2,'USA','Director',75000,120000,'5-10 years as a director in computer or electronics industries. An advanced degree. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Mngr',3,'USA','Manager',60000,100000,'BA/BS required. 3-5 years in management, plus 2-4 years engineering experience. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Mngr',4,'USA','Manager',30000,60000,'5+ years office management experience. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Admin',4,'USA','Administrative Assistant',35000,55000,'3-5 years experience in executive environment. Strong organizational and communication skills required. BA degree preferred. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Admin',5,'USA','Administrative Assistant',20000,40000,'2-4 years clerical experience. Facility with word processing and data entry. AA degree preferred. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Admin',5,'England','Administrative Assistant',13400,26800,NULL,NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('PRel',4,'USA','Public Relations Rep.',25000,65000,NULL,NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Mktg',3,'USA','Marketing Analyst',40000,80000,'MBA required. 10+ years experience in high tech environment. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Mktg',4,'USA','Marketing Analyst',20000,50000,'BA/BS required. MBA preferred. 3-5 years experience. Knowledgeable with spreadsheets and databases. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Accnt',4,'USA','Accountant',28000,55000,'CPA with 3-5 years experience. Spreadsheet, data entry, and word processing knowledge required. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Finan',3,'USA','Financial Analyst',35000,85000,'5-10 years of accounting and financial experience. Strong analytical skills. CPA/MBA required. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Eng',2,'USA','Engineer',70000,110000,'Distinguished engineer. Ph.D/MS/BS or equivalent experience. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Eng',3,'USA','Engineer',50000,90000,'5+ years experience. BA/BS required. MS degree preferred. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Eng',3,'Japan','Engineer',5400000,9720000,'5+ years experience. BA/BS and/or MS degrees required. Customer support experience desired. Knowledge of Japanese and English. ', Japanese Mandarin English ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Eng',4,'USA','Engineer',30000,65000,'BA/BS and 3-5 years experience. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Eng',4,'England','Engineer',20100,43550,'BA/BS and 2-4 years experience in technical support. Knowledge of several European languages helpful. ', English German French ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Eng',5,'USA','Engineer',25000,35000,'BA/BS preferred. 2-4 years technical experience. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Doc',3,'USA','Technical Writer',38000,60000,'4+ years writing highly technical software documentation. A bachelor''s degree or equivalent. Programming experience required. Excellent language skills. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Doc',5,'USA','Technical Writer',22000,40000,'BA in English/journalism or excellent language skills. Some programming experience required. 2-4 years of technical writing. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Sales',3,'USA','Sales Co-ordinator',40000,70000,'Experience in sales and public relations in a high tech environment. Excellent communication skills. BA or equivalent. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Sales',3,'England','Sales Co-ordinator',26800,46900,'Experience in sales and public relations in a high tech environment. Excellent communication skills. BA or equivalent. Knowledge of several European languages helpful. ', English German French ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'USA','Sales Representative',20000,100000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Some knowledge of Spanish required. Travel required. ', English Spanish ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'England','Sales Representative',13400,67000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Knowledge of several European languages helpful. Travel required. ', English German French ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'Canada','Sales Representative',26400,132000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Travel required. English plus speaking knowledge of French required. ', English French ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'Switzerland','Sales Representative',28000,149000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Knowledge of German required; one or more other European language helpful. Travel required. ', German French English Italian ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'Japan','Sales Representative',2160000,10800000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Knowledge of Japanese required. Travel required. ', Japanese English ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'Italy','Sales Representative',20000,100000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Fluency in Italian; some knowledge of German helpful. Travel required. ', Italian German French ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'France','Sales Representative',20000,100000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Fluency in French; some knowledge of German/Spanish helpful. Travel required. ', English French Spanish ); COMMIT; /* Inserting data into Table: PROJECT */ INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('VBASE','Video Database','Design a video data base management system for controlling on-demand video distribution. ',45,'software'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('DGPII','DigiPizza','Develop second generation digital pizza maker with flash-bake heating element and digital ingredient measuring system. ',24,'other'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('GUIDE','AutoMap','Develop a prototype for the automobile version of the hand-held map browsing device. ',20,'hardware'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('MAPDB','MapBrowser port','Port the map browsing database software to run on the automobile model. ',4,'software'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('HWRII','Translator upgrade','Integrate the hand-writing recognition module into the universal language translator. ',NULL,'software'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('MKTPR','Marketing project 3','Expand marketing and sales in the Pacific Rim. Set up a field office in Australia and Singapore. ',85,'N/A'); COMMIT; /* Inserting data into Table: PROJ_DEPT_BUDGET */ INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'GUIDE','100', 1 1 1 0 ,200000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'GUIDE','671', 3 2 1 0 ,450000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1993,'MAPDB','621', 0 0 0 1 ,20000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MAPDB','621', 2 1 0 0 ,40000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MAPDB','622', 1 1 0 0 ,60000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MAPDB','671', 1 1 0 0 ,11000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'HWRII','670', 1 1 1 1 ,20000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'HWRII','621', 2 3 2 1 ,400000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'HWRII','622', 1 1 2 2 ,100000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MKTPR','623', 1 1 1 2 ,80000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MKTPR','672', 1 1 1 2 ,100000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MKTPR','100', 4 5 6 6 ,1000000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MKTPR','110', 2 2 0 3 ,200000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MKTPR','000', 1 1 2 2 ,100000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1995,'MKTPR','623', 7 7 4 4 ,1200000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1995,'MKTPR','672', 2 3 3 3 ,800000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1995,'MKTPR','100', 4 5 6 6 ,2000000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1995,'MKTPR','110', 1 1 1 1 ,1200000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'VBASE','621', 4 5 5 3 ,1900000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1995,'VBASE','621', 4 3 2 2 ,900000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'VBASE','622', 2 2 2 1 ,400000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'VBASE','100', 1 1 2 3 ,300000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1995,'VBASE','100', 3 3 1 1 ,1500000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1996,'VBASE','100', 1 1 0 0 ,150000); COMMIT; /* Inserting data into Table: SALARY_HISTORY */ INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(28,'1992.12.15 00:00:00.000','admin2',20000,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(2,'1992.12.15 00:00:00.000','admin2',98000,8.0612); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(4,'1992.12.15 00:00:00.000','admin2',90000,8.3333); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(5,'1992.12.15 00:00:00.000','admin2',95000,8.1578); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(11,'1992.12.15 00:00:00.000','admin2',70000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(12,'1992.12.15 00:00:00.000','admin2',48000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(14,'1992.12.15 00:00:00.000','admin2',62000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(15,'1992.12.15 00:00:00.000','admin2',60000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(20,'1992.12.15 00:00:00.000','admin2',80000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(24,'1992.12.15 00:00:00.000','admin2',73000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(29,'1992.12.15 00:00:00.000','admin2',62000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(34,'1992.12.15 00:00:00.000','admin2',55000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(36,'1992.12.15 00:00:00.000','admin2',30000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(37,'1992.12.15 00:00:00.000','admin2',35000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(44,'1992.12.15 00:00:00.000','admin2',50000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(45,'1992.12.15 00:00:00.000','admin2',72000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(8,'1993.09.08 00:00:00.000','elaine',62000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(9,'1993.09.08 00:00:00.000','elaine',72000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(11,'1993.09.08 00:00:00.000','elaine',75250,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(12,'1993.09.08 00:00:00.000','elaine',51600,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(14,'1993.09.08 00:00:00.000','elaine',66650,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(15,'1993.09.08 00:00:00.000','elaine',64500,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(20,'1993.09.08 00:00:00.000','elaine',86000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(24,'1993.09.08 00:00:00.000','elaine',78475,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(28,'1993.09.08 00:00:00.000','elaine',22000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(29,'1993.09.08 00:00:00.000','elaine',66650,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(34,'1993.09.08 00:00:00.000','elaine',59125,4.2499); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(36,'1993.09.08 00:00:00.000','elaine',32250,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(37,'1993.09.08 00:00:00.000','elaine',37625,4.2499); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(44,'1993.09.08 00:00:00.000','elaine',53750,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(45,'1993.09.08 00:00:00.000','elaine',77400,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(52,'1993.09.08 00:00:00.000','elaine',41000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(61,'1993.09.08 00:00:00.000','elaine',60000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(65,'1993.09.08 00:00:00.000','elaine',30000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(71,'1993.09.08 00:00:00.000','elaine',51000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(72,'1993.09.08 00:00:00.000','elaine',88000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(83,'1993.09.08 00:00:00.000','elaine',60000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(94,'1993.09.08 00:00:00.000','elaine',54000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(46,'1993.12.20 00:00:00.000','tj',120000,-3.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(85,'1993.12.20 00:00:00.000','tj',115000,-3.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(105,'1993.12.20 00:00:00.000','tj',220000,-3.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(107,'1993.12.20 00:00:00.000','tj',115000,-3.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(11,'1993.12.20 00:00:00.000','elaine',78448.13,9.9999); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(61,'1993.12.20 00:00:00.000','elaine',62550,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(72,'1993.12.20 00:00:00.000','elaine',91740,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(118,'1993.12.20 00:00:00.000','elaine',6800000,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(121,'1993.12.20 00:00:00.000','elaine',30000,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(127,'1993.12.20 00:00:00.000','elaine',40000,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(134,'1993.12.20 00:00:00.000','elaine',35000,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(28,'2017.11.06 16:46:27.145','SYSDBA',22935,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(28,'2017.11.06 16:47:01.376','SYSDBA',22935.01,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(12,'2017.12.29 12:18:48.909','SYSDBA',53793,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(12,'2017.12.29 12:18:58.051','SYSDBA',53793.01,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(83,'2018.01.04 10:57:34.245','SYSDBA',62550,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(121,'2018.03.13 15:29:08.850','SYSDBA',33000,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(109,'2018.03.13 17:12:06.340','SYSDBA',27000,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(34,'2018.03.13 17:13:20.671','SYSDBA',61637.81,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(83,'2018.03.13 17:13:35.845','SYSDBA',62550.01,0); COMMIT; /* Inserting data into Table: SALES */ INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V91E0210',1004,11,'shipped','1991.03.04 00:00:00.000','1991.03.05 00:00:00.000',NULL,'y',10,5000,0.100000001490116,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V92E0340',1004,11,'shipped','1992.10.15 00:00:00.000','1992.10.16 00:00:00.000','1992.10.17 00:00:00.000','y',7,70000,0,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V92J1003',1010,61,'shipped','1992.07.26 00:00:00.000','1992.08.04 00:00:00.000','1992.09.15 00:00:00.000','y',15,2985,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93J2004',1010,118,'shipped','1993.10.30 00:00:00.000','1993.12.02 00:00:00.000','1993.11.15 00:00:00.000','y',3,210,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93J3100',1010,118,'shipped','1993.08.20 00:00:00.000','1993.08.20 00:00:00.000',NULL,'y',16,18000.4,0.100000001490116,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V92F3004',1012,11,'shipped','1992.10.15 00:00:00.000','1993.01.16 00:00:00.000','1993.01.16 00:00:00.000','y',3,2000,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93F3088',1012,134,'shipped','1993.08.27 00:00:00.000','1993.09.08 00:00:00.000',NULL,'n',10,10000,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93F2030',1012,134,'open','1993.12.12 00:00:00.000',NULL,NULL,'y',15,450000.49,0,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93F2051',1012,134,'waiting','1993.12.18 00:00:00.000',NULL,'1994.03.01 00:00:00.000','n',1,999.98,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93H0030',1005,118,'open','1993.12.12 00:00:00.000',NULL,'1994.01.01 00:00:00.000','y',20,5980,0.200000002980232,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V94H0079',1005,61,'open','1994.02.13 00:00:00.000',NULL,'1994.04.20 00:00:00.000','n',10,9000,0.0500000007450581,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9324200',1001,72,'shipped','1993.08.09 00:00:00.000','1993.08.09 00:00:00.000','1993.08.17 00:00:00.000','y',1000,560000,0.200000002980232,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9324320',1001,127,'shipped','1993.08.16 00:00:00.000','1993.08.16 00:00:00.000','1993.09.01 00:00:00.000','y',1,0,1,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9320630',1001,127,'open','1993.12.12 00:00:00.000',NULL,'1993.12.15 00:00:00.000','n',3,60000,0.200000002980232,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9420099',1001,127,'open','1994.01.17 00:00:00.000',NULL,'1994.06.01 00:00:00.000','n',100,3399.15,0.150000005960464,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9427029',1001,127,'shipped','1994.02.07 00:00:00.000','1994.02.10 00:00:00.000','1994.02.10 00:00:00.000','n',17,422210.97,0,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9333005',1002,11,'shipped','1993.02.03 00:00:00.000','1993.03.03 00:00:00.000',NULL,'y',2,600.5,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9333006',1002,11,'shipped','1993.04.27 00:00:00.000','1993.05.02 00:00:00.000','1993.05.02 00:00:00.000','n',5,20000,0,'other'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9336100',1002,11,'waiting','1993.12.27 00:00:00.000','1994.01.01 00:00:00.000','1994.01.01 00:00:00.000','n',150,14850,0.0500000007450581,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9346200',1003,11,'waiting','1993.12.31 00:00:00.000',NULL,'1994.01.24 00:00:00.000','n',3,0,1,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9345200',1003,11,'shipped','1993.11.11 00:00:00.000','1993.12.02 00:00:00.000','1993.12.01 00:00:00.000','y',900,27000,0.300000011920929,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9345139',1003,127,'shipped','1993.09.09 00:00:00.000','1993.09.20 00:00:00.000','1993.10.01 00:00:00.000','y',20,12582.12,0.100000001490116,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93C0120',1006,72,'shipped','1993.03.22 00:00:00.000','1993.05.31 00:00:00.000','1993.04.17 00:00:00.000','y',1,47.5,0,'other'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93C0990',1006,72,'shipped','1993.08.09 00:00:00.000','1993.09.02 00:00:00.000',NULL,'y',40,399960.5,0.100000001490116,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9456220',1007,127,'open','1994.01.04 00:00:00.000',NULL,'1994.01.30 00:00:00.000','y',1,3999.99,0,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93S4702',1011,121,'shipped','1993.10.27 00:00:00.000','1993.10.28 00:00:00.000','1993.12.15 00:00:00.000','y',4,120000,0,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V94S6400',1011,141,'waiting','1994.01.06 00:00:00.000',NULL,'1994.02.15 00:00:00.000','y',20,1980.72,0.400000005960464,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93H3009',1008,61,'shipped','1993.08.01 00:00:00.000','1993.12.02 00:00:00.000','1993.12.01 00:00:00.000','n',3,9000,0.0500000007450581,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93H0500',1008,61,'open','1993.12.12 00:00:00.000',NULL,'1993.12.15 00:00:00.000','n',3,16000,0.200000002980232,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93F0020',1009,61,'shipped','1993.10.10 00:00:00.000','1993.11.11 00:00:00.000','1993.11.11 00:00:00.000','n',1,490.69,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93I4700',1013,121,'open','1993.10.27 00:00:00.000',NULL,'1993.12.15 00:00:00.000','n',5,2693,0,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93B1002',1014,134,'shipped','1993.09.20 00:00:00.000','1993.09.21 00:00:00.000','1993.09.25 00:00:00.000','y',1,100.02,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93N5822',1015,134,'shipped','1993.12.18 00:00:00.000','1994.01.14 00:00:00.000',NULL,'n',2,1500,0,'software'); COMMIT; /* Data Ends */ /* Index definitions for all user tables */ CREATE INDEX CUSTNAMEX ON CUSTOMER(CUSTOMER); CREATE INDEX CUSTREGION ON CUSTOMER(COUNTRY, CITY); CREATE DESCENDING INDEX BUDGETX ON DEPARTMENT(BUDGET); CREATE INDEX NAMEX ON EMPLOYEE(LAST_NAME, FIRST_NAME); CREATE DESCENDING INDEX MAXSALX ON JOB(JOB_COUNTRY, MAX_SALARY); CREATE INDEX MINSALX ON JOB(JOB_COUNTRY, MIN_SALARY); CREATE UNIQUE INDEX PRODTYPEX ON PROJECT(PRODUCT, PROJ_NAME); CREATE DESCENDING INDEX CHANGEX ON SALARY_HISTORY(CHANGE_DATE); CREATE INDEX UPDATERX ON SALARY_HISTORY(UPDATER_ID); CREATE INDEX NEEDX ON SALES(DATE_NEEDED); CREATE DESCENDING INDEX QTYX ON SALES(ITEM_TYPE, QTY_ORDERED); CREATE INDEX SALESTATX ON SALES(ORDER_STATUS, PAID); ALTER TABLE CUSTOMER ADD FOREIGN KEY (COUNTRY) REFERENCES COUNTRY (COUNTRY); ALTER TABLE DEPARTMENT ADD FOREIGN KEY (HEAD_DEPT) REFERENCES DEPARTMENT (DEPT_NO); ALTER TABLE DEPARTMENT ADD FOREIGN KEY (MNGR_NO) REFERENCES EMPLOYEE (EMP_NO); ALTER TABLE EMPLOYEE ADD FOREIGN KEY (DEPT_NO) REFERENCES DEPARTMENT (DEPT_NO); ALTER TABLE EMPLOYEE ADD FOREIGN KEY (JOB_CODE, JOB_GRADE, JOB_COUNTRY) REFERENCES JOB (JOB_CODE, JOB_GRADE, JOB_COUNTRY); ALTER TABLE EMPLOYEE_PROJECT ADD FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE (EMP_NO); ALTER TABLE EMPLOYEE_PROJECT ADD FOREIGN KEY (PROJ_ID) REFERENCES PROJECT (PROJ_ID); ALTER TABLE JOB ADD FOREIGN KEY (JOB_COUNTRY) REFERENCES COUNTRY (COUNTRY); ALTER TABLE PROJECT ADD FOREIGN KEY (TEAM_LEADER) REFERENCES EMPLOYEE (EMP_NO); ALTER TABLE PROJ_DEPT_BUDGET ADD FOREIGN KEY (DEPT_NO) REFERENCES DEPARTMENT (DEPT_NO); ALTER TABLE PROJ_DEPT_BUDGET ADD FOREIGN KEY (PROJ_ID) REFERENCES PROJECT (PROJ_ID); ALTER TABLE SALARY_HISTORY ADD FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE (EMP_NO); ALTER TABLE SALES ADD FOREIGN KEY (CUST_NO) REFERENCES CUSTOMER (CUST_NO); ALTER TABLE SALES ADD FOREIGN KEY (SALES_REP) REFERENCES EMPLOYEE (EMP_NO); CREATE SEQUENCE CUST_NO_GEN; ALTER SEQUENCE CUST_NO_GEN RESTART WITH 1016; CREATE SEQUENCE EMP_NO_GEN; ALTER SEQUENCE EMP_NO_GEN RESTART WITH 158; CREATE SEQUENCE FB$OUT_SEQ; ALTER SEQUENCE FB$OUT_SEQ RESTART WITH 1; /* View: DEPTLIST, Owner: SYSDBA */ CREATE VIEW DEPTLIST ( EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, HIRE_DATE, DEPT_NO, JOB_CODE, JOB_GRADE, JOB_COUNTRY, SALARY, FULL_NAME, DEPT_PATH, DEPT_KEY_PATH, "Payment Status" ) AS with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH, cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH, Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO ) Select distinct A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH, CASE When A.SALARY > 10000 then 'higher paid' else 'lower paid' End From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO ; /* View: PHONE_LIST, Owner: SYSDBA */ CREATE VIEW PHONE_LIST ( EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, LOCATION, PHONE_NO ) AS SELECT emp_no, first_name, last_name, phone_ext, location, phone_no FROM employee, department WHERE employee.dept_no = department.dept_no ; /* Add Domain Check Constraints */ ALTER DOMAIN BUDGET ADD CONSTRAINT CHECK (VALUE > 10000 AND VALUE <= 2000000); ALTER DOMAIN CUSTNO ADD CONSTRAINT CHECK (VALUE > 1000); ALTER DOMAIN DEPTNO ADD CONSTRAINT CHECK (VALUE = '000' OR (VALUE > '0' AND VALUE <= '999') OR VALUE IS NULL); ALTER DOMAIN JOBCODE ADD CONSTRAINT CHECK (VALUE > '99999'); ALTER DOMAIN JOBGRADE ADD CONSTRAINT CHECK (VALUE BETWEEN 0 AND 6); ALTER DOMAIN PONUMBER ADD CONSTRAINT CHECK (VALUE STARTING WITH 'V'); ALTER DOMAIN PRODTYPE ADD CONSTRAINT CHECK (VALUE IN ('software', 'hardware', 'other', 'N/A')); ALTER DOMAIN PROJNO ADD CONSTRAINT CHECK (VALUE = UPPER (VALUE)); ALTER DOMAIN SALARY ADD CONSTRAINT CHECK (VALUE > 0); ALTER TABLE JOB ADD CHECK (min_salary < max_salary); ALTER TABLE JOB ADD CHECK (min_salary < max_salary); ALTER TABLE EMPLOYEE ADD CHECK ( salary >= (SELECT min_salary FROM job WHERE job.job_code = employee.job_code AND job.job_grade = employee.job_grade AND job.job_country = employee.job_country) AND salary <= (SELECT max_salary FROM job WHERE job.job_code = employee.job_code AND job.job_grade = employee.job_grade AND job.job_country = employee.job_country)); ALTER TABLE PROJ_DEPT_BUDGET ADD CHECK (FISCAL_YEAR >= 1993); ALTER TABLE SALARY_HISTORY ADD CHECK (percent_change between -50 and 50); ALTER TABLE CUSTOMER ADD CHECK (on_hold IS NULL OR on_hold = '*'); ALTER TABLE SALES ADD CHECK (order_status in ('new', 'open', 'shipped', 'waiting')); ALTER TABLE SALES ADD CHECK (ship_date >= order_date OR ship_date IS NULL); ALTER TABLE SALES ADD CHECK (date_needed > order_date OR date_needed IS NULL); ALTER TABLE SALES ADD CHECK (paid in ('y', 'n')); ALTER TABLE SALES ADD CHECK (qty_ordered >= 1); ALTER TABLE SALES ADD CHECK (total_value >= 0); ALTER TABLE SALES ADD CHECK (discount >= 0 AND discount <= 1); ALTER TABLE SALES ADD CHECK (NOT (order_status = 'shipped' AND ship_date IS NULL)); ALTER TABLE SALES ADD CHECK (NOT (order_status = 'shipped' AND EXISTS (SELECT on_hold FROM customer WHERE customer.cust_no = sales.cust_no AND customer.on_hold = '*'))); /* Exceptions */ CREATE EXCEPTION CUSTOMER_CHECK 'Overdue balance -- can not ship.'; CREATE EXCEPTION CUSTOMER_ON_HOLD 'This customer is on hold.'; CREATE EXCEPTION ORDER_ALREADY_SHIPPED 'Order status is "shipped."'; CREATE EXCEPTION REASSIGN_SALES 'Reassign the sales records before deleting this employee.'; CREATE EXCEPTION UNKNOWN_EMP_ID 'Invalid employee number or project id.'; COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Package Definitions */ CREATE PACKAGE FB$OUT AS begin procedure enable; procedure disable; procedure put_line (line fb$out_type); procedure clear; procedure get_lines returns (lines fb$out_type); end ^ CREATE PACKAGE SELECT$TEST AS Begin Procedure ShowItems(IPARAM Integer) RETURNS (OutParam integer); End ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Stored procedures Definitions*/ CREATE PROCEDURE SHOW_LANGS ( CODE VARCHAR(5) CHARACTER SET NONE, GRADE SMALLINT, CTY VARCHAR(15) CHARACTER SET NONE ) RETURNS ( LANGUAGES VARCHAR(15) CHARACTER SET NONE ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE ADD_EMP_PROJ ( EMP_NO SMALLINT, PROJ_ID CHAR(5) CHARACTER SET NONE ) AS BEGIN EXIT; END ^ CREATE PROCEDURE ALL_LANGS RETURNS ( CODE VARCHAR(5) CHARACTER SET NONE, GRADE VARCHAR(5) CHARACTER SET NONE, COUNTRY VARCHAR(15) CHARACTER SET NONE, LANG VARCHAR(15) CHARACTER SET NONE ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE DELETE_EMPLOYEE ( EMP_NUM INTEGER ) AS BEGIN EXIT; END ^ CREATE PROCEDURE DEPT_BUDGET ( DNO CHAR(3) CHARACTER SET NONE ) RETURNS ( TOT DECIMAL(12,2) ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE EMPLOYEE_PAY_STATUS ( EMP_NUM SMALLINT ) RETURNS ( PAY_STATUS VARCHAR(6) CHARACTER SET NONE, SALARY NUMERIC(10,2) ) AS BEGIN EXIT; END ^ CREATE PROCEDURE GET_EMP_PROJ ( EMP_NO SMALLINT ) RETURNS ( PROJ_ID CHAR(5) CHARACTER SET NONE ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE "Has Space" ( ARG1 INTEGER ) AS BEGIN EXIT; END ^ CREATE PROCEDURE MAIL_LABEL ( CUST_NO INTEGER ) RETURNS ( LINE1 CHAR(40) CHARACTER SET NONE, LINE2 CHAR(40) CHARACTER SET NONE, LINE3 CHAR(40) CHARACTER SET NONE, LINE4 CHAR(40) CHARACTER SET NONE, LINE5 CHAR(40) CHARACTER SET NONE, LINE6 CHAR(40) CHARACTER SET NONE ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE ORG_CHART RETURNS ( HEAD_DEPT CHAR(25) CHARACTER SET NONE, DEPARTMENT CHAR(25) CHARACTER SET NONE, MNGR_NAME CHAR(20) CHARACTER SET NONE, TITLE CHAR(5) CHARACTER SET NONE, EMP_CNT INTEGER ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE SHIP_ORDER ( PO_NUM CHAR(8) CHARACTER SET NONE ) AS BEGIN EXIT; END ^ CREATE PROCEDURE SUB_TOT_BUDGET ( HEAD_DEPT CHAR(3) CHARACTER SET NONE ) RETURNS ( TOT_BUDGET DECIMAL(12,2), AVG_BUDGET DECIMAL(12,2), MIN_BUDGET DECIMAL(12,2), MAX_BUDGET DECIMAL(12,2) ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE "UC SPACE" ( ARG1 INTEGER ) AS BEGIN EXIT; END ^ CREATE PROCEDURE "iCASE" AS BEGIN EXIT; END ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Stored Function declarations */ CREATE FUNCTION F (X INTEGER) RETURNS INTEGER AS BEGIN END ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; SET TERM ^; /* Triggers only will work for SQL triggers */ CREATE TRIGGER "After Create Database" ACTIVE ON CONNECT POSITION 0 as begin End ^ CREATE TRIGGER "BEFORE CREATE TABLE" ACTIVE BEFORE CREATE TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE TABLE" ACTIVE AFTER CREATE TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER TABLE" ACTIVE BEFORE ALTER TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER TABLE" ACTIVE AFTER ALTER TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE/Alter TABLE" ACTIVE AFTER CREATE TABLE OR ALTER TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP TABLE" ACTIVE BEFORE Drop TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP TABLE" ACTIVE AFTER Drop TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE PROCEDURE" ACTIVE BEFORE CREATE PROCEDURE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE PROCEDURE" ACTIVE AFTER CREATE PROCEDURE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER PROCEDURE" ACTIVE BEFORE ALTER PROCEDURE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER PROCEDURE" ACTIVE AFTER ALTER PROCEDURE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP PROCEDURE" ACTIVE BEFORE Drop PROCEDURE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP PROCEDURE" ACTIVE AFTER Drop PROCEDURE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE FUNCTION" ACTIVE BEFORE CREATE FUNCTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE FUNCTION" ACTIVE AFTER CREATE FUNCTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER FUNCTION" ACTIVE BEFORE ALTER FUNCTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER FUNCTION" ACTIVE AFTER ALTER FUNCTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP FUNCTION" ACTIVE BEFORE Drop FUNCTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP FUNCTION" ACTIVE AFTER Drop FUNCTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE TRIGGER" ACTIVE BEFORE CREATE TRIGGER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE TRIGGER" ACTIVE AFTER CREATE TRIGGER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER TRIGGER" ACTIVE BEFORE ALTER TRIGGER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER TRIGGER" ACTIVE AFTER ALTER TRIGGER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP TRIGGER" ACTIVE BEFORE Drop TRIGGER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP TRIGGER" ACTIVE AFTER Drop TRIGGER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE EXCEPTION" ACTIVE BEFORE CREATE EXCEPTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE EXCEPTION" ACTIVE AFTER CREATE EXCEPTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER EXCEPTION" ACTIVE BEFORE ALTER EXCEPTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER EXCEPTION" ACTIVE AFTER ALTER EXCEPTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP EXCEPTION" ACTIVE BEFORE Drop EXCEPTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP EXCEPTION" ACTIVE AFTER Drop EXCEPTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE VIEW" ACTIVE BEFORE CREATE VIEW POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE VIEW" ACTIVE AFTER CREATE VIEW POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER VIEW" ACTIVE BEFORE ALTER VIEW POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER VIEW" ACTIVE AFTER ALTER VIEW POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP VIEW" ACTIVE BEFORE Drop VIEW POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP VIEW" ACTIVE AFTER Drop VIEW POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE DOMAIN" ACTIVE BEFORE CREATE DOMAIN POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE DOMAIN" ACTIVE AFTER CREATE DOMAIN POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER DOMAIN" ACTIVE BEFORE ALTER DOMAIN POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER DOMAIN" ACTIVE AFTER ALTER DOMAIN POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP DOMAIN" ACTIVE BEFORE Drop DOMAIN POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP DOMAIN" ACTIVE AFTER Drop DOMAIN POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE ROLE" ACTIVE BEFORE CREATE ROLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE ROLE" ACTIVE AFTER CREATE ROLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER ROLE" ACTIVE BEFORE ALTER ROLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER ROLE" ACTIVE AFTER ALTER ROLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP ROLE" ACTIVE BEFORE Drop ROLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP ROLE" ACTIVE AFTER Drop ROLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE INDEX" ACTIVE BEFORE CREATE INDEX POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE INDEX" ACTIVE AFTER CREATE INDEX POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER INDEX" ACTIVE BEFORE ALTER INDEX POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER INDEX" ACTIVE AFTER ALTER INDEX POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP INDEX" ACTIVE BEFORE Drop INDEX POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP INDEX" ACTIVE AFTER Drop INDEX POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE SEQUENCE" ACTIVE BEFORE CREATE SEQUENCE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE SEQUENCE" ACTIVE AFTER CREATE SEQUENCE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER SEQUENCE" ACTIVE BEFORE ALTER SEQUENCE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER SEQUENCE" ACTIVE AFTER ALTER SEQUENCE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP SEQUENCE" ACTIVE BEFORE Drop SEQUENCE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP SEQUENCE" ACTIVE AFTER Drop SEQUENCE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE USER" ACTIVE BEFORE CREATE USER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE USER" ACTIVE AFTER CREATE USER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER USER" ACTIVE BEFORE ALTER USER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER USER" ACTIVE AFTER ALTER USER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP USER" ACTIVE BEFORE Drop USER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP USER" ACTIVE AFTER Drop USER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE COLLATION" ACTIVE BEFORE CREATE COLLATION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE COLLATION" ACTIVE AFTER CREATE COLLATION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP COLLATION" ACTIVE BEFORE Drop COLLATION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP COLLATION" ACTIVE AFTER Drop COLLATION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER CHARACTER SET" ACTIVE BEFORE ALTER CHARACTER SET POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER CHARACTER SET" ACTIVE AFTER ALTER CHARACTER SET POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE PACKAGE" ACTIVE BEFORE CREATE PACKAGE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE PACKAGE" ACTIVE AFTER CREATE PACKAGE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER PACKAGE" ACTIVE BEFORE ALTER PACKAGE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER PACKAGE" ACTIVE AFTER ALTER PACKAGE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP PACKAGE" ACTIVE BEFORE Drop PACKAGE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP PACKAGE" ACTIVE AFTER Drop PACKAGE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE PACKAGE BODY" ACTIVE BEFORE CREATE PACKAGE BODY POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE PACKAGE BODY" ACTIVE AFTER CREATE PACKAGE BODY POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP PACKAGE BODY" ACTIVE BEFORE Drop PACKAGE BODY POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP PACKAGE BODY" ACTIVE AFTER Drop PACKAGE BODY POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ANY DDL STATEMENT" ACTIVE BEFORE ANY DDL STATEMENT POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ANY DDL STATEMENT" ACTIVE AFTER ANY DDL STATEMENT POSITION 0 AS BEGIN END ^ CREATE TRIGGER SET_CUST_NO FOR CUSTOMER ACTIVE BEFORE INSERT POSITION 0 AS BEGIN if (new.cust_no is null) then new.cust_no = gen_id(cust_no_gen, 1); END ^ CREATE TRIGGER SET_EMP_NO FOR EMPLOYEE ACTIVE BEFORE INSERT POSITION 0 AS BEGIN if (new.emp_no is null) then new.emp_no = gen_id(emp_no_gen, 1); END ^ CREATE TRIGGER SAVE_SALARY_CHANGE FOR EMPLOYEE ACTIVE AFTER UPDATE POSITION 0 AS BEGIN IF (old.salary <> new.salary) THEN INSERT INTO salary_history (emp_no, change_date, updater_id, old_salary, percent_change) VALUES ( old.emp_no, 'NOW', user, old.salary, (new.salary - old.salary) * 100 / old.salary); END ^ CREATE TRIGGER POST_NEW_ORDER FOR SALES ACTIVE AFTER INSERT POSITION 0 AS BEGIN POST_EVENT 'new_order'; END ^ COMMIT WORK^ SET TERM ;^ COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Package Definitions */ CREATE PACKAGE BODY FB$OUT AS begin procedure enable as begin rdb$set_context('USER_SESSION', 'fb$out.enabled', '1'); end procedure disable as begin rdb$set_context('USER_SESSION', 'fb$out.enabled', null); end procedure put_line (line fb$out_type) as begin if (rdb$get_context('USER_SESSION', 'fb$out.enabled') = '1') then begin in autonomous transaction do begin insert into fb$out_table (line_num, content) values (next value for fb$out_seq, :line); end end end procedure clear as begin in autonomous transaction do delete from fb$out_table; end procedure get_lines returns (lines fb$out_type) as declare line fb$out_type; begin lines = ''; in autonomous transaction do begin for select content from fb$out_table order by line_num into line do begin if (octet_length(lines) > 0) then lines = lines || ascii_char(13) || ascii_char(10); lines = lines || :line; end end execute procedure clear; end end ^ CREATE PACKAGE BODY SELECT$TEST AS Begin Procedure ShowItems(IPARAM Integer) RETURNS (OutParam integer) As Begin SUSPEND; End End ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Stored procedure Bodies */ ALTER PROCEDURE SHOW_LANGS ( CODE VARCHAR(5) CHARACTER SET NONE, GRADE SMALLINT, CTY VARCHAR(15) CHARACTER SET NONE ) RETURNS ( LANGUAGES VARCHAR(15) CHARACTER SET NONE ) AS DECLARE VARIABLE i INTEGER; BEGIN i = 1; WHILE (i <= 5) DO BEGIN SELECT language_req[:i] FROM joB WHERE ((job_code = :code) AND (job_grade = :grade) AND (job_country = :cty) AND (language_req IS NOT NULL)) INTO :languages; IF (languages = ' ') THEN /* Prints 'NULL' instead of blanks */ languages = 'NULL'; i = i +1; SUSPEND; END END ^ ALTER PROCEDURE ADD_EMP_PROJ ( EMP_NO SMALLINT, PROJ_ID CHAR(5) CHARACTER SET NONE ) AS BEGIN BEGIN INSERT INTO employee_project (emp_no, proj_id) VALUES (:emp_no, :proj_id); WHEN SQLCODE -530 DO EXCEPTION unknown_emp_id; END END ^ ALTER PROCEDURE ALL_LANGS RETURNS ( CODE VARCHAR(5) CHARACTER SET NONE, GRADE VARCHAR(5) CHARACTER SET NONE, COUNTRY VARCHAR(15) CHARACTER SET NONE, LANG VARCHAR(15) CHARACTER SET NONE ) AS BEGIN FOR SELECT job_code, job_grade, job_country FROM job INTO :code, :grade, :country DO BEGIN FOR SELECT languages FROM show_langs (:code, :grade, :country) INTO :lang DO SUSPEND; /* Put nice separators between rows */ code = '====='; grade = '====='; country = '==============='; lang = '=============='; SUSPEND; END END ^ ALTER PROCEDURE DELETE_EMPLOYEE ( EMP_NUM INTEGER ) AS DECLARE VARIABLE any_sales INTEGER; BEGIN any_sales = 0; /* * If there are any sales records referencing this employee, * cannot delete the employee until the sales are re-assigned * to another employee or changed to NULL. */ SELECT count(po_number) FROM sales WHERE sales_rep = :emp_num INTO :any_sales; IF (any_sales > 0) THEN BEGIN EXCEPTION reassign_sales; END /* * If the employee is a manager, update the department. */ UPDATE department SET mngr_no = NULL WHERE mngr_no = :emp_num; /* * If the employee is a project leader, update project. */ UPDATE project SET team_leader = NULL WHERE team_leader = :emp_num; /* * Delete the employee from any projects. */ DELETE FROM employee_project WHERE emp_no = :emp_num; /* * Delete old salary records. */ DELETE FROM salary_history WHERE emp_no = :emp_num; /* * Delete the employee. */ DELETE FROM employee WHERE emp_no = :emp_num; END ^ ALTER PROCEDURE DEPT_BUDGET ( DNO CHAR(3) CHARACTER SET NONE ) RETURNS ( TOT DECIMAL(12,2) ) AS DECLARE VARIABLE sumb DECIMAL(12,2); DECLARE VARIABLE rdno CHAR(3); DECLARE VARIABLE cnt INTEGER; BEGIN tot = 0; SELECT budget FROM department WHERE dept_no = :dno INTO :tot; SELECT count(budget) FROM department WHERE head_dept = :dno INTO :cnt; IF (cnt = 0) THEN SUSPEND; FOR SELECT dept_no FROM department WHERE head_dept = :dno INTO :rdno DO BEGIN EXECUTE PROCEDURE dept_budget :rdno RETURNING_VALUES :sumb; tot = tot + sumb; END SUSPEND; END ^ ALTER PROCEDURE EMPLOYEE_PAY_STATUS ( EMP_NUM SMALLINT ) RETURNS ( PAY_STATUS VARCHAR(6) CHARACTER SET NONE, SALARY NUMERIC(10,2) ) AS Declare aCursor CURSOR FOR ( Select EMP_NO,SALARY From EMPLOYEE WHERE LAST_NAME = 'unknown'); BEGIN Select SALARY, Case When SALARY > 10000 and SALARY <= 100000 then 'higher' When SALARY > 100000 then 'gross' else 'lower' End From employee WHERE emp_no = :EMP_NUM into :SALARY, :PAY_STATUS; END ^ ALTER PROCEDURE GET_EMP_PROJ ( EMP_NO SMALLINT ) RETURNS ( PROJ_ID CHAR(5) CHARACTER SET NONE ) AS BEGIN FOR SELECT proj_id FROM employee_project WHERE emp_no = :emp_no INTO :proj_id DO SUSPEND; END ^ ALTER PROCEDURE "Has Space" ( ARG1 INTEGER ) AS Begin End ^ ALTER PROCEDURE MAIL_LABEL ( CUST_NO INTEGER ) RETURNS ( LINE1 CHAR(40) CHARACTER SET NONE, LINE2 CHAR(40) CHARACTER SET NONE, LINE3 CHAR(40) CHARACTER SET NONE, LINE4 CHAR(40) CHARACTER SET NONE, LINE5 CHAR(40) CHARACTER SET NONE, LINE6 CHAR(40) CHARACTER SET NONE ) AS DECLARE VARIABLE customer VARCHAR(25); DECLARE VARIABLE first_name VARCHAR(15); DECLARE VARIABLE last_name VARCHAR(20); DECLARE VARIABLE addr1 VARCHAR(30); DECLARE VARIABLE addr2 VARCHAR(30); DECLARE VARIABLE city VARCHAR(25); DECLARE VARIABLE state VARCHAR(15); DECLARE VARIABLE country VARCHAR(15); DECLARE VARIABLE postcode VARCHAR(12); DECLARE VARIABLE cnt INTEGER; BEGIN line1 = ''; line2 = ''; line3 = ''; line4 = ''; line5 = ''; line6 = ''; SELECT customer, contact_first, contact_last, address_line1, address_line2, city, state_province, country, postal_code FROM CUSTOMER WHERE cust_no = :cust_no INTO :customer, :first_name, :last_name, :addr1, :addr2, :city, :state, :country, :postcode; IF (customer IS NOT NULL) THEN line1 = customer; IF (first_name IS NOT NULL) THEN line2 = first_name || ' ' || last_name; ELSE line2 = last_name; IF (addr1 IS NOT NULL) THEN line3 = addr1; IF (addr2 IS NOT NULL) THEN line4 = addr2; IF (country = 'USA') THEN BEGIN IF (city IS NOT NULL) THEN line5 = city || ', ' || state || ' ' || postcode; ELSE line5 = state || ' ' || postcode; END ELSE BEGIN IF (city IS NOT NULL) THEN line5 = city || ', ' || state; ELSE line5 = state; line6 = country || ' ' || postcode; END SUSPEND; END ^ ALTER PROCEDURE ORG_CHART RETURNS ( HEAD_DEPT CHAR(25) CHARACTER SET NONE, DEPARTMENT CHAR(25) CHARACTER SET NONE, MNGR_NAME CHAR(20) CHARACTER SET NONE, TITLE CHAR(5) CHARACTER SET NONE, EMP_CNT INTEGER ) AS DECLARE VARIABLE mngr_no INTEGER; DECLARE VARIABLE dno CHAR(3); BEGIN FOR SELECT h.department, d.department, d.mngr_no, d.dept_no FROM department d LEFT OUTER JOIN department h ON d.head_dept = h.dept_no ORDER BY d.dept_no INTO :head_dept, :department, :mngr_no, :dno DO BEGIN IF (:mngr_no IS NULL) THEN BEGIN mngr_name = '--TBH--'; title = ''; END ELSE SELECT full_name, job_code FROM employee WHERE emp_no = :mngr_no INTO :mngr_name, :title; SELECT COUNT(emp_no) FROM employee WHERE dept_no = :dno INTO :emp_cnt; SUSPEND; END END ^ ALTER PROCEDURE SHIP_ORDER ( PO_NUM CHAR(8) CHARACTER SET NONE ) AS DECLARE VARIABLE ord_stat CHAR(7); DECLARE VARIABLE hold_stat CHAR(1); DECLARE VARIABLE cust_no INTEGER; DECLARE VARIABLE any_po CHAR(8); BEGIN SELECT s.order_status, c.on_hold, c.cust_no FROM sales s, customer c WHERE po_number = :po_num AND s.cust_no = c.cust_no INTO :ord_stat, :hold_stat, :cust_no; /* This purchase order has been already shipped. */ IF (ord_stat = 'shipped') THEN BEGIN EXCEPTION order_already_shipped; END /* Customer is on hold. */ ELSE IF (hold_stat = '*') THEN BEGIN EXCEPTION customer_on_hold; END /* * If there is an unpaid balance on orders shipped over 2 months ago, * put the customer on hold. */ FOR SELECT po_number FROM sales WHERE cust_no = :cust_no AND order_status = 'shipped' AND paid = 'n' AND ship_date < CAST('NOW' AS TIMESTAMP) - 60 INTO :any_po DO BEGIN EXCEPTION customer_check; UPDATE customer SET on_hold = '*' WHERE cust_no = :cust_no; END /* * Ship the order. */ UPDATE sales SET order_status = 'shipped', ship_date = 'NOW' WHERE po_number = :po_num; END ^ ALTER PROCEDURE SUB_TOT_BUDGET ( HEAD_DEPT CHAR(3) CHARACTER SET NONE ) RETURNS ( TOT_BUDGET DECIMAL(12,2), AVG_BUDGET DECIMAL(12,2), MIN_BUDGET DECIMAL(12,2), MAX_BUDGET DECIMAL(12,2) ) AS BEGIN SELECT SUM(budget), AVG(budget), MIN(budget), MAX(budget) FROM department WHERE head_dept = :head_dept INTO :tot_budget, :avg_budget, :min_budget, :max_budget; SUSPEND; END ^ ALTER PROCEDURE "UC SPACE" ( ARG1 INTEGER ) AS Begin End ^ ALTER PROCEDURE "iCASE" AS Begin End ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Stored Function Body */ ALTER FUNCTION F (X INTEGER) RETURNS INTEGER AS BEGIN RETURN X+1; END ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; /* Comments on System Objects */ COMMENT ON CHARACTER SET UTF8 IS 'Default Character set'; /* Grant Roles for this database */ /* Role: TESTROLE, Owner: SYSDBA */ CREATE ROLE TESTROLE SET SYSTEM PRIVILEGES TO CREATE_DATABASE; /* Grant permissions for this database */ GRANT REFERENCES ON TABLE COUNTRIES TO USER BOB ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE COUNTRY TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE CUSTOMER TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE DEPARTMENT TO USER PUBLIC WITH GRANT OPTION ; GRANT SELECT ON TABLE EMPLOYEE TO USER ALICE WITH GRANT OPTION GRANTED BY BOB ; GRANT SELECT,Update(FIRST_NAME,LAST_NAME) ON TABLE EMPLOYEE TO USER BOB ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE EMPLOYEE TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE EMPLOYEE_PROJECT TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE FB$OUT_TABLE TO PACKAGE FB$OUT ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE JOB TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE PHONE_LIST TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE PROJECT TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE PROJ_DEPT_BUDGET TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE SALARY_HISTORY TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE SALES TO USER PUBLIC WITH GRANT OPTION ; GRANT RDB$ADMIN TO ALICE; GRANT RDB$ADMIN TO BOB; GRANT EXECUTE ON PROCEDURE ADD_EMP_PROJ TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE ALL_LANGS TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE DELETE_EMPLOYEE TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE DEPT_BUDGET TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE GET_EMP_PROJ TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE MAIL_LABEL TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE ORG_CHART TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE SHIP_ORDER TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE SHOW_LANGS TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE SUB_TOT_BUDGET TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PACKAGE FB$OUT TO USER PUBLIC ; GRANT CREATE TABLE TO USER BOB ; GRANT CREATE COLLATION TO USER BOB ; GRANT CREATE CHARACTER SET TO USER ALICE ; GRANT CREATE COLLATION TO USER ALICE ; GRANT CREATE DOMAIN TO USER ALICE ; GRANT CREATE EXCEPTION TO USER ALICE ; GRANT CREATE FILTER TO USER ALICE ; GRANT CREATE FUNCTION TO USER ALICE ; GRANT CREATE GENERATOR TO USER ALICE ; GRANT CREATE PACKAGE TO USER ALICE ; GRANT CREATE PROCEDURE TO USER ALICE ; GRANT CREATE ROLE TO USER ALICE ; GRANT CREATE TABLE TO USER ALICE ; GRANT CREATE VIEW TO USER ALICE ; GRANT DROP ANY TABLE TO USER ALICE ; GRANT ALTER ANY VIEW TO USER ALICE ; GRANT DROP ANY GENERATOR TO USER ALICE ; Extracting Database Schema and Data SET SQL DIALECT 3; SET AUTODDL ON; /* CREATE DATABASE 'inet://localhost//tmp/ibx-testsuite/testsuite1.fdb' PAGE_SIZE 8192 DEFAULT CHARACTER SET NONE; */ COMMENT ON DATABASE IS 'Employee Test DB'; /* Domain definitions */ CREATE DOMAIN ADDRESSLINE AS VARCHAR(30); CREATE DOMAIN BUDGET AS DECIMAL(12,2) DEFAULT 50000; CREATE DOMAIN COUNTRYNAME AS VARCHAR(15); CREATE DOMAIN CUSTNO AS INTEGER; CREATE DOMAIN DEPTNO AS CHAR(3); CREATE DOMAIN EMPNO AS SMALLINT; CREATE DOMAIN FB$OUT_TYPE AS BLOB SUB_TYPE TEXT SEGMENT SIZE 80 NOT NULL; CREATE DOMAIN FIRSTNAME AS VARCHAR(15); CREATE DOMAIN JOBCODE AS VARCHAR(5); CREATE DOMAIN JOBGRADE AS SMALLINT; CREATE DOMAIN LASTNAME AS VARCHAR(20); CREATE DOMAIN PHONENUMBER AS VARCHAR(20); CREATE DOMAIN PONUMBER AS CHAR(8); CREATE DOMAIN PRODTYPE AS VARCHAR(12) DEFAULT 'software' NOT NULL; CREATE DOMAIN PROJNO AS CHAR(5); CREATE DOMAIN SALARY AS NUMERIC(10,2) DEFAULT 0; /* Table: COUNTRIES, Owner: SYSDBA */ CREATE TABLE COUNTRIES ( COUNTRY VARCHAR(64) NOT NULL, NONEU SMALLINT, ISO2 CHAR(2), ISO3 CHAR(3), PRIMARY KEY (COUNTRY) ); COMMENT ON TABLE COUNTRIES IS 'List of Countries'; COMMENT ON COLUMN COUNTRIES.ISO2 IS 'Two Character ISO Country Code'; /* Table: COUNTRY, Owner: SYSDBA */ CREATE TABLE COUNTRY ( COUNTRY COUNTRYNAME NOT NULL, CURRENCY VARCHAR(10) NOT NULL, PRIMARY KEY (COUNTRY) ); /* Table: CUSTOMER, Owner: SYSDBA */ CREATE TABLE CUSTOMER ( CUST_NO CUSTNO NOT NULL, CUSTOMER VARCHAR(25) NOT NULL, CONTACT_FIRST FIRSTNAME, CONTACT_LAST LASTNAME, PHONE_NO PHONENUMBER, ADDRESS_LINE1 ADDRESSLINE, ADDRESS_LINE2 ADDRESSLINE, CITY VARCHAR(25), STATE_PROVINCE VARCHAR(15), COUNTRY COUNTRYNAME, POSTAL_CODE VARCHAR(12), ON_HOLD CHAR(1) DEFAULT NULL, LONG_REFERENCE BIGINT, PRIMARY KEY (CUST_NO) ); /* Table: DEPARTMENT, Owner: SYSDBA */ CREATE TABLE DEPARTMENT ( DEPT_NO DEPTNO NOT NULL, DEPARTMENT VARCHAR(25) NOT NULL, HEAD_DEPT DEPTNO, MNGR_NO EMPNO, BUDGET BUDGET, LOCATION VARCHAR(15), PHONE_NO PHONENUMBER DEFAULT '555-1234', UNIQUE (DEPARTMENT), PRIMARY KEY (DEPT_NO) ); /* Table: EMPLOYEE, Owner: SYSDBA */ CREATE TABLE EMPLOYEE ( EMP_NO EMPNO NOT NULL, FIRST_NAME FIRSTNAME NOT NULL, LAST_NAME LASTNAME NOT NULL, PHONE_EXT VARCHAR(4), HIRE_DATE TIMESTAMP DEFAULT 'NOW' NOT NULL, DEPT_NO DEPTNO NOT NULL, JOB_CODE JOBCODE NOT NULL, JOB_GRADE JOBGRADE NOT NULL, JOB_COUNTRY COUNTRYNAME NOT NULL, SALARY SALARY NOT NULL, FULL_NAME COMPUTED BY (last_name || ', ' || first_name), PRIMARY KEY (EMP_NO) ); /* Table: EMPLOYEE_PROJECT, Owner: SYSDBA */ CREATE TABLE EMPLOYEE_PROJECT ( EMP_NO EMPNO NOT NULL, PROJ_ID PROJNO NOT NULL, PRIMARY KEY (EMP_NO, PROJ_ID) ); /* Table: FB$OUT_TABLE, Owner: SYSDBA */ CREATE GLOBAL TEMPORARY TABLE FB$OUT_TABLE ( LINE_NUM INTEGER, CONTENT FB$OUT_TYPE ) ON COMMIT PRESERVE ROWS ; /* Table: ITEST, Owner: SYSDBA */ CREATE TABLE ITEST ( "KEY" INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 0 INCREMENT BY 1) NOT NULL, SOMETEXT VARCHAR(64), PRIMARY KEY ("KEY") ); /* Table: ITEST2, Owner: SYSDBA */ CREATE TABLE ITEST2 ( "KEY" INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 0 INCREMENT BY 1) NOT NULL, SOMETEXT VARCHAR(64), PRIMARY KEY ("KEY") ); /* Table: JOB, Owner: SYSDBA */ CREATE TABLE JOB ( JOB_CODE JOBCODE NOT NULL, JOB_GRADE JOBGRADE NOT NULL, JOB_COUNTRY COUNTRYNAME NOT NULL, JOB_TITLE VARCHAR(25) NOT NULL, MIN_SALARY SALARY NOT NULL, MAX_SALARY SALARY NOT NULL, JOB_REQUIREMENT BLOB SUB_TYPE TEXT SEGMENT SIZE 400, LANGUAGE_REQ VARCHAR(15)[1:5], PRIMARY KEY (JOB_CODE, JOB_GRADE, JOB_COUNTRY) ); /* Table: PROJECT, Owner: SYSDBA */ CREATE TABLE PROJECT ( PROJ_ID PROJNO NOT NULL, PROJ_NAME VARCHAR(20) NOT NULL, PROJ_DESC BLOB SUB_TYPE TEXT SEGMENT SIZE 800, TEAM_LEADER EMPNO, PRODUCT PRODTYPE, UNIQUE (PROJ_NAME), PRIMARY KEY (PROJ_ID) ); /* Table: PROJ_DEPT_BUDGET, Owner: SYSDBA */ CREATE TABLE PROJ_DEPT_BUDGET ( FISCAL_YEAR INTEGER NOT NULL, PROJ_ID PROJNO NOT NULL, DEPT_NO DEPTNO NOT NULL, QUART_HEAD_CNT INTEGER[1:4], PROJECTED_BUDGET BUDGET, PRIMARY KEY (FISCAL_YEAR, PROJ_ID, DEPT_NO) ); /* Table: SALARY_HISTORY, Owner: SYSDBA */ CREATE TABLE SALARY_HISTORY ( EMP_NO EMPNO NOT NULL, CHANGE_DATE TIMESTAMP DEFAULT 'NOW' NOT NULL, UPDATER_ID VARCHAR(20) NOT NULL, OLD_SALARY SALARY NOT NULL, PERCENT_CHANGE DOUBLE PRECISION DEFAULT 0 NOT NULL, NEW_SALARY COMPUTED BY (old_salary + old_salary * percent_change / 100), PRIMARY KEY (EMP_NO, CHANGE_DATE, UPDATER_ID) ); /* Table: SALES, Owner: SYSDBA */ CREATE TABLE SALES ( PO_NUMBER PONUMBER NOT NULL, CUST_NO CUSTNO NOT NULL, SALES_REP EMPNO, ORDER_STATUS VARCHAR(7) DEFAULT 'new' NOT NULL, ORDER_DATE TIMESTAMP DEFAULT 'NOW' NOT NULL, SHIP_DATE TIMESTAMP, DATE_NEEDED TIMESTAMP, PAID CHAR(1) DEFAULT 'n', QTY_ORDERED INTEGER DEFAULT 1 NOT NULL, TOTAL_VALUE DECIMAL(9,2) NOT NULL, DISCOUNT FLOAT DEFAULT 0 NOT NULL, ITEM_TYPE PRODTYPE, AGED COMPUTED BY (ship_date - order_date), PRIMARY KEY (PO_NUMBER) ); /* External Function declarations */ DECLARE EXTERNAL FUNCTION ADDDAY TIMESTAMP, INTEGER RETURNS TIMESTAMP ENTRY_POINT 'addDay' MODULE_NAME 'fbudf' ; DECLARE EXTERNAL FUNCTION I64TRUNCATE NUMERIC(18,0) BY DESCRIPTOR, NUMERIC(18,0) BY DESCRIPTOR RETURNS PARAMETER 2 ENTRY_POINT 'fbtruncate' MODULE_NAME 'fbudf' ; DECLARE EXTERNAL FUNCTION TESTIT TIMESTAMP, INTEGER NULL, CSTRING(10) CHARACTER SET NONE, CSTRING(10) CHARACTER SET NONE BY DESCRIPTOR RETURNS CSTRING(32) CHARACTER SET NONE FREE_IT ENTRY_POINT 'testit' MODULE_NAME 'fbudf' ; /* Data Starts */ /* Inserting data into Table: COUNTRY */ INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('USA','Dollar'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('England','Pound'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Canada','CdnDlr'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Switzerland','SFranc'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Japan','Yen'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Italy','Euro'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('France','Euro'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Germany','Euro'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Australia','ADollar'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Hong Kong','HKDollar'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Netherlands','Euro'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Belgium','Euro'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Austria','Euro'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Fiji','FDollar'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Russia','Ruble'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Romania','RLeu'); COMMIT; /* Inserting data into Table: CUSTOMER */ INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1001,'Signature Design','Dale J.','Little','(619) 530-2710','15500 Pacific Heights Blvd.',NULL,'San Diego','CA','USA','92121',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1002,'Dallas Technologies','Glen','Brown','(214) 960-2233','P. O. Box 47000',NULL,'Dallas','TX','USA','75205','*',NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1003,'Buttle, Griffith and Co.','James','Buttle','(617) 488-1864','2300 Newbury Street','Suite 101','Boston','MA','USA','02115',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1004,'Central Bank','Elizabeth','Brocket','61 211 99 88','66 Lloyd Street',NULL,'Manchester',NULL,'England','M2 3LA',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1005,'DT Systems, LTD.','Tai','Wu','(852) 850 43 98','400 Connaught Road',NULL,'Central Hong Kong',NULL,'Hong Kong',NULL,NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1006,'DataServe International','Tomas','Bright','(613) 229 3323','2000 Carling Avenue','Suite 150','Ottawa','ON','Canada','K1V 9G1',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1007,'Mrs. Beauvais',NULL,'Mrs. Beauvais',NULL,'P.O. Box 22743',NULL,'Pebble Beach','CA','USA','93953',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1008,'Anini Vacation Rentals','Leilani','Briggs','(808) 835-7605','3320 Lawai Road',NULL,'Lihue','HI','USA','96766',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1009,'Max','Max',NULL,'22 01 23','1 Emerald Cove',NULL,'Turtle Island',NULL,'Fiji',NULL,'*',NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1010,'MPM Corporation','Miwako','Miyamoto','3 880 77 19','2-64-7 Sasazuka',NULL,'Tokyo',NULL,'Japan','150',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1011,'Dynamic Intelligence Corp','Victor','Granges','01 221 16 50','Florhofgasse 10',NULL,'Zurich',NULL,'Switzerland','8005',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1012,'3D-Pad Corp.','Michelle','Roche','1 43 60 61','22 Place de la Concorde',NULL,'Paris',NULL,'France','75008',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1013,'Lorenzi Export, Ltd.','Andreas','Lorenzi','02 404 6284','Via Eugenia, 15',NULL,'Milan',NULL,'Italy','20124',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1014,'Dyno Consulting','Greta','Hessels','02 500 5940','Rue Royale 350',NULL,'Brussels',NULL,'Belgium','1210',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1015,'GeoTech Inc.','K.M.','Neppelenbroek','(070) 44 91 18','P.0.Box 702',NULL,'Den Haag',NULL,'Netherlands','2514',NULL,NULL); COMMIT; /* Inserting data into Table: DEPARTMENT */ INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('000','Corporate Headquarters',NULL,105,1000000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('100','Sales and Marketing','000',85,2000000,'San Francisco','(415) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('600','Engineering','000',2,1100000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('900','Finance','000',46,400000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('180','Marketing','100',NULL,1500000,'San Francisco','(415) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('620','Software Products Div.','600',NULL,1200000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('621','Software Development','620',NULL,400000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('622','Quality Assurance','620',9,300000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('623','Customer Support','620',15,650000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('670','Consumer Electronics Div.','600',107,1150000,'Burlington, VT','(802) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('671','Research and Development','670',20,460000,'Burlington, VT','(802) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('672','Customer Services','670',94,850000,'Burlington, VT','(802) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('130','Field Office: East Coast','100',11,500000,'Boston','(617) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('140','Field Office: Canada','100',72,500000,'Toronto','(416) 677-1000'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('110','Pacific Rim Headquarters','100',34,600000,'Kuaui','(808) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('115','Field Office: Japan','110',118,500000,'Tokyo','3 5350 0901'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('116','Field Office: Singapore','110',NULL,300000,'Singapore','3 55 1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('120','European Headquarters','100',36,700000,'London','71 235-4400'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('121','Field Office: Switzerland','120',141,500000,'Zurich','1 211 7767'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('123','Field Office: France','120',134,400000,'Cannes','58 68 11 12'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('125','Field Office: Italy','120',121,400000,'Milan','2 430 39 39'); COMMIT; /* Inserting data into Table: EMPLOYEE */ INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(2,'Robert','Nelson','250','1988.12.28 00:00:00.000','600','VP',2,'USA',105900); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(4,'Bruce','Young','233','1988.12.28 00:00:00.000','621','Eng',2,'USA',97500); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(5,'Kim','Lambert','22','1989.02.06 00:00:00.000','130','Eng',2,'USA',102750); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(8,'Leslie','Johnson','410','1989.04.05 00:00:00.000','180','Mktg',3,'USA',64635); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(9,'Phil','Forest','229','1989.04.17 00:00:00.000','622','Mngr',3,'USA',75060); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(11,'K. J.','Weston','34','1990.01.17 00:00:00.000','130','SRep',4,'USA',86292.94); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(12,'Terri','Lee','256','1990.05.01 00:00:00.000','000','Admin',4,'USA',53793); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(14,'Stewart','Hall','227','1990.06.04 00:00:00.000','900','Finan',3,'USA',69482.63); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(15,'Katherine','Young','231','1990.06.14 00:00:00.000','623','Mngr',3,'USA',67241.25); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(20,'Chris','Papadopoulos','887','1990.01.01 00:00:00.000','671','Mngr',3,'USA',89655); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(24,'Pete','Fisher','888','1990.09.12 00:00:00.000','671','Eng',3,'USA',81810.19); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(28,'Ann','Bennet','5','1991.02.01 00:00:00.000','120','Admin',5,'England',22935); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(29,'Roger','De Souza','288','1991.02.18 00:00:00.000','623','Eng',3,'USA',69482.63); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(34,'Janet','Baldwin','2','1991.03.21 00:00:00.000','110','Sales',3,'USA',61637.8); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(36,'Roger','Reeves','6','1991.04.25 00:00:00.000','120','Sales',3,'England',33620.63); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(37,'Willie','Stansbury','7','1991.04.25 00:00:00.000','120','Eng',4,'England',39224.06); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(44,'Leslie','Phong','216','1991.06.03 00:00:00.000','623','Eng',4,'USA',56034.38); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(45,'Ashok','Ramanathan','209','1991.08.01 00:00:00.000','621','Eng',3,'USA',80689.5); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(46,'Walter','Steadman','210','1991.08.09 00:00:00.000','900','CFO',1,'USA',116100); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(52,'Carol','Nordstrom','420','1991.10.02 00:00:00.000','180','PRel',4,'USA',42742.5); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(61,'Luke','Leung','3','1992.02.18 00:00:00.000','110','SRep',4,'USA',68805); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(65,'Sue Anne','O''Brien','877','1992.03.23 00:00:00.000','670','Admin',5,'USA',31275); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(71,'Jennifer M.','Burbank','289','1992.04.15 00:00:00.000','622','Eng',3,'USA',53167.5); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(72,'Claudia','Sutherland',NULL,'1992.04.20 00:00:00.000','140','SRep',4,'Canada',100914); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(83,'Dana','Bishop','290','1992.06.02 00:00:00.000','621','Eng',3,'USA',62550.02); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(85,'Mary S.','MacDonald','477','1992.06.01 00:00:00.000','100','VP',2,'USA',111262.5); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(94,'Randy','Williams','892','1992.08.08 00:00:00.000','672','Mngr',4,'USA',56295); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(105,'Oliver H A','Bender','255','1992.10.08 00:00:00.000','000','CEO',1,'USA',212850); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(107,'Kevin','Cook','894','1993.02.01 00:00:00.000','670','Dir',2,'USA',111262.5); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(109,'Kelly','Brown','202','1993.02.04 00:00:00.000','600','Admin',5,'USA',27000.01); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(110,'Yuki','Ichida','22','1993.02.04 00:00:00.000','115','Eng',3,'Japan',6000000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(113,'Mary','Page','845','1993.04.12 00:00:00.000','671','Eng',4,'USA',48000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(114,'Bill','Parker','247','1993.06.01 00:00:00.000','623','Eng',5,'USA',35000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(118,'Takashi','Yamamoto','23','1993.07.01 00:00:00.000','115','SRep',4,'Japan',7480000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(121,'Roberto','Ferrari','1','1993.07.12 00:00:00.000','125','SRep',4,'USA',33000.01); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(127,'Michael','Yanowski','492','1993.08.09 00:00:00.000','100','SRep',4,'USA',44000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(134,'Jacques','Glon',NULL,'1993.08.23 00:00:00.000','123','SRep',4,'France',38500); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(136,'Scott','Johnson','265','1993.09.13 00:00:00.000','623','Doc',3,'USA',60000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(138,'T.J.','Green','218','1993.11.01 00:00:00.000','621','Eng',4,'USA',36000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(141,'Pierre','Osborne',NULL,'1994.01.03 00:00:00.000','121','SRep',4,'Switzerland',110000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(144,'John','Montgomery','820','1994.03.30 00:00:00.000','672','Eng',5,'USA',35000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(145,'Mark','Guckenheimer','221','1994.05.02 00:00:00.000','622','Eng',5,'USA',32000); COMMIT; /* Inserting data into Table: EMPLOYEE_PROJECT */ INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(144,'DGPII'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(113,'DGPII'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(24,'DGPII'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(8,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(136,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(15,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(71,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(145,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(44,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(4,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(83,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(138,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(45,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(20,'GUIDE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(24,'GUIDE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(113,'GUIDE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(8,'GUIDE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(4,'MAPDB'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(71,'MAPDB'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(46,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(105,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(12,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(85,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(110,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(34,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(8,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(14,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(52,'MKTPR'); COMMIT; /* Inserting data into Table: ITEST */ INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(1,'Testing'); INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(3,'Another'); INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(4,'Test'); INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(7,'Test'); INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(8,'Again'); INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(9,'Test'); INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(10,' 2'); COMMIT; /* Inserting data into Table: JOB */ INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('CEO',1,'USA','Chief Executive Officer',130000,250000,'No specific requirements. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('CFO',1,'USA','Chief Financial Officer',85000,140000,'15+ years in finance or 5+ years as a CFO with a proven track record. MBA or J.D. degree. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('VP',2,'USA','Vice President',80000,130000,'No specific requirements. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Dir',2,'USA','Director',75000,120000,'5-10 years as a director in computer or electronics industries. An advanced degree. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Mngr',3,'USA','Manager',60000,100000,'BA/BS required. 3-5 years in management, plus 2-4 years engineering experience. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Mngr',4,'USA','Manager',30000,60000,'5+ years office management experience. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Admin',4,'USA','Administrative Assistant',35000,55000,'3-5 years experience in executive environment. Strong organizational and communication skills required. BA degree preferred. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Admin',5,'USA','Administrative Assistant',20000,40000,'2-4 years clerical experience. Facility with word processing and data entry. AA degree preferred. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Admin',5,'England','Administrative Assistant',13400,26800,NULL,NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('PRel',4,'USA','Public Relations Rep.',25000,65000,NULL,NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Mktg',3,'USA','Marketing Analyst',40000,80000,'MBA required. 10+ years experience in high tech environment. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Mktg',4,'USA','Marketing Analyst',20000,50000,'BA/BS required. MBA preferred. 3-5 years experience. Knowledgeable with spreadsheets and databases. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Accnt',4,'USA','Accountant',28000,55000,'CPA with 3-5 years experience. Spreadsheet, data entry, and word processing knowledge required. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Finan',3,'USA','Financial Analyst',35000,85000,'5-10 years of accounting and financial experience. Strong analytical skills. CPA/MBA required. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Eng',2,'USA','Engineer',70000,110000,'Distinguished engineer. Ph.D/MS/BS or equivalent experience. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Eng',3,'USA','Engineer',50000,90000,'5+ years experience. BA/BS required. MS degree preferred. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Eng',3,'Japan','Engineer',5400000,9720000,'5+ years experience. BA/BS and/or MS degrees required. Customer support experience desired. Knowledge of Japanese and English. ', Japanese Mandarin English ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Eng',4,'USA','Engineer',30000,65000,'BA/BS and 3-5 years experience. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Eng',4,'England','Engineer',20100,43550,'BA/BS and 2-4 years experience in technical support. Knowledge of several European languages helpful. ', English German French ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Eng',5,'USA','Engineer',25000,35000,'BA/BS preferred. 2-4 years technical experience. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Doc',3,'USA','Technical Writer',38000,60000,'4+ years writing highly technical software documentation. A bachelor''s degree or equivalent. Programming experience required. Excellent language skills. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Doc',5,'USA','Technical Writer',22000,40000,'BA in English/journalism or excellent language skills. Some programming experience required. 2-4 years of technical writing. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Sales',3,'USA','Sales Co-ordinator',40000,70000,'Experience in sales and public relations in a high tech environment. Excellent communication skills. BA or equivalent. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Sales',3,'England','Sales Co-ordinator',26800,46900,'Experience in sales and public relations in a high tech environment. Excellent communication skills. BA or equivalent. Knowledge of several European languages helpful. ', English German French ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'USA','Sales Representative',20000,100000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Some knowledge of Spanish required. Travel required. ', English Spanish ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'England','Sales Representative',13400,67000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Knowledge of several European languages helpful. Travel required. ', English German French ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'Canada','Sales Representative',26400,132000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Travel required. English plus speaking knowledge of French required. ', English French ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'Switzerland','Sales Representative',28000,149000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Knowledge of German required; one or more other European language helpful. Travel required. ', German French English Italian ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'Japan','Sales Representative',2160000,10800000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Knowledge of Japanese required. Travel required. ', Japanese English ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'Italy','Sales Representative',20000,100000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Fluency in Italian; some knowledge of German helpful. Travel required. ', Italian German French ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'France','Sales Representative',20000,100000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Fluency in French; some knowledge of German/Spanish helpful. Travel required. ', English French Spanish ); COMMIT; /* Inserting data into Table: PROJECT */ INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('VBASE','Video Database','Design a video data base management system for controlling on-demand video distribution. ',45,'software'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('DGPII','DigiPizza','Develop second generation digital pizza maker with flash-bake heating element and digital ingredient measuring system. ',24,'other'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('GUIDE','AutoMap','Develop a prototype for the automobile version of the hand-held map browsing device. ',20,'hardware'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('MAPDB','MapBrowser port','Port the map browsing database software to run on the automobile model. ',4,'software'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('HWRII','Translator upgrade','Integrate the hand-writing recognition module into the universal language translator. ',NULL,'software'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('MKTPR','Marketing project 3','Expand marketing and sales in the Pacific Rim. Set up a field office in Australia and Singapore. ',85,'N/A'); COMMIT; /* Inserting data into Table: PROJ_DEPT_BUDGET */ INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'GUIDE','100', 1 1 1 0 ,200000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'GUIDE','671', 3 2 1 0 ,450000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1993,'MAPDB','621', 0 0 0 1 ,20000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MAPDB','621', 2 1 0 0 ,40000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MAPDB','622', 1 1 0 0 ,60000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MAPDB','671', 1 1 0 0 ,11000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'HWRII','670', 1 1 1 1 ,20000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'HWRII','621', 2 3 2 1 ,400000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'HWRII','622', 1 1 2 2 ,100000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MKTPR','623', 1 1 1 2 ,80000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MKTPR','672', 1 1 1 2 ,100000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MKTPR','100', 4 5 6 6 ,1000000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MKTPR','110', 2 2 0 3 ,200000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MKTPR','000', 1 1 2 2 ,100000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1995,'MKTPR','623', 7 7 4 4 ,1200000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1995,'MKTPR','672', 2 3 3 3 ,800000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1995,'MKTPR','100', 4 5 6 6 ,2000000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1995,'MKTPR','110', 1 1 1 1 ,1200000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'VBASE','621', 4 5 5 3 ,1900000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1995,'VBASE','621', 4 3 2 2 ,900000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'VBASE','622', 2 2 2 1 ,400000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'VBASE','100', 1 1 2 3 ,300000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1995,'VBASE','100', 3 3 1 1 ,1500000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1996,'VBASE','100', 1 1 0 0 ,150000); COMMIT; /* Inserting data into Table: SALARY_HISTORY */ INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(28,'1992.12.15 00:00:00.000','admin2',20000,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(2,'1992.12.15 00:00:00.000','admin2',98000,8.0612); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(4,'1992.12.15 00:00:00.000','admin2',90000,8.3333); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(5,'1992.12.15 00:00:00.000','admin2',95000,8.1578); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(11,'1992.12.15 00:00:00.000','admin2',70000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(12,'1992.12.15 00:00:00.000','admin2',48000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(14,'1992.12.15 00:00:00.000','admin2',62000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(15,'1992.12.15 00:00:00.000','admin2',60000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(20,'1992.12.15 00:00:00.000','admin2',80000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(24,'1992.12.15 00:00:00.000','admin2',73000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(29,'1992.12.15 00:00:00.000','admin2',62000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(34,'1992.12.15 00:00:00.000','admin2',55000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(36,'1992.12.15 00:00:00.000','admin2',30000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(37,'1992.12.15 00:00:00.000','admin2',35000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(44,'1992.12.15 00:00:00.000','admin2',50000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(45,'1992.12.15 00:00:00.000','admin2',72000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(8,'1993.09.08 00:00:00.000','elaine',62000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(9,'1993.09.08 00:00:00.000','elaine',72000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(11,'1993.09.08 00:00:00.000','elaine',75250,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(12,'1993.09.08 00:00:00.000','elaine',51600,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(14,'1993.09.08 00:00:00.000','elaine',66650,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(15,'1993.09.08 00:00:00.000','elaine',64500,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(20,'1993.09.08 00:00:00.000','elaine',86000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(24,'1993.09.08 00:00:00.000','elaine',78475,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(28,'1993.09.08 00:00:00.000','elaine',22000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(29,'1993.09.08 00:00:00.000','elaine',66650,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(34,'1993.09.08 00:00:00.000','elaine',59125,4.2499); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(36,'1993.09.08 00:00:00.000','elaine',32250,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(37,'1993.09.08 00:00:00.000','elaine',37625,4.2499); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(44,'1993.09.08 00:00:00.000','elaine',53750,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(45,'1993.09.08 00:00:00.000','elaine',77400,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(52,'1993.09.08 00:00:00.000','elaine',41000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(61,'1993.09.08 00:00:00.000','elaine',60000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(65,'1993.09.08 00:00:00.000','elaine',30000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(71,'1993.09.08 00:00:00.000','elaine',51000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(72,'1993.09.08 00:00:00.000','elaine',88000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(83,'1993.09.08 00:00:00.000','elaine',60000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(94,'1993.09.08 00:00:00.000','elaine',54000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(46,'1993.12.20 00:00:00.000','tj',120000,-3.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(85,'1993.12.20 00:00:00.000','tj',115000,-3.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(105,'1993.12.20 00:00:00.000','tj',220000,-3.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(107,'1993.12.20 00:00:00.000','tj',115000,-3.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(11,'1993.12.20 00:00:00.000','elaine',78448.13,9.9999); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(61,'1993.12.20 00:00:00.000','elaine',62550,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(72,'1993.12.20 00:00:00.000','elaine',91740,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(118,'1993.12.20 00:00:00.000','elaine',6800000,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(121,'1993.12.20 00:00:00.000','elaine',30000,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(127,'1993.12.20 00:00:00.000','elaine',40000,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(134,'1993.12.20 00:00:00.000','elaine',35000,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(28,'2017.11.06 16:46:27.145','SYSDBA',22935,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(28,'2017.11.06 16:47:01.376','SYSDBA',22935.01,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(12,'2017.12.29 12:18:48.909','SYSDBA',53793,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(12,'2017.12.29 12:18:58.051','SYSDBA',53793.01,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(83,'2018.01.04 10:57:34.245','SYSDBA',62550,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(121,'2018.03.13 15:29:08.850','SYSDBA',33000,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(109,'2018.03.13 17:12:06.340','SYSDBA',27000,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(34,'2018.03.13 17:13:20.671','SYSDBA',61637.81,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(83,'2018.03.13 17:13:35.845','SYSDBA',62550.01,0); COMMIT; /* Inserting data into Table: SALES */ INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V91E0210',1004,11,'shipped','1991.03.04 00:00:00.000','1991.03.05 00:00:00.000',NULL,'y',10,5000,0.100000001490116,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V92E0340',1004,11,'shipped','1992.10.15 00:00:00.000','1992.10.16 00:00:00.000','1992.10.17 00:00:00.000','y',7,70000,0,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V92J1003',1010,61,'shipped','1992.07.26 00:00:00.000','1992.08.04 00:00:00.000','1992.09.15 00:00:00.000','y',15,2985,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93J2004',1010,118,'shipped','1993.10.30 00:00:00.000','1993.12.02 00:00:00.000','1993.11.15 00:00:00.000','y',3,210,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93J3100',1010,118,'shipped','1993.08.20 00:00:00.000','1993.08.20 00:00:00.000',NULL,'y',16,18000.4,0.100000001490116,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V92F3004',1012,11,'shipped','1992.10.15 00:00:00.000','1993.01.16 00:00:00.000','1993.01.16 00:00:00.000','y',3,2000,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93F3088',1012,134,'shipped','1993.08.27 00:00:00.000','1993.09.08 00:00:00.000',NULL,'n',10,10000,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93F2030',1012,134,'open','1993.12.12 00:00:00.000',NULL,NULL,'y',15,450000.49,0,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93F2051',1012,134,'waiting','1993.12.18 00:00:00.000',NULL,'1994.03.01 00:00:00.000','n',1,999.98,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93H0030',1005,118,'open','1993.12.12 00:00:00.000',NULL,'1994.01.01 00:00:00.000','y',20,5980,0.200000002980232,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V94H0079',1005,61,'open','1994.02.13 00:00:00.000',NULL,'1994.04.20 00:00:00.000','n',10,9000,0.0500000007450581,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9324200',1001,72,'shipped','1993.08.09 00:00:00.000','1993.08.09 00:00:00.000','1993.08.17 00:00:00.000','y',1000,560000,0.200000002980232,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9324320',1001,127,'shipped','1993.08.16 00:00:00.000','1993.08.16 00:00:00.000','1993.09.01 00:00:00.000','y',1,0,1,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9320630',1001,127,'open','1993.12.12 00:00:00.000',NULL,'1993.12.15 00:00:00.000','n',3,60000,0.200000002980232,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9420099',1001,127,'open','1994.01.17 00:00:00.000',NULL,'1994.06.01 00:00:00.000','n',100,3399.15,0.150000005960464,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9427029',1001,127,'shipped','1994.02.07 00:00:00.000','1994.02.10 00:00:00.000','1994.02.10 00:00:00.000','n',17,422210.97,0,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9333005',1002,11,'shipped','1993.02.03 00:00:00.000','1993.03.03 00:00:00.000',NULL,'y',2,600.5,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9333006',1002,11,'shipped','1993.04.27 00:00:00.000','1993.05.02 00:00:00.000','1993.05.02 00:00:00.000','n',5,20000,0,'other'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9336100',1002,11,'waiting','1993.12.27 00:00:00.000','1994.01.01 00:00:00.000','1994.01.01 00:00:00.000','n',150,14850,0.0500000007450581,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9346200',1003,11,'waiting','1993.12.31 00:00:00.000',NULL,'1994.01.24 00:00:00.000','n',3,0,1,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9345200',1003,11,'shipped','1993.11.11 00:00:00.000','1993.12.02 00:00:00.000','1993.12.01 00:00:00.000','y',900,27000,0.300000011920929,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9345139',1003,127,'shipped','1993.09.09 00:00:00.000','1993.09.20 00:00:00.000','1993.10.01 00:00:00.000','y',20,12582.12,0.100000001490116,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93C0120',1006,72,'shipped','1993.03.22 00:00:00.000','1993.05.31 00:00:00.000','1993.04.17 00:00:00.000','y',1,47.5,0,'other'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93C0990',1006,72,'shipped','1993.08.09 00:00:00.000','1993.09.02 00:00:00.000',NULL,'y',40,399960.5,0.100000001490116,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9456220',1007,127,'open','1994.01.04 00:00:00.000',NULL,'1994.01.30 00:00:00.000','y',1,3999.99,0,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93S4702',1011,121,'shipped','1993.10.27 00:00:00.000','1993.10.28 00:00:00.000','1993.12.15 00:00:00.000','y',4,120000,0,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V94S6400',1011,141,'waiting','1994.01.06 00:00:00.000',NULL,'1994.02.15 00:00:00.000','y',20,1980.72,0.400000005960464,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93H3009',1008,61,'shipped','1993.08.01 00:00:00.000','1993.12.02 00:00:00.000','1993.12.01 00:00:00.000','n',3,9000,0.0500000007450581,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93H0500',1008,61,'open','1993.12.12 00:00:00.000',NULL,'1993.12.15 00:00:00.000','n',3,16000,0.200000002980232,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93F0020',1009,61,'shipped','1993.10.10 00:00:00.000','1993.11.11 00:00:00.000','1993.11.11 00:00:00.000','n',1,490.69,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93I4700',1013,121,'open','1993.10.27 00:00:00.000',NULL,'1993.12.15 00:00:00.000','n',5,2693,0,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93B1002',1014,134,'shipped','1993.09.20 00:00:00.000','1993.09.21 00:00:00.000','1993.09.25 00:00:00.000','y',1,100.02,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93N5822',1015,134,'shipped','1993.12.18 00:00:00.000','1994.01.14 00:00:00.000',NULL,'n',2,1500,0,'software'); COMMIT; /* Data Ends */ /* Index definitions for all user tables */ CREATE INDEX CUSTNAMEX ON CUSTOMER(CUSTOMER); CREATE INDEX CUSTREGION ON CUSTOMER(COUNTRY, CITY); CREATE DESCENDING INDEX BUDGETX ON DEPARTMENT(BUDGET); CREATE INDEX NAMEX ON EMPLOYEE(LAST_NAME, FIRST_NAME); CREATE DESCENDING INDEX MAXSALX ON JOB(JOB_COUNTRY, MAX_SALARY); CREATE INDEX MINSALX ON JOB(JOB_COUNTRY, MIN_SALARY); CREATE UNIQUE INDEX PRODTYPEX ON PROJECT(PRODUCT, PROJ_NAME); CREATE DESCENDING INDEX CHANGEX ON SALARY_HISTORY(CHANGE_DATE); CREATE INDEX UPDATERX ON SALARY_HISTORY(UPDATER_ID); CREATE INDEX NEEDX ON SALES(DATE_NEEDED); CREATE DESCENDING INDEX QTYX ON SALES(ITEM_TYPE, QTY_ORDERED); CREATE INDEX SALESTATX ON SALES(ORDER_STATUS, PAID); ALTER TABLE CUSTOMER ADD FOREIGN KEY (COUNTRY) REFERENCES COUNTRY (COUNTRY); ALTER TABLE DEPARTMENT ADD FOREIGN KEY (HEAD_DEPT) REFERENCES DEPARTMENT (DEPT_NO); ALTER TABLE DEPARTMENT ADD FOREIGN KEY (MNGR_NO) REFERENCES EMPLOYEE (EMP_NO); ALTER TABLE EMPLOYEE ADD FOREIGN KEY (DEPT_NO) REFERENCES DEPARTMENT (DEPT_NO); ALTER TABLE EMPLOYEE ADD FOREIGN KEY (JOB_CODE, JOB_GRADE, JOB_COUNTRY) REFERENCES JOB (JOB_CODE, JOB_GRADE, JOB_COUNTRY); ALTER TABLE EMPLOYEE_PROJECT ADD FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE (EMP_NO); ALTER TABLE EMPLOYEE_PROJECT ADD FOREIGN KEY (PROJ_ID) REFERENCES PROJECT (PROJ_ID); ALTER TABLE JOB ADD FOREIGN KEY (JOB_COUNTRY) REFERENCES COUNTRY (COUNTRY); ALTER TABLE PROJECT ADD FOREIGN KEY (TEAM_LEADER) REFERENCES EMPLOYEE (EMP_NO); ALTER TABLE PROJ_DEPT_BUDGET ADD FOREIGN KEY (DEPT_NO) REFERENCES DEPARTMENT (DEPT_NO); ALTER TABLE PROJ_DEPT_BUDGET ADD FOREIGN KEY (PROJ_ID) REFERENCES PROJECT (PROJ_ID); ALTER TABLE SALARY_HISTORY ADD FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE (EMP_NO); ALTER TABLE SALES ADD FOREIGN KEY (CUST_NO) REFERENCES CUSTOMER (CUST_NO); ALTER TABLE SALES ADD FOREIGN KEY (SALES_REP) REFERENCES EMPLOYEE (EMP_NO); CREATE SEQUENCE CUST_NO_GEN; ALTER SEQUENCE CUST_NO_GEN RESTART WITH 1016; CREATE SEQUENCE EMP_NO_GEN; ALTER SEQUENCE EMP_NO_GEN RESTART WITH 158; CREATE SEQUENCE FB$OUT_SEQ; ALTER SEQUENCE FB$OUT_SEQ RESTART WITH 1; /* View: DEPTLIST, Owner: SYSDBA */ CREATE VIEW DEPTLIST ( EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, HIRE_DATE, DEPT_NO, JOB_CODE, JOB_GRADE, JOB_COUNTRY, SALARY, FULL_NAME, DEPT_PATH, DEPT_KEY_PATH, "Payment Status" ) AS with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH, cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH, Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO ) Select distinct A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH, CASE When A.SALARY > 10000 then 'higher paid' else 'lower paid' End From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO ; /* View: PHONE_LIST, Owner: SYSDBA */ CREATE VIEW PHONE_LIST ( EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, LOCATION, PHONE_NO ) AS SELECT emp_no, first_name, last_name, phone_ext, location, phone_no FROM employee, department WHERE employee.dept_no = department.dept_no ; /* Add Domain Check Constraints */ ALTER DOMAIN BUDGET ADD CONSTRAINT CHECK (VALUE > 10000 AND VALUE <= 2000000); ALTER DOMAIN CUSTNO ADD CONSTRAINT CHECK (VALUE > 1000); ALTER DOMAIN DEPTNO ADD CONSTRAINT CHECK (VALUE = '000' OR (VALUE > '0' AND VALUE <= '999') OR VALUE IS NULL); ALTER DOMAIN JOBCODE ADD CONSTRAINT CHECK (VALUE > '99999'); ALTER DOMAIN JOBGRADE ADD CONSTRAINT CHECK (VALUE BETWEEN 0 AND 6); ALTER DOMAIN PONUMBER ADD CONSTRAINT CHECK (VALUE STARTING WITH 'V'); ALTER DOMAIN PRODTYPE ADD CONSTRAINT CHECK (VALUE IN ('software', 'hardware', 'other', 'N/A')); ALTER DOMAIN PROJNO ADD CONSTRAINT CHECK (VALUE = UPPER (VALUE)); ALTER DOMAIN SALARY ADD CONSTRAINT CHECK (VALUE > 0); ALTER TABLE JOB ADD CHECK (min_salary < max_salary); ALTER TABLE JOB ADD CHECK (min_salary < max_salary); ALTER TABLE EMPLOYEE ADD CHECK ( salary >= (SELECT min_salary FROM job WHERE job.job_code = employee.job_code AND job.job_grade = employee.job_grade AND job.job_country = employee.job_country) AND salary <= (SELECT max_salary FROM job WHERE job.job_code = employee.job_code AND job.job_grade = employee.job_grade AND job.job_country = employee.job_country)); ALTER TABLE PROJ_DEPT_BUDGET ADD CHECK (FISCAL_YEAR >= 1993); ALTER TABLE SALARY_HISTORY ADD CHECK (percent_change between -50 and 50); ALTER TABLE CUSTOMER ADD CHECK (on_hold IS NULL OR on_hold = '*'); ALTER TABLE SALES ADD CHECK (order_status in ('new', 'open', 'shipped', 'waiting')); ALTER TABLE SALES ADD CHECK (ship_date >= order_date OR ship_date IS NULL); ALTER TABLE SALES ADD CHECK (date_needed > order_date OR date_needed IS NULL); ALTER TABLE SALES ADD CHECK (paid in ('y', 'n')); ALTER TABLE SALES ADD CHECK (qty_ordered >= 1); ALTER TABLE SALES ADD CHECK (total_value >= 0); ALTER TABLE SALES ADD CHECK (discount >= 0 AND discount <= 1); ALTER TABLE SALES ADD CHECK (NOT (order_status = 'shipped' AND ship_date IS NULL)); ALTER TABLE SALES ADD CHECK (NOT (order_status = 'shipped' AND EXISTS (SELECT on_hold FROM customer WHERE customer.cust_no = sales.cust_no AND customer.on_hold = '*'))); /* Exceptions */ CREATE EXCEPTION CUSTOMER_CHECK 'Overdue balance -- can not ship.'; CREATE EXCEPTION CUSTOMER_ON_HOLD 'This customer is on hold.'; CREATE EXCEPTION ORDER_ALREADY_SHIPPED 'Order status is "shipped."'; CREATE EXCEPTION REASSIGN_SALES 'Reassign the sales records before deleting this employee.'; CREATE EXCEPTION UNKNOWN_EMP_ID 'Invalid employee number or project id.'; COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Package Definitions */ CREATE PACKAGE FB$OUT AS begin procedure enable; procedure disable; procedure put_line (line fb$out_type); procedure clear; procedure get_lines returns (lines fb$out_type); end ^ CREATE PACKAGE SELECT$TEST AS Begin Procedure ShowItems(IPARAM Integer) RETURNS (OutParam integer); End ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Stored procedures Definitions*/ CREATE PROCEDURE SHOW_LANGS ( CODE VARCHAR(5) CHARACTER SET NONE, GRADE SMALLINT, CTY VARCHAR(15) CHARACTER SET NONE ) RETURNS ( LANGUAGES VARCHAR(15) CHARACTER SET NONE ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE ADD_EMP_PROJ ( EMP_NO SMALLINT, PROJ_ID CHAR(5) CHARACTER SET NONE ) AS BEGIN EXIT; END ^ CREATE PROCEDURE ALL_LANGS RETURNS ( CODE VARCHAR(5) CHARACTER SET NONE, GRADE VARCHAR(5) CHARACTER SET NONE, COUNTRY VARCHAR(15) CHARACTER SET NONE, LANG VARCHAR(15) CHARACTER SET NONE ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE DELETE_EMPLOYEE ( EMP_NUM INTEGER ) AS BEGIN EXIT; END ^ CREATE PROCEDURE DEPT_BUDGET ( DNO CHAR(3) CHARACTER SET NONE ) RETURNS ( TOT DECIMAL(12,2) ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE EMPLOYEE_PAY_STATUS ( EMP_NUM SMALLINT ) RETURNS ( PAY_STATUS VARCHAR(6) CHARACTER SET NONE, SALARY NUMERIC(10,2) ) AS BEGIN EXIT; END ^ CREATE PROCEDURE GET_EMP_PROJ ( EMP_NO SMALLINT ) RETURNS ( PROJ_ID CHAR(5) CHARACTER SET NONE ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE "Has Space" ( ARG1 INTEGER ) AS BEGIN EXIT; END ^ CREATE PROCEDURE MAIL_LABEL ( CUST_NO INTEGER ) RETURNS ( LINE1 CHAR(40) CHARACTER SET NONE, LINE2 CHAR(40) CHARACTER SET NONE, LINE3 CHAR(40) CHARACTER SET NONE, LINE4 CHAR(40) CHARACTER SET NONE, LINE5 CHAR(40) CHARACTER SET NONE, LINE6 CHAR(40) CHARACTER SET NONE ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE ORG_CHART RETURNS ( HEAD_DEPT CHAR(25) CHARACTER SET NONE, DEPARTMENT CHAR(25) CHARACTER SET NONE, MNGR_NAME CHAR(20) CHARACTER SET NONE, TITLE CHAR(5) CHARACTER SET NONE, EMP_CNT INTEGER ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE SHIP_ORDER ( PO_NUM CHAR(8) CHARACTER SET NONE ) AS BEGIN EXIT; END ^ CREATE PROCEDURE SUB_TOT_BUDGET ( HEAD_DEPT CHAR(3) CHARACTER SET NONE ) RETURNS ( TOT_BUDGET DECIMAL(12,2), AVG_BUDGET DECIMAL(12,2), MIN_BUDGET DECIMAL(12,2), MAX_BUDGET DECIMAL(12,2) ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE "UC SPACE" ( ARG1 INTEGER ) AS BEGIN EXIT; END ^ CREATE PROCEDURE "iCASE" AS BEGIN EXIT; END ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Stored Function declarations */ CREATE FUNCTION F (X INTEGER) RETURNS INTEGER AS BEGIN END ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; SET TERM ^; /* Triggers only will work for SQL triggers */ CREATE TRIGGER "After Create Database" ACTIVE ON CONNECT POSITION 0 as begin End ^ CREATE TRIGGER "BEFORE CREATE TABLE" ACTIVE BEFORE CREATE TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE TABLE" ACTIVE AFTER CREATE TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER TABLE" ACTIVE BEFORE ALTER TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER TABLE" ACTIVE AFTER ALTER TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE/Alter TABLE" ACTIVE AFTER CREATE TABLE OR ALTER TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP TABLE" ACTIVE BEFORE Drop TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP TABLE" ACTIVE AFTER Drop TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE PROCEDURE" ACTIVE BEFORE CREATE PROCEDURE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE PROCEDURE" ACTIVE AFTER CREATE PROCEDURE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER PROCEDURE" ACTIVE BEFORE ALTER PROCEDURE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER PROCEDURE" ACTIVE AFTER ALTER PROCEDURE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP PROCEDURE" ACTIVE BEFORE Drop PROCEDURE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP PROCEDURE" ACTIVE AFTER Drop PROCEDURE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE FUNCTION" ACTIVE BEFORE CREATE FUNCTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE FUNCTION" ACTIVE AFTER CREATE FUNCTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER FUNCTION" ACTIVE BEFORE ALTER FUNCTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER FUNCTION" ACTIVE AFTER ALTER FUNCTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP FUNCTION" ACTIVE BEFORE Drop FUNCTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP FUNCTION" ACTIVE AFTER Drop FUNCTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE TRIGGER" ACTIVE BEFORE CREATE TRIGGER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE TRIGGER" ACTIVE AFTER CREATE TRIGGER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER TRIGGER" ACTIVE BEFORE ALTER TRIGGER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER TRIGGER" ACTIVE AFTER ALTER TRIGGER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP TRIGGER" ACTIVE BEFORE Drop TRIGGER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP TRIGGER" ACTIVE AFTER Drop TRIGGER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE EXCEPTION" ACTIVE BEFORE CREATE EXCEPTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE EXCEPTION" ACTIVE AFTER CREATE EXCEPTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER EXCEPTION" ACTIVE BEFORE ALTER EXCEPTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER EXCEPTION" ACTIVE AFTER ALTER EXCEPTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP EXCEPTION" ACTIVE BEFORE Drop EXCEPTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP EXCEPTION" ACTIVE AFTER Drop EXCEPTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE VIEW" ACTIVE BEFORE CREATE VIEW POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE VIEW" ACTIVE AFTER CREATE VIEW POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER VIEW" ACTIVE BEFORE ALTER VIEW POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER VIEW" ACTIVE AFTER ALTER VIEW POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP VIEW" ACTIVE BEFORE Drop VIEW POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP VIEW" ACTIVE AFTER Drop VIEW POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE DOMAIN" ACTIVE BEFORE CREATE DOMAIN POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE DOMAIN" ACTIVE AFTER CREATE DOMAIN POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER DOMAIN" ACTIVE BEFORE ALTER DOMAIN POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER DOMAIN" ACTIVE AFTER ALTER DOMAIN POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP DOMAIN" ACTIVE BEFORE Drop DOMAIN POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP DOMAIN" ACTIVE AFTER Drop DOMAIN POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE ROLE" ACTIVE BEFORE CREATE ROLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE ROLE" ACTIVE AFTER CREATE ROLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER ROLE" ACTIVE BEFORE ALTER ROLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER ROLE" ACTIVE AFTER ALTER ROLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP ROLE" ACTIVE BEFORE Drop ROLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP ROLE" ACTIVE AFTER Drop ROLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE INDEX" ACTIVE BEFORE CREATE INDEX POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE INDEX" ACTIVE AFTER CREATE INDEX POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER INDEX" ACTIVE BEFORE ALTER INDEX POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER INDEX" ACTIVE AFTER ALTER INDEX POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP INDEX" ACTIVE BEFORE Drop INDEX POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP INDEX" ACTIVE AFTER Drop INDEX POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE SEQUENCE" ACTIVE BEFORE CREATE SEQUENCE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE SEQUENCE" ACTIVE AFTER CREATE SEQUENCE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER SEQUENCE" ACTIVE BEFORE ALTER SEQUENCE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER SEQUENCE" ACTIVE AFTER ALTER SEQUENCE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP SEQUENCE" ACTIVE BEFORE Drop SEQUENCE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP SEQUENCE" ACTIVE AFTER Drop SEQUENCE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE USER" ACTIVE BEFORE CREATE USER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE USER" ACTIVE AFTER CREATE USER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER USER" ACTIVE BEFORE ALTER USER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER USER" ACTIVE AFTER ALTER USER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP USER" ACTIVE BEFORE Drop USER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP USER" ACTIVE AFTER Drop USER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE COLLATION" ACTIVE BEFORE CREATE COLLATION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE COLLATION" ACTIVE AFTER CREATE COLLATION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP COLLATION" ACTIVE BEFORE Drop COLLATION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP COLLATION" ACTIVE AFTER Drop COLLATION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER CHARACTER SET" ACTIVE BEFORE ALTER CHARACTER SET POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER CHARACTER SET" ACTIVE AFTER ALTER CHARACTER SET POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE PACKAGE" ACTIVE BEFORE CREATE PACKAGE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE PACKAGE" ACTIVE AFTER CREATE PACKAGE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER PACKAGE" ACTIVE BEFORE ALTER PACKAGE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER PACKAGE" ACTIVE AFTER ALTER PACKAGE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP PACKAGE" ACTIVE BEFORE Drop PACKAGE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP PACKAGE" ACTIVE AFTER Drop PACKAGE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE PACKAGE BODY" ACTIVE BEFORE CREATE PACKAGE BODY POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE PACKAGE BODY" ACTIVE AFTER CREATE PACKAGE BODY POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP PACKAGE BODY" ACTIVE BEFORE Drop PACKAGE BODY POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP PACKAGE BODY" ACTIVE AFTER Drop PACKAGE BODY POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ANY DDL STATEMENT" ACTIVE BEFORE ANY DDL STATEMENT POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ANY DDL STATEMENT" ACTIVE AFTER ANY DDL STATEMENT POSITION 0 AS BEGIN END ^ CREATE TRIGGER SET_CUST_NO FOR CUSTOMER ACTIVE BEFORE INSERT POSITION 0 AS BEGIN if (new.cust_no is null) then new.cust_no = gen_id(cust_no_gen, 1); END ^ CREATE TRIGGER SET_EMP_NO FOR EMPLOYEE ACTIVE BEFORE INSERT POSITION 0 AS BEGIN if (new.emp_no is null) then new.emp_no = gen_id(emp_no_gen, 1); END ^ CREATE TRIGGER SAVE_SALARY_CHANGE FOR EMPLOYEE ACTIVE AFTER UPDATE POSITION 0 AS BEGIN IF (old.salary <> new.salary) THEN INSERT INTO salary_history (emp_no, change_date, updater_id, old_salary, percent_change) VALUES ( old.emp_no, 'NOW', user, old.salary, (new.salary - old.salary) * 100 / old.salary); END ^ CREATE TRIGGER POST_NEW_ORDER FOR SALES ACTIVE AFTER INSERT POSITION 0 AS BEGIN POST_EVENT 'new_order'; END ^ COMMIT WORK^ SET TERM ;^ COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Package Definitions */ CREATE PACKAGE BODY FB$OUT AS begin procedure enable as begin rdb$set_context('USER_SESSION', 'fb$out.enabled', '1'); end procedure disable as begin rdb$set_context('USER_SESSION', 'fb$out.enabled', null); end procedure put_line (line fb$out_type) as begin if (rdb$get_context('USER_SESSION', 'fb$out.enabled') = '1') then begin in autonomous transaction do begin insert into fb$out_table (line_num, content) values (next value for fb$out_seq, :line); end end end procedure clear as begin in autonomous transaction do delete from fb$out_table; end procedure get_lines returns (lines fb$out_type) as declare line fb$out_type; begin lines = ''; in autonomous transaction do begin for select content from fb$out_table order by line_num into line do begin if (octet_length(lines) > 0) then lines = lines || ascii_char(13) || ascii_char(10); lines = lines || :line; end end execute procedure clear; end end ^ CREATE PACKAGE BODY SELECT$TEST AS Begin Procedure ShowItems(IPARAM Integer) RETURNS (OutParam integer) As Begin SUSPEND; End End ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Stored procedure Bodies */ ALTER PROCEDURE SHOW_LANGS ( CODE VARCHAR(5) CHARACTER SET NONE, GRADE SMALLINT, CTY VARCHAR(15) CHARACTER SET NONE ) RETURNS ( LANGUAGES VARCHAR(15) CHARACTER SET NONE ) AS DECLARE VARIABLE i INTEGER; BEGIN i = 1; WHILE (i <= 5) DO BEGIN SELECT language_req[:i] FROM joB WHERE ((job_code = :code) AND (job_grade = :grade) AND (job_country = :cty) AND (language_req IS NOT NULL)) INTO :languages; IF (languages = ' ') THEN /* Prints 'NULL' instead of blanks */ languages = 'NULL'; i = i +1; SUSPEND; END END ^ ALTER PROCEDURE ADD_EMP_PROJ ( EMP_NO SMALLINT, PROJ_ID CHAR(5) CHARACTER SET NONE ) AS BEGIN BEGIN INSERT INTO employee_project (emp_no, proj_id) VALUES (:emp_no, :proj_id); WHEN SQLCODE -530 DO EXCEPTION unknown_emp_id; END END ^ ALTER PROCEDURE ALL_LANGS RETURNS ( CODE VARCHAR(5) CHARACTER SET NONE, GRADE VARCHAR(5) CHARACTER SET NONE, COUNTRY VARCHAR(15) CHARACTER SET NONE, LANG VARCHAR(15) CHARACTER SET NONE ) AS BEGIN FOR SELECT job_code, job_grade, job_country FROM job INTO :code, :grade, :country DO BEGIN FOR SELECT languages FROM show_langs (:code, :grade, :country) INTO :lang DO SUSPEND; /* Put nice separators between rows */ code = '====='; grade = '====='; country = '==============='; lang = '=============='; SUSPEND; END END ^ ALTER PROCEDURE DELETE_EMPLOYEE ( EMP_NUM INTEGER ) AS DECLARE VARIABLE any_sales INTEGER; BEGIN any_sales = 0; /* * If there are any sales records referencing this employee, * cannot delete the employee until the sales are re-assigned * to another employee or changed to NULL. */ SELECT count(po_number) FROM sales WHERE sales_rep = :emp_num INTO :any_sales; IF (any_sales > 0) THEN BEGIN EXCEPTION reassign_sales; END /* * If the employee is a manager, update the department. */ UPDATE department SET mngr_no = NULL WHERE mngr_no = :emp_num; /* * If the employee is a project leader, update project. */ UPDATE project SET team_leader = NULL WHERE team_leader = :emp_num; /* * Delete the employee from any projects. */ DELETE FROM employee_project WHERE emp_no = :emp_num; /* * Delete old salary records. */ DELETE FROM salary_history WHERE emp_no = :emp_num; /* * Delete the employee. */ DELETE FROM employee WHERE emp_no = :emp_num; END ^ ALTER PROCEDURE DEPT_BUDGET ( DNO CHAR(3) CHARACTER SET NONE ) RETURNS ( TOT DECIMAL(12,2) ) AS DECLARE VARIABLE sumb DECIMAL(12,2); DECLARE VARIABLE rdno CHAR(3); DECLARE VARIABLE cnt INTEGER; BEGIN tot = 0; SELECT budget FROM department WHERE dept_no = :dno INTO :tot; SELECT count(budget) FROM department WHERE head_dept = :dno INTO :cnt; IF (cnt = 0) THEN SUSPEND; FOR SELECT dept_no FROM department WHERE head_dept = :dno INTO :rdno DO BEGIN EXECUTE PROCEDURE dept_budget :rdno RETURNING_VALUES :sumb; tot = tot + sumb; END SUSPEND; END ^ ALTER PROCEDURE EMPLOYEE_PAY_STATUS ( EMP_NUM SMALLINT ) RETURNS ( PAY_STATUS VARCHAR(6) CHARACTER SET NONE, SALARY NUMERIC(10,2) ) AS Declare aCursor CURSOR FOR ( Select EMP_NO,SALARY From EMPLOYEE WHERE LAST_NAME = 'unknown'); BEGIN Select SALARY, Case When SALARY > 10000 and SALARY <= 100000 then 'higher' When SALARY > 100000 then 'gross' else 'lower' End From employee WHERE emp_no = :EMP_NUM into :SALARY, :PAY_STATUS; END ^ ALTER PROCEDURE GET_EMP_PROJ ( EMP_NO SMALLINT ) RETURNS ( PROJ_ID CHAR(5) CHARACTER SET NONE ) AS BEGIN FOR SELECT proj_id FROM employee_project WHERE emp_no = :emp_no INTO :proj_id DO SUSPEND; END ^ ALTER PROCEDURE "Has Space" ( ARG1 INTEGER ) AS Begin End ^ ALTER PROCEDURE MAIL_LABEL ( CUST_NO INTEGER ) RETURNS ( LINE1 CHAR(40) CHARACTER SET NONE, LINE2 CHAR(40) CHARACTER SET NONE, LINE3 CHAR(40) CHARACTER SET NONE, LINE4 CHAR(40) CHARACTER SET NONE, LINE5 CHAR(40) CHARACTER SET NONE, LINE6 CHAR(40) CHARACTER SET NONE ) AS DECLARE VARIABLE customer VARCHAR(25); DECLARE VARIABLE first_name VARCHAR(15); DECLARE VARIABLE last_name VARCHAR(20); DECLARE VARIABLE addr1 VARCHAR(30); DECLARE VARIABLE addr2 VARCHAR(30); DECLARE VARIABLE city VARCHAR(25); DECLARE VARIABLE state VARCHAR(15); DECLARE VARIABLE country VARCHAR(15); DECLARE VARIABLE postcode VARCHAR(12); DECLARE VARIABLE cnt INTEGER; BEGIN line1 = ''; line2 = ''; line3 = ''; line4 = ''; line5 = ''; line6 = ''; SELECT customer, contact_first, contact_last, address_line1, address_line2, city, state_province, country, postal_code FROM CUSTOMER WHERE cust_no = :cust_no INTO :customer, :first_name, :last_name, :addr1, :addr2, :city, :state, :country, :postcode; IF (customer IS NOT NULL) THEN line1 = customer; IF (first_name IS NOT NULL) THEN line2 = first_name || ' ' || last_name; ELSE line2 = last_name; IF (addr1 IS NOT NULL) THEN line3 = addr1; IF (addr2 IS NOT NULL) THEN line4 = addr2; IF (country = 'USA') THEN BEGIN IF (city IS NOT NULL) THEN line5 = city || ', ' || state || ' ' || postcode; ELSE line5 = state || ' ' || postcode; END ELSE BEGIN IF (city IS NOT NULL) THEN line5 = city || ', ' || state; ELSE line5 = state; line6 = country || ' ' || postcode; END SUSPEND; END ^ ALTER PROCEDURE ORG_CHART RETURNS ( HEAD_DEPT CHAR(25) CHARACTER SET NONE, DEPARTMENT CHAR(25) CHARACTER SET NONE, MNGR_NAME CHAR(20) CHARACTER SET NONE, TITLE CHAR(5) CHARACTER SET NONE, EMP_CNT INTEGER ) AS DECLARE VARIABLE mngr_no INTEGER; DECLARE VARIABLE dno CHAR(3); BEGIN FOR SELECT h.department, d.department, d.mngr_no, d.dept_no FROM department d LEFT OUTER JOIN department h ON d.head_dept = h.dept_no ORDER BY d.dept_no INTO :head_dept, :department, :mngr_no, :dno DO BEGIN IF (:mngr_no IS NULL) THEN BEGIN mngr_name = '--TBH--'; title = ''; END ELSE SELECT full_name, job_code FROM employee WHERE emp_no = :mngr_no INTO :mngr_name, :title; SELECT COUNT(emp_no) FROM employee WHERE dept_no = :dno INTO :emp_cnt; SUSPEND; END END ^ ALTER PROCEDURE SHIP_ORDER ( PO_NUM CHAR(8) CHARACTER SET NONE ) AS DECLARE VARIABLE ord_stat CHAR(7); DECLARE VARIABLE hold_stat CHAR(1); DECLARE VARIABLE cust_no INTEGER; DECLARE VARIABLE any_po CHAR(8); BEGIN SELECT s.order_status, c.on_hold, c.cust_no FROM sales s, customer c WHERE po_number = :po_num AND s.cust_no = c.cust_no INTO :ord_stat, :hold_stat, :cust_no; /* This purchase order has been already shipped. */ IF (ord_stat = 'shipped') THEN BEGIN EXCEPTION order_already_shipped; END /* Customer is on hold. */ ELSE IF (hold_stat = '*') THEN BEGIN EXCEPTION customer_on_hold; END /* * If there is an unpaid balance on orders shipped over 2 months ago, * put the customer on hold. */ FOR SELECT po_number FROM sales WHERE cust_no = :cust_no AND order_status = 'shipped' AND paid = 'n' AND ship_date < CAST('NOW' AS TIMESTAMP) - 60 INTO :any_po DO BEGIN EXCEPTION customer_check; UPDATE customer SET on_hold = '*' WHERE cust_no = :cust_no; END /* * Ship the order. */ UPDATE sales SET order_status = 'shipped', ship_date = 'NOW' WHERE po_number = :po_num; END ^ ALTER PROCEDURE SUB_TOT_BUDGET ( HEAD_DEPT CHAR(3) CHARACTER SET NONE ) RETURNS ( TOT_BUDGET DECIMAL(12,2), AVG_BUDGET DECIMAL(12,2), MIN_BUDGET DECIMAL(12,2), MAX_BUDGET DECIMAL(12,2) ) AS BEGIN SELECT SUM(budget), AVG(budget), MIN(budget), MAX(budget) FROM department WHERE head_dept = :head_dept INTO :tot_budget, :avg_budget, :min_budget, :max_budget; SUSPEND; END ^ ALTER PROCEDURE "UC SPACE" ( ARG1 INTEGER ) AS Begin End ^ ALTER PROCEDURE "iCASE" AS Begin End ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Stored Function Body */ ALTER FUNCTION F (X INTEGER) RETURNS INTEGER AS BEGIN RETURN X+1; END ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; /* Comments on System Objects */ /* Grant Roles for this database */ /* Role: TESTROLE, Owner: SYSDBA */ CREATE ROLE TESTROLE SET SYSTEM PRIVILEGES TO CREATE_DATABASE; /* Grant permissions for this database */ GRANT REFERENCES ON TABLE COUNTRIES TO USER BOB ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE COUNTRY TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE CUSTOMER TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE DEPARTMENT TO USER PUBLIC WITH GRANT OPTION ; GRANT SELECT ON TABLE EMPLOYEE TO USER ALICE WITH GRANT OPTION GRANTED BY BOB ; GRANT SELECT,Update(LAST_NAME,FIRST_NAME) ON TABLE EMPLOYEE TO USER BOB ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE EMPLOYEE TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE EMPLOYEE_PROJECT TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE FB$OUT_TABLE TO PACKAGE FB$OUT ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE JOB TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE PHONE_LIST TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE PROJECT TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE PROJ_DEPT_BUDGET TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE SALARY_HISTORY TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE SALES TO USER PUBLIC WITH GRANT OPTION ; GRANT RDB$ADMIN TO ALICE; GRANT RDB$ADMIN TO BOB; GRANT EXECUTE ON PROCEDURE ADD_EMP_PROJ TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE ALL_LANGS TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE DELETE_EMPLOYEE TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE DEPT_BUDGET TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE GET_EMP_PROJ TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE MAIL_LABEL TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE ORG_CHART TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE SHIP_ORDER TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE SHOW_LANGS TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE SUB_TOT_BUDGET TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PACKAGE FB$OUT TO USER PUBLIC ; GRANT CREATE TABLE TO USER BOB ; GRANT CREATE COLLATION TO USER BOB ; GRANT CREATE CHARACTER SET TO USER ALICE ; GRANT CREATE COLLATION TO USER ALICE ; GRANT CREATE DOMAIN TO USER ALICE ; GRANT CREATE EXCEPTION TO USER ALICE ; GRANT CREATE FILTER TO USER ALICE ; GRANT CREATE FUNCTION TO USER ALICE ; GRANT CREATE GENERATOR TO USER ALICE ; GRANT CREATE PACKAGE TO USER ALICE ; GRANT CREATE PROCEDURE TO USER ALICE ; GRANT CREATE ROLE TO USER ALICE ; GRANT CREATE TABLE TO USER ALICE ; GRANT CREATE VIEW TO USER ALICE ; GRANT DROP ANY TABLE TO USER ALICE ; GRANT ALTER ANY VIEW TO USER ALICE ; GRANT DROP ANY GENERATOR TO USER ALICE ; SET SQL DIALECT 3; SET AUTODDL ON; /* CREATE DATABASE 'inet://localhost//tmp/ibx-testsuite/testsuite1.fdb' PAGE_SIZE 8192 DEFAULT CHARACTER SET NONE; */ COMMENT ON DATABASE IS 'Employee Test DB'; /* Domain definitions */ CREATE DOMAIN ADDRESSLINE AS VARCHAR(30); CREATE DOMAIN BUDGET AS DECIMAL(12,2) DEFAULT 50000; CREATE DOMAIN COUNTRYNAME AS VARCHAR(15); CREATE DOMAIN CUSTNO AS INTEGER; CREATE DOMAIN DEPTNO AS CHAR(3); CREATE DOMAIN EMPNO AS SMALLINT; CREATE DOMAIN FB$OUT_TYPE AS BLOB SUB_TYPE TEXT SEGMENT SIZE 80 NOT NULL; CREATE DOMAIN FIRSTNAME AS VARCHAR(15); CREATE DOMAIN JOBCODE AS VARCHAR(5); CREATE DOMAIN JOBGRADE AS SMALLINT; CREATE DOMAIN LASTNAME AS VARCHAR(20); CREATE DOMAIN PHONENUMBER AS VARCHAR(20); CREATE DOMAIN PONUMBER AS CHAR(8); CREATE DOMAIN PRODTYPE AS VARCHAR(12) DEFAULT 'software' NOT NULL; CREATE DOMAIN PROJNO AS CHAR(5); CREATE DOMAIN SALARY AS NUMERIC(10,2) DEFAULT 0; /* Table: COUNTRIES, Owner: SYSDBA */ CREATE TABLE COUNTRIES ( COUNTRY VARCHAR(64) NOT NULL, NONEU SMALLINT, ISO2 CHAR(2), ISO3 CHAR(3), PRIMARY KEY (COUNTRY) ); COMMENT ON TABLE COUNTRIES IS 'List of Countries'; COMMENT ON COLUMN COUNTRIES.ISO2 IS 'Two Character ISO Country Code'; /* Table: COUNTRY, Owner: SYSDBA */ CREATE TABLE COUNTRY ( COUNTRY COUNTRYNAME NOT NULL, CURRENCY VARCHAR(10) NOT NULL, PRIMARY KEY (COUNTRY) ); /* Table: CUSTOMER, Owner: SYSDBA */ CREATE TABLE CUSTOMER ( CUST_NO CUSTNO NOT NULL, CUSTOMER VARCHAR(25) NOT NULL, CONTACT_FIRST FIRSTNAME, CONTACT_LAST LASTNAME, PHONE_NO PHONENUMBER, ADDRESS_LINE1 ADDRESSLINE, ADDRESS_LINE2 ADDRESSLINE, CITY VARCHAR(25), STATE_PROVINCE VARCHAR(15), COUNTRY COUNTRYNAME, POSTAL_CODE VARCHAR(12), ON_HOLD CHAR(1) DEFAULT NULL, LONG_REFERENCE BIGINT, PRIMARY KEY (CUST_NO) ); /* Table: DEPARTMENT, Owner: SYSDBA */ CREATE TABLE DEPARTMENT ( DEPT_NO DEPTNO NOT NULL, DEPARTMENT VARCHAR(25) NOT NULL, HEAD_DEPT DEPTNO, MNGR_NO EMPNO, BUDGET BUDGET, LOCATION VARCHAR(15), PHONE_NO PHONENUMBER DEFAULT '555-1234', UNIQUE (DEPARTMENT), PRIMARY KEY (DEPT_NO) ); /* Table: EMPLOYEE, Owner: SYSDBA */ CREATE TABLE EMPLOYEE ( EMP_NO EMPNO NOT NULL, FIRST_NAME FIRSTNAME NOT NULL, LAST_NAME LASTNAME NOT NULL, PHONE_EXT VARCHAR(4), HIRE_DATE TIMESTAMP DEFAULT 'NOW' NOT NULL, DEPT_NO DEPTNO NOT NULL, JOB_CODE JOBCODE NOT NULL, JOB_GRADE JOBGRADE NOT NULL, JOB_COUNTRY COUNTRYNAME NOT NULL, SALARY SALARY NOT NULL, FULL_NAME COMPUTED BY (last_name || ', ' || first_name), PRIMARY KEY (EMP_NO) ); /* Table: EMPLOYEE_PROJECT, Owner: SYSDBA */ CREATE TABLE EMPLOYEE_PROJECT ( EMP_NO EMPNO NOT NULL, PROJ_ID PROJNO NOT NULL, PRIMARY KEY (EMP_NO, PROJ_ID) ); /* Table: FB$OUT_TABLE, Owner: SYSDBA */ CREATE GLOBAL TEMPORARY TABLE FB$OUT_TABLE ( LINE_NUM INTEGER, CONTENT FB$OUT_TYPE ) ON COMMIT PRESERVE ROWS ; /* Table: ITEST, Owner: SYSDBA */ CREATE TABLE ITEST ( "KEY" INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 0 INCREMENT BY 1) NOT NULL, SOMETEXT VARCHAR(64), PRIMARY KEY ("KEY") ); /* Table: ITEST2, Owner: SYSDBA */ CREATE TABLE ITEST2 ( "KEY" INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 0 INCREMENT BY 1) NOT NULL, SOMETEXT VARCHAR(64), PRIMARY KEY ("KEY") ); /* Table: JOB, Owner: SYSDBA */ CREATE TABLE JOB ( JOB_CODE JOBCODE NOT NULL, JOB_GRADE JOBGRADE NOT NULL, JOB_COUNTRY COUNTRYNAME NOT NULL, JOB_TITLE VARCHAR(25) NOT NULL, MIN_SALARY SALARY NOT NULL, MAX_SALARY SALARY NOT NULL, JOB_REQUIREMENT BLOB SUB_TYPE TEXT SEGMENT SIZE 400, LANGUAGE_REQ VARCHAR(15)[1:5], PRIMARY KEY (JOB_CODE, JOB_GRADE, JOB_COUNTRY) ); /* Table: PROJECT, Owner: SYSDBA */ CREATE TABLE PROJECT ( PROJ_ID PROJNO NOT NULL, PROJ_NAME VARCHAR(20) NOT NULL, PROJ_DESC BLOB SUB_TYPE TEXT SEGMENT SIZE 800, TEAM_LEADER EMPNO, PRODUCT PRODTYPE, UNIQUE (PROJ_NAME), PRIMARY KEY (PROJ_ID) ); /* Table: PROJ_DEPT_BUDGET, Owner: SYSDBA */ CREATE TABLE PROJ_DEPT_BUDGET ( FISCAL_YEAR INTEGER NOT NULL, PROJ_ID PROJNO NOT NULL, DEPT_NO DEPTNO NOT NULL, QUART_HEAD_CNT INTEGER[1:4], PROJECTED_BUDGET BUDGET, PRIMARY KEY (FISCAL_YEAR, PROJ_ID, DEPT_NO) ); /* Table: SALARY_HISTORY, Owner: SYSDBA */ CREATE TABLE SALARY_HISTORY ( EMP_NO EMPNO NOT NULL, CHANGE_DATE TIMESTAMP DEFAULT 'NOW' NOT NULL, UPDATER_ID VARCHAR(20) NOT NULL, OLD_SALARY SALARY NOT NULL, PERCENT_CHANGE DOUBLE PRECISION DEFAULT 0 NOT NULL, NEW_SALARY COMPUTED BY (old_salary + old_salary * percent_change / 100), PRIMARY KEY (EMP_NO, CHANGE_DATE, UPDATER_ID) ); /* Table: SALES, Owner: SYSDBA */ CREATE TABLE SALES ( PO_NUMBER PONUMBER NOT NULL, CUST_NO CUSTNO NOT NULL, SALES_REP EMPNO, ORDER_STATUS VARCHAR(7) DEFAULT 'new' NOT NULL, ORDER_DATE TIMESTAMP DEFAULT 'NOW' NOT NULL, SHIP_DATE TIMESTAMP, DATE_NEEDED TIMESTAMP, PAID CHAR(1) DEFAULT 'n', QTY_ORDERED INTEGER DEFAULT 1 NOT NULL, TOTAL_VALUE DECIMAL(9,2) NOT NULL, DISCOUNT FLOAT DEFAULT 0 NOT NULL, ITEM_TYPE PRODTYPE, AGED COMPUTED BY (ship_date - order_date), PRIMARY KEY (PO_NUMBER) ); /* External Function declarations */ DECLARE EXTERNAL FUNCTION ADDDAY TIMESTAMP, INTEGER RETURNS TIMESTAMP ENTRY_POINT 'addDay' MODULE_NAME 'fbudf' ; DECLARE EXTERNAL FUNCTION I64TRUNCATE NUMERIC(18,0) BY DESCRIPTOR, NUMERIC(18,0) BY DESCRIPTOR RETURNS PARAMETER 2 ENTRY_POINT 'fbtruncate' MODULE_NAME 'fbudf' ; DECLARE EXTERNAL FUNCTION TESTIT TIMESTAMP, INTEGER NULL, CSTRING(10) CHARACTER SET NONE, CSTRING(10) CHARACTER SET NONE BY DESCRIPTOR RETURNS CSTRING(32) CHARACTER SET NONE FREE_IT ENTRY_POINT 'testit' MODULE_NAME 'fbudf' ; /* Data Starts */ /* Inserting data into Table: COUNTRY */ INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('USA','Dollar'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('England','Pound'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Canada','CdnDlr'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Switzerland','SFranc'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Japan','Yen'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Italy','Euro'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('France','Euro'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Germany','Euro'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Australia','ADollar'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Hong Kong','HKDollar'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Netherlands','Euro'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Belgium','Euro'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Austria','Euro'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Fiji','FDollar'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Russia','Ruble'); INSERT INTO COUNTRY (COUNTRY,CURRENCY) VALUES('Romania','RLeu'); COMMIT; /* Inserting data into Table: CUSTOMER */ INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1001,'Signature Design','Dale J.','Little','(619) 530-2710','15500 Pacific Heights Blvd.',NULL,'San Diego','CA','USA','92121',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1002,'Dallas Technologies','Glen','Brown','(214) 960-2233','P. O. Box 47000',NULL,'Dallas','TX','USA','75205','*',NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1003,'Buttle, Griffith and Co.','James','Buttle','(617) 488-1864','2300 Newbury Street','Suite 101','Boston','MA','USA','02115',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1004,'Central Bank','Elizabeth','Brocket','61 211 99 88','66 Lloyd Street',NULL,'Manchester',NULL,'England','M2 3LA',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1005,'DT Systems, LTD.','Tai','Wu','(852) 850 43 98','400 Connaught Road',NULL,'Central Hong Kong',NULL,'Hong Kong',NULL,NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1006,'DataServe International','Tomas','Bright','(613) 229 3323','2000 Carling Avenue','Suite 150','Ottawa','ON','Canada','K1V 9G1',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1007,'Mrs. Beauvais',NULL,'Mrs. Beauvais',NULL,'P.O. Box 22743',NULL,'Pebble Beach','CA','USA','93953',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1008,'Anini Vacation Rentals','Leilani','Briggs','(808) 835-7605','3320 Lawai Road',NULL,'Lihue','HI','USA','96766',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1009,'Max','Max',NULL,'22 01 23','1 Emerald Cove',NULL,'Turtle Island',NULL,'Fiji',NULL,'*',NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1010,'MPM Corporation','Miwako','Miyamoto','3 880 77 19','2-64-7 Sasazuka',NULL,'Tokyo',NULL,'Japan','150',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1011,'Dynamic Intelligence Corp','Victor','Granges','01 221 16 50','Florhofgasse 10',NULL,'Zurich',NULL,'Switzerland','8005',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1012,'3D-Pad Corp.','Michelle','Roche','1 43 60 61','22 Place de la Concorde',NULL,'Paris',NULL,'France','75008',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1013,'Lorenzi Export, Ltd.','Andreas','Lorenzi','02 404 6284','Via Eugenia, 15',NULL,'Milan',NULL,'Italy','20124',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1014,'Dyno Consulting','Greta','Hessels','02 500 5940','Rue Royale 350',NULL,'Brussels',NULL,'Belgium','1210',NULL,NULL); INSERT INTO CUSTOMER (CUST_NO,CUSTOMER,CONTACT_FIRST,CONTACT_LAST,PHONE_NO,ADDRESS_LINE1,ADDRESS_LINE2,CITY,STATE_PROVINCE,COUNTRY,POSTAL_CODE,ON_HOLD,LONG_REFERENCE) VALUES(1015,'GeoTech Inc.','K.M.','Neppelenbroek','(070) 44 91 18','P.0.Box 702',NULL,'Den Haag',NULL,'Netherlands','2514',NULL,NULL); COMMIT; /* Inserting data into Table: DEPARTMENT */ INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('000','Corporate Headquarters',NULL,105,1000000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('100','Sales and Marketing','000',85,2000000,'San Francisco','(415) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('600','Engineering','000',2,1100000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('900','Finance','000',46,400000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('180','Marketing','100',NULL,1500000,'San Francisco','(415) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('620','Software Products Div.','600',NULL,1200000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('621','Software Development','620',NULL,400000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('622','Quality Assurance','620',9,300000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('623','Customer Support','620',15,650000,'Monterey','(408) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('670','Consumer Electronics Div.','600',107,1150000,'Burlington, VT','(802) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('671','Research and Development','670',20,460000,'Burlington, VT','(802) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('672','Customer Services','670',94,850000,'Burlington, VT','(802) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('130','Field Office: East Coast','100',11,500000,'Boston','(617) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('140','Field Office: Canada','100',72,500000,'Toronto','(416) 677-1000'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('110','Pacific Rim Headquarters','100',34,600000,'Kuaui','(808) 555-1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('115','Field Office: Japan','110',118,500000,'Tokyo','3 5350 0901'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('116','Field Office: Singapore','110',NULL,300000,'Singapore','3 55 1234'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('120','European Headquarters','100',36,700000,'London','71 235-4400'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('121','Field Office: Switzerland','120',141,500000,'Zurich','1 211 7767'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('123','Field Office: France','120',134,400000,'Cannes','58 68 11 12'); INSERT INTO DEPARTMENT (DEPT_NO,DEPARTMENT,HEAD_DEPT,MNGR_NO,BUDGET,LOCATION,PHONE_NO) VALUES('125','Field Office: Italy','120',121,400000,'Milan','2 430 39 39'); COMMIT; /* Inserting data into Table: EMPLOYEE */ INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(2,'Robert','Nelson','250','1988.12.28 00:00:00.000','600','VP',2,'USA',105900); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(4,'Bruce','Young','233','1988.12.28 00:00:00.000','621','Eng',2,'USA',97500); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(5,'Kim','Lambert','22','1989.02.06 00:00:00.000','130','Eng',2,'USA',102750); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(8,'Leslie','Johnson','410','1989.04.05 00:00:00.000','180','Mktg',3,'USA',64635); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(9,'Phil','Forest','229','1989.04.17 00:00:00.000','622','Mngr',3,'USA',75060); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(11,'K. J.','Weston','34','1990.01.17 00:00:00.000','130','SRep',4,'USA',86292.94); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(12,'Terri','Lee','256','1990.05.01 00:00:00.000','000','Admin',4,'USA',53793); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(14,'Stewart','Hall','227','1990.06.04 00:00:00.000','900','Finan',3,'USA',69482.63); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(15,'Katherine','Young','231','1990.06.14 00:00:00.000','623','Mngr',3,'USA',67241.25); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(20,'Chris','Papadopoulos','887','1990.01.01 00:00:00.000','671','Mngr',3,'USA',89655); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(24,'Pete','Fisher','888','1990.09.12 00:00:00.000','671','Eng',3,'USA',81810.19); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(28,'Ann','Bennet','5','1991.02.01 00:00:00.000','120','Admin',5,'England',22935); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(29,'Roger','De Souza','288','1991.02.18 00:00:00.000','623','Eng',3,'USA',69482.63); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(34,'Janet','Baldwin','2','1991.03.21 00:00:00.000','110','Sales',3,'USA',61637.8); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(36,'Roger','Reeves','6','1991.04.25 00:00:00.000','120','Sales',3,'England',33620.63); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(37,'Willie','Stansbury','7','1991.04.25 00:00:00.000','120','Eng',4,'England',39224.06); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(44,'Leslie','Phong','216','1991.06.03 00:00:00.000','623','Eng',4,'USA',56034.38); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(45,'Ashok','Ramanathan','209','1991.08.01 00:00:00.000','621','Eng',3,'USA',80689.5); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(46,'Walter','Steadman','210','1991.08.09 00:00:00.000','900','CFO',1,'USA',116100); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(52,'Carol','Nordstrom','420','1991.10.02 00:00:00.000','180','PRel',4,'USA',42742.5); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(61,'Luke','Leung','3','1992.02.18 00:00:00.000','110','SRep',4,'USA',68805); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(65,'Sue Anne','O''Brien','877','1992.03.23 00:00:00.000','670','Admin',5,'USA',31275); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(71,'Jennifer M.','Burbank','289','1992.04.15 00:00:00.000','622','Eng',3,'USA',53167.5); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(72,'Claudia','Sutherland',NULL,'1992.04.20 00:00:00.000','140','SRep',4,'Canada',100914); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(83,'Dana','Bishop','290','1992.06.02 00:00:00.000','621','Eng',3,'USA',62550.02); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(85,'Mary S.','MacDonald','477','1992.06.01 00:00:00.000','100','VP',2,'USA',111262.5); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(94,'Randy','Williams','892','1992.08.08 00:00:00.000','672','Mngr',4,'USA',56295); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(105,'Oliver H A','Bender','255','1992.10.08 00:00:00.000','000','CEO',1,'USA',212850); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(107,'Kevin','Cook','894','1993.02.01 00:00:00.000','670','Dir',2,'USA',111262.5); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(109,'Kelly','Brown','202','1993.02.04 00:00:00.000','600','Admin',5,'USA',27000.01); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(110,'Yuki','Ichida','22','1993.02.04 00:00:00.000','115','Eng',3,'Japan',6000000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(113,'Mary','Page','845','1993.04.12 00:00:00.000','671','Eng',4,'USA',48000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(114,'Bill','Parker','247','1993.06.01 00:00:00.000','623','Eng',5,'USA',35000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(118,'Takashi','Yamamoto','23','1993.07.01 00:00:00.000','115','SRep',4,'Japan',7480000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(121,'Roberto','Ferrari','1','1993.07.12 00:00:00.000','125','SRep',4,'USA',33000.01); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(127,'Michael','Yanowski','492','1993.08.09 00:00:00.000','100','SRep',4,'USA',44000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(134,'Jacques','Glon',NULL,'1993.08.23 00:00:00.000','123','SRep',4,'France',38500); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(136,'Scott','Johnson','265','1993.09.13 00:00:00.000','623','Doc',3,'USA',60000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(138,'T.J.','Green','218','1993.11.01 00:00:00.000','621','Eng',4,'USA',36000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(141,'Pierre','Osborne',NULL,'1994.01.03 00:00:00.000','121','SRep',4,'Switzerland',110000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(144,'John','Montgomery','820','1994.03.30 00:00:00.000','672','Eng',5,'USA',35000); INSERT INTO EMPLOYEE (EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,HIRE_DATE,DEPT_NO,JOB_CODE,JOB_GRADE,JOB_COUNTRY,SALARY) VALUES(145,'Mark','Guckenheimer','221','1994.05.02 00:00:00.000','622','Eng',5,'USA',32000); COMMIT; /* Inserting data into Table: EMPLOYEE_PROJECT */ INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(144,'DGPII'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(113,'DGPII'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(24,'DGPII'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(8,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(136,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(15,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(71,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(145,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(44,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(4,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(83,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(138,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(45,'VBASE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(20,'GUIDE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(24,'GUIDE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(113,'GUIDE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(8,'GUIDE'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(4,'MAPDB'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(71,'MAPDB'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(46,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(105,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(12,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(85,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(110,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(34,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(8,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(14,'MKTPR'); INSERT INTO EMPLOYEE_PROJECT (EMP_NO,PROJ_ID) VALUES(52,'MKTPR'); COMMIT; /* Inserting data into Table: ITEST */ INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(1,'Testing'); INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(3,'Another'); INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(4,'Test'); INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(7,'Test'); INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(8,'Again'); INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(9,'Test'); INSERT INTO ITEST ("KEY",SOMETEXT) VALUES(10,' 2'); COMMIT; /* Inserting data into Table: JOB */ INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('CEO',1,'USA','Chief Executive Officer',130000,250000,'No specific requirements. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('CFO',1,'USA','Chief Financial Officer',85000,140000,'15+ years in finance or 5+ years as a CFO with a proven track record. MBA or J.D. degree. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('VP',2,'USA','Vice President',80000,130000,'No specific requirements. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Dir',2,'USA','Director',75000,120000,'5-10 years as a director in computer or electronics industries. An advanced degree. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Mngr',3,'USA','Manager',60000,100000,'BA/BS required. 3-5 years in management, plus 2-4 years engineering experience. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Mngr',4,'USA','Manager',30000,60000,'5+ years office management experience. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Admin',4,'USA','Administrative Assistant',35000,55000,'3-5 years experience in executive environment. Strong organizational and communication skills required. BA degree preferred. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Admin',5,'USA','Administrative Assistant',20000,40000,'2-4 years clerical experience. Facility with word processing and data entry. AA degree preferred. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Admin',5,'England','Administrative Assistant',13400,26800,NULL,NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('PRel',4,'USA','Public Relations Rep.',25000,65000,NULL,NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Mktg',3,'USA','Marketing Analyst',40000,80000,'MBA required. 10+ years experience in high tech environment. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Mktg',4,'USA','Marketing Analyst',20000,50000,'BA/BS required. MBA preferred. 3-5 years experience. Knowledgeable with spreadsheets and databases. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Accnt',4,'USA','Accountant',28000,55000,'CPA with 3-5 years experience. Spreadsheet, data entry, and word processing knowledge required. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Finan',3,'USA','Financial Analyst',35000,85000,'5-10 years of accounting and financial experience. Strong analytical skills. CPA/MBA required. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Eng',2,'USA','Engineer',70000,110000,'Distinguished engineer. Ph.D/MS/BS or equivalent experience. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Eng',3,'USA','Engineer',50000,90000,'5+ years experience. BA/BS required. MS degree preferred. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Eng',3,'Japan','Engineer',5400000,9720000,'5+ years experience. BA/BS and/or MS degrees required. Customer support experience desired. Knowledge of Japanese and English. ', Japanese Mandarin English ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Eng',4,'USA','Engineer',30000,65000,'BA/BS and 3-5 years experience. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Eng',4,'England','Engineer',20100,43550,'BA/BS and 2-4 years experience in technical support. Knowledge of several European languages helpful. ', English German French ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Eng',5,'USA','Engineer',25000,35000,'BA/BS preferred. 2-4 years technical experience. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Doc',3,'USA','Technical Writer',38000,60000,'4+ years writing highly technical software documentation. A bachelor''s degree or equivalent. Programming experience required. Excellent language skills. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Doc',5,'USA','Technical Writer',22000,40000,'BA in English/journalism or excellent language skills. Some programming experience required. 2-4 years of technical writing. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Sales',3,'USA','Sales Co-ordinator',40000,70000,'Experience in sales and public relations in a high tech environment. Excellent communication skills. BA or equivalent. ',NULL); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('Sales',3,'England','Sales Co-ordinator',26800,46900,'Experience in sales and public relations in a high tech environment. Excellent communication skills. BA or equivalent. Knowledge of several European languages helpful. ', English German French ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'USA','Sales Representative',20000,100000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Some knowledge of Spanish required. Travel required. ', English Spanish ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'England','Sales Representative',13400,67000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Knowledge of several European languages helpful. Travel required. ', English German French ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'Canada','Sales Representative',26400,132000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Travel required. English plus speaking knowledge of French required. ', English French ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'Switzerland','Sales Representative',28000,149000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Knowledge of German required; one or more other European language helpful. Travel required. ', German French English Italian ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'Japan','Sales Representative',2160000,10800000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Knowledge of Japanese required. Travel required. ', Japanese English ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'Italy','Sales Representative',20000,100000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Fluency in Italian; some knowledge of German helpful. Travel required. ', Italian German French ); INSERT INTO JOB (JOB_CODE,JOB_GRADE,JOB_COUNTRY,JOB_TITLE,MIN_SALARY,MAX_SALARY,JOB_REQUIREMENT,LANGUAGE_REQ) VALUES('SRep',4,'France','Sales Representative',20000,100000,'Computer/electronics industry sales experience. Excellent communications, negotiation, and analytical skills. Experience in establishing long term customer relationships. Fluency in French; some knowledge of German/Spanish helpful. Travel required. ', English French Spanish ); COMMIT; /* Inserting data into Table: PROJECT */ INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('VBASE','Video Database','Design a video data base management system for controlling on-demand video distribution. ',45,'software'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('DGPII','DigiPizza','Develop second generation digital pizza maker with flash-bake heating element and digital ingredient measuring system. ',24,'other'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('GUIDE','AutoMap','Develop a prototype for the automobile version of the hand-held map browsing device. ',20,'hardware'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('MAPDB','MapBrowser port','Port the map browsing database software to run on the automobile model. ',4,'software'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('HWRII','Translator upgrade','Integrate the hand-writing recognition module into the universal language translator. ',NULL,'software'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('MKTPR','Marketing project 3','Expand marketing and sales in the Pacific Rim. Set up a field office in Australia and Singapore. ',85,'N/A'); COMMIT; /* Inserting data into Table: PROJ_DEPT_BUDGET */ INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'GUIDE','100', 1 1 1 0 ,200000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'GUIDE','671', 3 2 1 0 ,450000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1993,'MAPDB','621', 0 0 0 1 ,20000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MAPDB','621', 2 1 0 0 ,40000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MAPDB','622', 1 1 0 0 ,60000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MAPDB','671', 1 1 0 0 ,11000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'HWRII','670', 1 1 1 1 ,20000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'HWRII','621', 2 3 2 1 ,400000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'HWRII','622', 1 1 2 2 ,100000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MKTPR','623', 1 1 1 2 ,80000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MKTPR','672', 1 1 1 2 ,100000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MKTPR','100', 4 5 6 6 ,1000000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MKTPR','110', 2 2 0 3 ,200000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'MKTPR','000', 1 1 2 2 ,100000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1995,'MKTPR','623', 7 7 4 4 ,1200000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1995,'MKTPR','672', 2 3 3 3 ,800000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1995,'MKTPR','100', 4 5 6 6 ,2000000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1995,'MKTPR','110', 1 1 1 1 ,1200000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'VBASE','621', 4 5 5 3 ,1900000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1995,'VBASE','621', 4 3 2 2 ,900000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'VBASE','622', 2 2 2 1 ,400000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1994,'VBASE','100', 1 1 2 3 ,300000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1995,'VBASE','100', 3 3 1 1 ,1500000); INSERT INTO PROJ_DEPT_BUDGET (FISCAL_YEAR,PROJ_ID,DEPT_NO,QUART_HEAD_CNT,PROJECTED_BUDGET) VALUES(1996,'VBASE','100', 1 1 0 0 ,150000); COMMIT; /* Inserting data into Table: SALARY_HISTORY */ INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(28,'1992.12.15 00:00:00.000','admin2',20000,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(2,'1992.12.15 00:00:00.000','admin2',98000,8.0612); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(4,'1992.12.15 00:00:00.000','admin2',90000,8.3333); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(5,'1992.12.15 00:00:00.000','admin2',95000,8.1578); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(11,'1992.12.15 00:00:00.000','admin2',70000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(12,'1992.12.15 00:00:00.000','admin2',48000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(14,'1992.12.15 00:00:00.000','admin2',62000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(15,'1992.12.15 00:00:00.000','admin2',60000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(20,'1992.12.15 00:00:00.000','admin2',80000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(24,'1992.12.15 00:00:00.000','admin2',73000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(29,'1992.12.15 00:00:00.000','admin2',62000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(34,'1992.12.15 00:00:00.000','admin2',55000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(36,'1992.12.15 00:00:00.000','admin2',30000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(37,'1992.12.15 00:00:00.000','admin2',35000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(44,'1992.12.15 00:00:00.000','admin2',50000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(45,'1992.12.15 00:00:00.000','admin2',72000,7.5); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(8,'1993.09.08 00:00:00.000','elaine',62000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(9,'1993.09.08 00:00:00.000','elaine',72000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(11,'1993.09.08 00:00:00.000','elaine',75250,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(12,'1993.09.08 00:00:00.000','elaine',51600,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(14,'1993.09.08 00:00:00.000','elaine',66650,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(15,'1993.09.08 00:00:00.000','elaine',64500,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(20,'1993.09.08 00:00:00.000','elaine',86000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(24,'1993.09.08 00:00:00.000','elaine',78475,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(28,'1993.09.08 00:00:00.000','elaine',22000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(29,'1993.09.08 00:00:00.000','elaine',66650,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(34,'1993.09.08 00:00:00.000','elaine',59125,4.2499); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(36,'1993.09.08 00:00:00.000','elaine',32250,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(37,'1993.09.08 00:00:00.000','elaine',37625,4.2499); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(44,'1993.09.08 00:00:00.000','elaine',53750,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(45,'1993.09.08 00:00:00.000','elaine',77400,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(52,'1993.09.08 00:00:00.000','elaine',41000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(61,'1993.09.08 00:00:00.000','elaine',60000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(65,'1993.09.08 00:00:00.000','elaine',30000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(71,'1993.09.08 00:00:00.000','elaine',51000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(72,'1993.09.08 00:00:00.000','elaine',88000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(83,'1993.09.08 00:00:00.000','elaine',60000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(94,'1993.09.08 00:00:00.000','elaine',54000,4.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(46,'1993.12.20 00:00:00.000','tj',120000,-3.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(85,'1993.12.20 00:00:00.000','tj',115000,-3.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(105,'1993.12.20 00:00:00.000','tj',220000,-3.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(107,'1993.12.20 00:00:00.000','tj',115000,-3.25); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(11,'1993.12.20 00:00:00.000','elaine',78448.13,9.9999); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(61,'1993.12.20 00:00:00.000','elaine',62550,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(72,'1993.12.20 00:00:00.000','elaine',91740,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(118,'1993.12.20 00:00:00.000','elaine',6800000,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(121,'1993.12.20 00:00:00.000','elaine',30000,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(127,'1993.12.20 00:00:00.000','elaine',40000,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(134,'1993.12.20 00:00:00.000','elaine',35000,10); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(28,'2017.11.06 16:46:27.145','SYSDBA',22935,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(28,'2017.11.06 16:47:01.376','SYSDBA',22935.01,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(12,'2017.12.29 12:18:48.909','SYSDBA',53793,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(12,'2017.12.29 12:18:58.051','SYSDBA',53793.01,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(83,'2018.01.04 10:57:34.245','SYSDBA',62550,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(121,'2018.03.13 15:29:08.850','SYSDBA',33000,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(109,'2018.03.13 17:12:06.340','SYSDBA',27000,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(34,'2018.03.13 17:13:20.671','SYSDBA',61637.81,0); INSERT INTO SALARY_HISTORY (EMP_NO,CHANGE_DATE,UPDATER_ID,OLD_SALARY,PERCENT_CHANGE) VALUES(83,'2018.03.13 17:13:35.845','SYSDBA',62550.01,0); COMMIT; /* Inserting data into Table: SALES */ INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V91E0210',1004,11,'shipped','1991.03.04 00:00:00.000','1991.03.05 00:00:00.000',NULL,'y',10,5000,0.100000001490116,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V92E0340',1004,11,'shipped','1992.10.15 00:00:00.000','1992.10.16 00:00:00.000','1992.10.17 00:00:00.000','y',7,70000,0,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V92J1003',1010,61,'shipped','1992.07.26 00:00:00.000','1992.08.04 00:00:00.000','1992.09.15 00:00:00.000','y',15,2985,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93J2004',1010,118,'shipped','1993.10.30 00:00:00.000','1993.12.02 00:00:00.000','1993.11.15 00:00:00.000','y',3,210,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93J3100',1010,118,'shipped','1993.08.20 00:00:00.000','1993.08.20 00:00:00.000',NULL,'y',16,18000.4,0.100000001490116,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V92F3004',1012,11,'shipped','1992.10.15 00:00:00.000','1993.01.16 00:00:00.000','1993.01.16 00:00:00.000','y',3,2000,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93F3088',1012,134,'shipped','1993.08.27 00:00:00.000','1993.09.08 00:00:00.000',NULL,'n',10,10000,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93F2030',1012,134,'open','1993.12.12 00:00:00.000',NULL,NULL,'y',15,450000.49,0,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93F2051',1012,134,'waiting','1993.12.18 00:00:00.000',NULL,'1994.03.01 00:00:00.000','n',1,999.98,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93H0030',1005,118,'open','1993.12.12 00:00:00.000',NULL,'1994.01.01 00:00:00.000','y',20,5980,0.200000002980232,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V94H0079',1005,61,'open','1994.02.13 00:00:00.000',NULL,'1994.04.20 00:00:00.000','n',10,9000,0.0500000007450581,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9324200',1001,72,'shipped','1993.08.09 00:00:00.000','1993.08.09 00:00:00.000','1993.08.17 00:00:00.000','y',1000,560000,0.200000002980232,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9324320',1001,127,'shipped','1993.08.16 00:00:00.000','1993.08.16 00:00:00.000','1993.09.01 00:00:00.000','y',1,0,1,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9320630',1001,127,'open','1993.12.12 00:00:00.000',NULL,'1993.12.15 00:00:00.000','n',3,60000,0.200000002980232,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9420099',1001,127,'open','1994.01.17 00:00:00.000',NULL,'1994.06.01 00:00:00.000','n',100,3399.15,0.150000005960464,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9427029',1001,127,'shipped','1994.02.07 00:00:00.000','1994.02.10 00:00:00.000','1994.02.10 00:00:00.000','n',17,422210.97,0,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9333005',1002,11,'shipped','1993.02.03 00:00:00.000','1993.03.03 00:00:00.000',NULL,'y',2,600.5,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9333006',1002,11,'shipped','1993.04.27 00:00:00.000','1993.05.02 00:00:00.000','1993.05.02 00:00:00.000','n',5,20000,0,'other'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9336100',1002,11,'waiting','1993.12.27 00:00:00.000','1994.01.01 00:00:00.000','1994.01.01 00:00:00.000','n',150,14850,0.0500000007450581,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9346200',1003,11,'waiting','1993.12.31 00:00:00.000',NULL,'1994.01.24 00:00:00.000','n',3,0,1,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9345200',1003,11,'shipped','1993.11.11 00:00:00.000','1993.12.02 00:00:00.000','1993.12.01 00:00:00.000','y',900,27000,0.300000011920929,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9345139',1003,127,'shipped','1993.09.09 00:00:00.000','1993.09.20 00:00:00.000','1993.10.01 00:00:00.000','y',20,12582.12,0.100000001490116,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93C0120',1006,72,'shipped','1993.03.22 00:00:00.000','1993.05.31 00:00:00.000','1993.04.17 00:00:00.000','y',1,47.5,0,'other'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93C0990',1006,72,'shipped','1993.08.09 00:00:00.000','1993.09.02 00:00:00.000',NULL,'y',40,399960.5,0.100000001490116,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V9456220',1007,127,'open','1994.01.04 00:00:00.000',NULL,'1994.01.30 00:00:00.000','y',1,3999.99,0,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93S4702',1011,121,'shipped','1993.10.27 00:00:00.000','1993.10.28 00:00:00.000','1993.12.15 00:00:00.000','y',4,120000,0,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V94S6400',1011,141,'waiting','1994.01.06 00:00:00.000',NULL,'1994.02.15 00:00:00.000','y',20,1980.72,0.400000005960464,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93H3009',1008,61,'shipped','1993.08.01 00:00:00.000','1993.12.02 00:00:00.000','1993.12.01 00:00:00.000','n',3,9000,0.0500000007450581,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93H0500',1008,61,'open','1993.12.12 00:00:00.000',NULL,'1993.12.15 00:00:00.000','n',3,16000,0.200000002980232,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93F0020',1009,61,'shipped','1993.10.10 00:00:00.000','1993.11.11 00:00:00.000','1993.11.11 00:00:00.000','n',1,490.69,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93I4700',1013,121,'open','1993.10.27 00:00:00.000',NULL,'1993.12.15 00:00:00.000','n',5,2693,0,'hardware'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93B1002',1014,134,'shipped','1993.09.20 00:00:00.000','1993.09.21 00:00:00.000','1993.09.25 00:00:00.000','y',1,100.02,0,'software'); INSERT INTO SALES (PO_NUMBER,CUST_NO,SALES_REP,ORDER_STATUS,ORDER_DATE,SHIP_DATE,DATE_NEEDED,PAID,QTY_ORDERED,TOTAL_VALUE,DISCOUNT,ITEM_TYPE) VALUES('V93N5822',1015,134,'shipped','1993.12.18 00:00:00.000','1994.01.14 00:00:00.000',NULL,'n',2,1500,0,'software'); COMMIT; /* Data Ends */ /* Index definitions for all user tables */ CREATE INDEX CUSTNAMEX ON CUSTOMER(CUSTOMER); CREATE INDEX CUSTREGION ON CUSTOMER(COUNTRY, CITY); CREATE DESCENDING INDEX BUDGETX ON DEPARTMENT(BUDGET); CREATE INDEX NAMEX ON EMPLOYEE(LAST_NAME, FIRST_NAME); CREATE DESCENDING INDEX MAXSALX ON JOB(JOB_COUNTRY, MAX_SALARY); CREATE INDEX MINSALX ON JOB(JOB_COUNTRY, MIN_SALARY); CREATE UNIQUE INDEX PRODTYPEX ON PROJECT(PRODUCT, PROJ_NAME); CREATE DESCENDING INDEX CHANGEX ON SALARY_HISTORY(CHANGE_DATE); CREATE INDEX UPDATERX ON SALARY_HISTORY(UPDATER_ID); CREATE INDEX NEEDX ON SALES(DATE_NEEDED); CREATE DESCENDING INDEX QTYX ON SALES(ITEM_TYPE, QTY_ORDERED); CREATE INDEX SALESTATX ON SALES(ORDER_STATUS, PAID); ALTER TABLE CUSTOMER ADD FOREIGN KEY (COUNTRY) REFERENCES COUNTRY (COUNTRY); ALTER TABLE DEPARTMENT ADD FOREIGN KEY (HEAD_DEPT) REFERENCES DEPARTMENT (DEPT_NO); ALTER TABLE DEPARTMENT ADD FOREIGN KEY (MNGR_NO) REFERENCES EMPLOYEE (EMP_NO); ALTER TABLE EMPLOYEE ADD FOREIGN KEY (DEPT_NO) REFERENCES DEPARTMENT (DEPT_NO); ALTER TABLE EMPLOYEE ADD FOREIGN KEY (JOB_CODE, JOB_GRADE, JOB_COUNTRY) REFERENCES JOB (JOB_CODE, JOB_GRADE, JOB_COUNTRY); ALTER TABLE EMPLOYEE_PROJECT ADD FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE (EMP_NO); ALTER TABLE EMPLOYEE_PROJECT ADD FOREIGN KEY (PROJ_ID) REFERENCES PROJECT (PROJ_ID); ALTER TABLE JOB ADD FOREIGN KEY (JOB_COUNTRY) REFERENCES COUNTRY (COUNTRY); ALTER TABLE PROJECT ADD FOREIGN KEY (TEAM_LEADER) REFERENCES EMPLOYEE (EMP_NO); ALTER TABLE PROJ_DEPT_BUDGET ADD FOREIGN KEY (DEPT_NO) REFERENCES DEPARTMENT (DEPT_NO); ALTER TABLE PROJ_DEPT_BUDGET ADD FOREIGN KEY (PROJ_ID) REFERENCES PROJECT (PROJ_ID); ALTER TABLE SALARY_HISTORY ADD FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE (EMP_NO); ALTER TABLE SALES ADD FOREIGN KEY (CUST_NO) REFERENCES CUSTOMER (CUST_NO); ALTER TABLE SALES ADD FOREIGN KEY (SALES_REP) REFERENCES EMPLOYEE (EMP_NO); CREATE SEQUENCE CUST_NO_GEN; ALTER SEQUENCE CUST_NO_GEN RESTART WITH 1016; CREATE SEQUENCE EMP_NO_GEN; ALTER SEQUENCE EMP_NO_GEN RESTART WITH 158; CREATE SEQUENCE FB$OUT_SEQ; ALTER SEQUENCE FB$OUT_SEQ RESTART WITH 1; /* View: DEPTLIST, Owner: SYSDBA */ CREATE VIEW DEPTLIST ( EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, HIRE_DATE, DEPT_NO, JOB_CODE, JOB_GRADE, JOB_COUNTRY, SALARY, FULL_NAME, DEPT_PATH, DEPT_KEY_PATH, "Payment Status" ) AS with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH, cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH, Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO ) Select distinct A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH, CASE When A.SALARY > 10000 then 'higher paid' else 'lower paid' End From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO ; /* View: PHONE_LIST, Owner: SYSDBA */ CREATE VIEW PHONE_LIST ( EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, LOCATION, PHONE_NO ) AS SELECT emp_no, first_name, last_name, phone_ext, location, phone_no FROM employee, department WHERE employee.dept_no = department.dept_no ; /* Add Domain Check Constraints */ ALTER DOMAIN BUDGET ADD CONSTRAINT CHECK (VALUE > 10000 AND VALUE <= 2000000); ALTER DOMAIN CUSTNO ADD CONSTRAINT CHECK (VALUE > 1000); ALTER DOMAIN DEPTNO ADD CONSTRAINT CHECK (VALUE = '000' OR (VALUE > '0' AND VALUE <= '999') OR VALUE IS NULL); ALTER DOMAIN JOBCODE ADD CONSTRAINT CHECK (VALUE > '99999'); ALTER DOMAIN JOBGRADE ADD CONSTRAINT CHECK (VALUE BETWEEN 0 AND 6); ALTER DOMAIN PONUMBER ADD CONSTRAINT CHECK (VALUE STARTING WITH 'V'); ALTER DOMAIN PRODTYPE ADD CONSTRAINT CHECK (VALUE IN ('software', 'hardware', 'other', 'N/A')); ALTER DOMAIN PROJNO ADD CONSTRAINT CHECK (VALUE = UPPER (VALUE)); ALTER DOMAIN SALARY ADD CONSTRAINT CHECK (VALUE > 0); ALTER TABLE JOB ADD CHECK (min_salary < max_salary); ALTER TABLE JOB ADD CHECK (min_salary < max_salary); ALTER TABLE EMPLOYEE ADD CHECK ( salary >= (SELECT min_salary FROM job WHERE job.job_code = employee.job_code AND job.job_grade = employee.job_grade AND job.job_country = employee.job_country) AND salary <= (SELECT max_salary FROM job WHERE job.job_code = employee.job_code AND job.job_grade = employee.job_grade AND job.job_country = employee.job_country)); ALTER TABLE PROJ_DEPT_BUDGET ADD CHECK (FISCAL_YEAR >= 1993); ALTER TABLE SALARY_HISTORY ADD CHECK (percent_change between -50 and 50); ALTER TABLE CUSTOMER ADD CHECK (on_hold IS NULL OR on_hold = '*'); ALTER TABLE SALES ADD CHECK (order_status in ('new', 'open', 'shipped', 'waiting')); ALTER TABLE SALES ADD CHECK (ship_date >= order_date OR ship_date IS NULL); ALTER TABLE SALES ADD CHECK (date_needed > order_date OR date_needed IS NULL); ALTER TABLE SALES ADD CHECK (paid in ('y', 'n')); ALTER TABLE SALES ADD CHECK (qty_ordered >= 1); ALTER TABLE SALES ADD CHECK (total_value >= 0); ALTER TABLE SALES ADD CHECK (discount >= 0 AND discount <= 1); ALTER TABLE SALES ADD CHECK (NOT (order_status = 'shipped' AND ship_date IS NULL)); ALTER TABLE SALES ADD CHECK (NOT (order_status = 'shipped' AND EXISTS (SELECT on_hold FROM customer WHERE customer.cust_no = sales.cust_no AND customer.on_hold = '*'))); /* Exceptions */ CREATE EXCEPTION CUSTOMER_CHECK 'Overdue balance -- can not ship.'; CREATE EXCEPTION CUSTOMER_ON_HOLD 'This customer is on hold.'; CREATE EXCEPTION ORDER_ALREADY_SHIPPED 'Order status is "shipped."'; CREATE EXCEPTION REASSIGN_SALES 'Reassign the sales records before deleting this employee.'; CREATE EXCEPTION UNKNOWN_EMP_ID 'Invalid employee number or project id.'; COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Package Definitions */ CREATE PACKAGE FB$OUT AS begin procedure enable; procedure disable; procedure put_line (line fb$out_type); procedure clear; procedure get_lines returns (lines fb$out_type); end ^ CREATE PACKAGE SELECT$TEST AS Begin Procedure ShowItems(IPARAM Integer) RETURNS (OutParam integer); End ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Stored procedures Definitions*/ CREATE PROCEDURE SHOW_LANGS ( CODE VARCHAR(5) CHARACTER SET NONE, GRADE SMALLINT, CTY VARCHAR(15) CHARACTER SET NONE ) RETURNS ( LANGUAGES VARCHAR(15) CHARACTER SET NONE ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE ADD_EMP_PROJ ( EMP_NO SMALLINT, PROJ_ID CHAR(5) CHARACTER SET NONE ) AS BEGIN EXIT; END ^ CREATE PROCEDURE ALL_LANGS RETURNS ( CODE VARCHAR(5) CHARACTER SET NONE, GRADE VARCHAR(5) CHARACTER SET NONE, COUNTRY VARCHAR(15) CHARACTER SET NONE, LANG VARCHAR(15) CHARACTER SET NONE ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE DELETE_EMPLOYEE ( EMP_NUM INTEGER ) AS BEGIN EXIT; END ^ CREATE PROCEDURE DEPT_BUDGET ( DNO CHAR(3) CHARACTER SET NONE ) RETURNS ( TOT DECIMAL(12,2) ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE EMPLOYEE_PAY_STATUS ( EMP_NUM SMALLINT ) RETURNS ( PAY_STATUS VARCHAR(6) CHARACTER SET NONE, SALARY NUMERIC(10,2) ) AS BEGIN EXIT; END ^ CREATE PROCEDURE GET_EMP_PROJ ( EMP_NO SMALLINT ) RETURNS ( PROJ_ID CHAR(5) CHARACTER SET NONE ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE "Has Space" ( ARG1 INTEGER ) AS BEGIN EXIT; END ^ CREATE PROCEDURE MAIL_LABEL ( CUST_NO INTEGER ) RETURNS ( LINE1 CHAR(40) CHARACTER SET NONE, LINE2 CHAR(40) CHARACTER SET NONE, LINE3 CHAR(40) CHARACTER SET NONE, LINE4 CHAR(40) CHARACTER SET NONE, LINE5 CHAR(40) CHARACTER SET NONE, LINE6 CHAR(40) CHARACTER SET NONE ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE ORG_CHART RETURNS ( HEAD_DEPT CHAR(25) CHARACTER SET NONE, DEPARTMENT CHAR(25) CHARACTER SET NONE, MNGR_NAME CHAR(20) CHARACTER SET NONE, TITLE CHAR(5) CHARACTER SET NONE, EMP_CNT INTEGER ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE SHIP_ORDER ( PO_NUM CHAR(8) CHARACTER SET NONE ) AS BEGIN EXIT; END ^ CREATE PROCEDURE SUB_TOT_BUDGET ( HEAD_DEPT CHAR(3) CHARACTER SET NONE ) RETURNS ( TOT_BUDGET DECIMAL(12,2), AVG_BUDGET DECIMAL(12,2), MIN_BUDGET DECIMAL(12,2), MAX_BUDGET DECIMAL(12,2) ) AS BEGIN SUSPEND; EXIT; END ^ CREATE PROCEDURE "UC SPACE" ( ARG1 INTEGER ) AS BEGIN EXIT; END ^ CREATE PROCEDURE "iCASE" AS BEGIN EXIT; END ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Stored Function declarations */ CREATE FUNCTION F (X INTEGER) RETURNS INTEGER AS BEGIN END ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; SET TERM ^; /* Triggers only will work for SQL triggers */ CREATE TRIGGER "After Create Database" ACTIVE ON CONNECT POSITION 0 as begin End ^ CREATE TRIGGER "BEFORE CREATE TABLE" ACTIVE BEFORE CREATE TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE TABLE" ACTIVE AFTER CREATE TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER TABLE" ACTIVE BEFORE ALTER TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER TABLE" ACTIVE AFTER ALTER TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE/Alter TABLE" ACTIVE AFTER CREATE TABLE OR ALTER TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP TABLE" ACTIVE BEFORE Drop TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP TABLE" ACTIVE AFTER Drop TABLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE PROCEDURE" ACTIVE BEFORE CREATE PROCEDURE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE PROCEDURE" ACTIVE AFTER CREATE PROCEDURE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER PROCEDURE" ACTIVE BEFORE ALTER PROCEDURE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER PROCEDURE" ACTIVE AFTER ALTER PROCEDURE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP PROCEDURE" ACTIVE BEFORE Drop PROCEDURE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP PROCEDURE" ACTIVE AFTER Drop PROCEDURE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE FUNCTION" ACTIVE BEFORE CREATE FUNCTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE FUNCTION" ACTIVE AFTER CREATE FUNCTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER FUNCTION" ACTIVE BEFORE ALTER FUNCTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER FUNCTION" ACTIVE AFTER ALTER FUNCTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP FUNCTION" ACTIVE BEFORE Drop FUNCTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP FUNCTION" ACTIVE AFTER Drop FUNCTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE TRIGGER" ACTIVE BEFORE CREATE TRIGGER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE TRIGGER" ACTIVE AFTER CREATE TRIGGER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER TRIGGER" ACTIVE BEFORE ALTER TRIGGER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER TRIGGER" ACTIVE AFTER ALTER TRIGGER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP TRIGGER" ACTIVE BEFORE Drop TRIGGER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP TRIGGER" ACTIVE AFTER Drop TRIGGER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE EXCEPTION" ACTIVE BEFORE CREATE EXCEPTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE EXCEPTION" ACTIVE AFTER CREATE EXCEPTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER EXCEPTION" ACTIVE BEFORE ALTER EXCEPTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER EXCEPTION" ACTIVE AFTER ALTER EXCEPTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP EXCEPTION" ACTIVE BEFORE Drop EXCEPTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP EXCEPTION" ACTIVE AFTER Drop EXCEPTION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE VIEW" ACTIVE BEFORE CREATE VIEW POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE VIEW" ACTIVE AFTER CREATE VIEW POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER VIEW" ACTIVE BEFORE ALTER VIEW POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER VIEW" ACTIVE AFTER ALTER VIEW POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP VIEW" ACTIVE BEFORE Drop VIEW POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP VIEW" ACTIVE AFTER Drop VIEW POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE DOMAIN" ACTIVE BEFORE CREATE DOMAIN POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE DOMAIN" ACTIVE AFTER CREATE DOMAIN POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER DOMAIN" ACTIVE BEFORE ALTER DOMAIN POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER DOMAIN" ACTIVE AFTER ALTER DOMAIN POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP DOMAIN" ACTIVE BEFORE Drop DOMAIN POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP DOMAIN" ACTIVE AFTER Drop DOMAIN POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE ROLE" ACTIVE BEFORE CREATE ROLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE ROLE" ACTIVE AFTER CREATE ROLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER ROLE" ACTIVE BEFORE ALTER ROLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER ROLE" ACTIVE AFTER ALTER ROLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP ROLE" ACTIVE BEFORE Drop ROLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP ROLE" ACTIVE AFTER Drop ROLE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE INDEX" ACTIVE BEFORE CREATE INDEX POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE INDEX" ACTIVE AFTER CREATE INDEX POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER INDEX" ACTIVE BEFORE ALTER INDEX POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER INDEX" ACTIVE AFTER ALTER INDEX POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP INDEX" ACTIVE BEFORE Drop INDEX POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP INDEX" ACTIVE AFTER Drop INDEX POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE SEQUENCE" ACTIVE BEFORE CREATE SEQUENCE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE SEQUENCE" ACTIVE AFTER CREATE SEQUENCE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER SEQUENCE" ACTIVE BEFORE ALTER SEQUENCE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER SEQUENCE" ACTIVE AFTER ALTER SEQUENCE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP SEQUENCE" ACTIVE BEFORE Drop SEQUENCE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP SEQUENCE" ACTIVE AFTER Drop SEQUENCE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE USER" ACTIVE BEFORE CREATE USER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE USER" ACTIVE AFTER CREATE USER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER USER" ACTIVE BEFORE ALTER USER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER USER" ACTIVE AFTER ALTER USER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP USER" ACTIVE BEFORE Drop USER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP USER" ACTIVE AFTER Drop USER POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE COLLATION" ACTIVE BEFORE CREATE COLLATION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE COLLATION" ACTIVE AFTER CREATE COLLATION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP COLLATION" ACTIVE BEFORE Drop COLLATION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP COLLATION" ACTIVE AFTER Drop COLLATION POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER CHARACTER SET" ACTIVE BEFORE ALTER CHARACTER SET POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER CHARACTER SET" ACTIVE AFTER ALTER CHARACTER SET POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE PACKAGE" ACTIVE BEFORE CREATE PACKAGE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE PACKAGE" ACTIVE AFTER CREATE PACKAGE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ALTER PACKAGE" ACTIVE BEFORE ALTER PACKAGE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ALTER PACKAGE" ACTIVE AFTER ALTER PACKAGE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP PACKAGE" ACTIVE BEFORE Drop PACKAGE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP PACKAGE" ACTIVE AFTER Drop PACKAGE POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE CREATE PACKAGE BODY" ACTIVE BEFORE CREATE PACKAGE BODY POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER CREATE PACKAGE BODY" ACTIVE AFTER CREATE PACKAGE BODY POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE DROP PACKAGE BODY" ACTIVE BEFORE Drop PACKAGE BODY POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER DROP PACKAGE BODY" ACTIVE AFTER Drop PACKAGE BODY POSITION 0 AS BEGIN END ^ CREATE TRIGGER "BEFORE ANY DDL STATEMENT" ACTIVE BEFORE ANY DDL STATEMENT POSITION 0 AS BEGIN END ^ CREATE TRIGGER "AFTER ANY DDL STATEMENT" ACTIVE AFTER ANY DDL STATEMENT POSITION 0 AS BEGIN END ^ CREATE TRIGGER SET_CUST_NO FOR CUSTOMER ACTIVE BEFORE INSERT POSITION 0 AS BEGIN if (new.cust_no is null) then new.cust_no = gen_id(cust_no_gen, 1); END ^ CREATE TRIGGER SET_EMP_NO FOR EMPLOYEE ACTIVE BEFORE INSERT POSITION 0 AS BEGIN if (new.emp_no is null) then new.emp_no = gen_id(emp_no_gen, 1); END ^ CREATE TRIGGER SAVE_SALARY_CHANGE FOR EMPLOYEE ACTIVE AFTER UPDATE POSITION 0 AS BEGIN IF (old.salary <> new.salary) THEN INSERT INTO salary_history (emp_no, change_date, updater_id, old_salary, percent_change) VALUES ( old.emp_no, 'NOW', user, old.salary, (new.salary - old.salary) * 100 / old.salary); END ^ CREATE TRIGGER POST_NEW_ORDER FOR SALES ACTIVE AFTER INSERT POSITION 0 AS BEGIN POST_EVENT 'new_order'; END ^ COMMIT WORK^ SET TERM ;^ COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Package Definitions */ CREATE PACKAGE BODY FB$OUT AS begin procedure enable as begin rdb$set_context('USER_SESSION', 'fb$out.enabled', '1'); end procedure disable as begin rdb$set_context('USER_SESSION', 'fb$out.enabled', null); end procedure put_line (line fb$out_type) as begin if (rdb$get_context('USER_SESSION', 'fb$out.enabled') = '1') then begin in autonomous transaction do begin insert into fb$out_table (line_num, content) values (next value for fb$out_seq, :line); end end end procedure clear as begin in autonomous transaction do delete from fb$out_table; end procedure get_lines returns (lines fb$out_type) as declare line fb$out_type; begin lines = ''; in autonomous transaction do begin for select content from fb$out_table order by line_num into line do begin if (octet_length(lines) > 0) then lines = lines || ascii_char(13) || ascii_char(10); lines = lines || :line; end end execute procedure clear; end end ^ CREATE PACKAGE BODY SELECT$TEST AS Begin Procedure ShowItems(IPARAM Integer) RETURNS (OutParam integer) As Begin SUSPEND; End End ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Stored procedure Bodies */ ALTER PROCEDURE SHOW_LANGS ( CODE VARCHAR(5) CHARACTER SET NONE, GRADE SMALLINT, CTY VARCHAR(15) CHARACTER SET NONE ) RETURNS ( LANGUAGES VARCHAR(15) CHARACTER SET NONE ) AS DECLARE VARIABLE i INTEGER; BEGIN i = 1; WHILE (i <= 5) DO BEGIN SELECT language_req[:i] FROM joB WHERE ((job_code = :code) AND (job_grade = :grade) AND (job_country = :cty) AND (language_req IS NOT NULL)) INTO :languages; IF (languages = ' ') THEN /* Prints 'NULL' instead of blanks */ languages = 'NULL'; i = i +1; SUSPEND; END END ^ ALTER PROCEDURE ADD_EMP_PROJ ( EMP_NO SMALLINT, PROJ_ID CHAR(5) CHARACTER SET NONE ) AS BEGIN BEGIN INSERT INTO employee_project (emp_no, proj_id) VALUES (:emp_no, :proj_id); WHEN SQLCODE -530 DO EXCEPTION unknown_emp_id; END END ^ ALTER PROCEDURE ALL_LANGS RETURNS ( CODE VARCHAR(5) CHARACTER SET NONE, GRADE VARCHAR(5) CHARACTER SET NONE, COUNTRY VARCHAR(15) CHARACTER SET NONE, LANG VARCHAR(15) CHARACTER SET NONE ) AS BEGIN FOR SELECT job_code, job_grade, job_country FROM job INTO :code, :grade, :country DO BEGIN FOR SELECT languages FROM show_langs (:code, :grade, :country) INTO :lang DO SUSPEND; /* Put nice separators between rows */ code = '====='; grade = '====='; country = '==============='; lang = '=============='; SUSPEND; END END ^ ALTER PROCEDURE DELETE_EMPLOYEE ( EMP_NUM INTEGER ) AS DECLARE VARIABLE any_sales INTEGER; BEGIN any_sales = 0; /* * If there are any sales records referencing this employee, * cannot delete the employee until the sales are re-assigned * to another employee or changed to NULL. */ SELECT count(po_number) FROM sales WHERE sales_rep = :emp_num INTO :any_sales; IF (any_sales > 0) THEN BEGIN EXCEPTION reassign_sales; END /* * If the employee is a manager, update the department. */ UPDATE department SET mngr_no = NULL WHERE mngr_no = :emp_num; /* * If the employee is a project leader, update project. */ UPDATE project SET team_leader = NULL WHERE team_leader = :emp_num; /* * Delete the employee from any projects. */ DELETE FROM employee_project WHERE emp_no = :emp_num; /* * Delete old salary records. */ DELETE FROM salary_history WHERE emp_no = :emp_num; /* * Delete the employee. */ DELETE FROM employee WHERE emp_no = :emp_num; END ^ ALTER PROCEDURE DEPT_BUDGET ( DNO CHAR(3) CHARACTER SET NONE ) RETURNS ( TOT DECIMAL(12,2) ) AS DECLARE VARIABLE sumb DECIMAL(12,2); DECLARE VARIABLE rdno CHAR(3); DECLARE VARIABLE cnt INTEGER; BEGIN tot = 0; SELECT budget FROM department WHERE dept_no = :dno INTO :tot; SELECT count(budget) FROM department WHERE head_dept = :dno INTO :cnt; IF (cnt = 0) THEN SUSPEND; FOR SELECT dept_no FROM department WHERE head_dept = :dno INTO :rdno DO BEGIN EXECUTE PROCEDURE dept_budget :rdno RETURNING_VALUES :sumb; tot = tot + sumb; END SUSPEND; END ^ ALTER PROCEDURE EMPLOYEE_PAY_STATUS ( EMP_NUM SMALLINT ) RETURNS ( PAY_STATUS VARCHAR(6) CHARACTER SET NONE, SALARY NUMERIC(10,2) ) AS Declare aCursor CURSOR FOR ( Select EMP_NO,SALARY From EMPLOYEE WHERE LAST_NAME = 'unknown'); BEGIN Select SALARY, Case When SALARY > 10000 and SALARY <= 100000 then 'higher' When SALARY > 100000 then 'gross' else 'lower' End From employee WHERE emp_no = :EMP_NUM into :SALARY, :PAY_STATUS; END ^ ALTER PROCEDURE GET_EMP_PROJ ( EMP_NO SMALLINT ) RETURNS ( PROJ_ID CHAR(5) CHARACTER SET NONE ) AS BEGIN FOR SELECT proj_id FROM employee_project WHERE emp_no = :emp_no INTO :proj_id DO SUSPEND; END ^ ALTER PROCEDURE "Has Space" ( ARG1 INTEGER ) AS Begin End ^ ALTER PROCEDURE MAIL_LABEL ( CUST_NO INTEGER ) RETURNS ( LINE1 CHAR(40) CHARACTER SET NONE, LINE2 CHAR(40) CHARACTER SET NONE, LINE3 CHAR(40) CHARACTER SET NONE, LINE4 CHAR(40) CHARACTER SET NONE, LINE5 CHAR(40) CHARACTER SET NONE, LINE6 CHAR(40) CHARACTER SET NONE ) AS DECLARE VARIABLE customer VARCHAR(25); DECLARE VARIABLE first_name VARCHAR(15); DECLARE VARIABLE last_name VARCHAR(20); DECLARE VARIABLE addr1 VARCHAR(30); DECLARE VARIABLE addr2 VARCHAR(30); DECLARE VARIABLE city VARCHAR(25); DECLARE VARIABLE state VARCHAR(15); DECLARE VARIABLE country VARCHAR(15); DECLARE VARIABLE postcode VARCHAR(12); DECLARE VARIABLE cnt INTEGER; BEGIN line1 = ''; line2 = ''; line3 = ''; line4 = ''; line5 = ''; line6 = ''; SELECT customer, contact_first, contact_last, address_line1, address_line2, city, state_province, country, postal_code FROM CUSTOMER WHERE cust_no = :cust_no INTO :customer, :first_name, :last_name, :addr1, :addr2, :city, :state, :country, :postcode; IF (customer IS NOT NULL) THEN line1 = customer; IF (first_name IS NOT NULL) THEN line2 = first_name || ' ' || last_name; ELSE line2 = last_name; IF (addr1 IS NOT NULL) THEN line3 = addr1; IF (addr2 IS NOT NULL) THEN line4 = addr2; IF (country = 'USA') THEN BEGIN IF (city IS NOT NULL) THEN line5 = city || ', ' || state || ' ' || postcode; ELSE line5 = state || ' ' || postcode; END ELSE BEGIN IF (city IS NOT NULL) THEN line5 = city || ', ' || state; ELSE line5 = state; line6 = country || ' ' || postcode; END SUSPEND; END ^ ALTER PROCEDURE ORG_CHART RETURNS ( HEAD_DEPT CHAR(25) CHARACTER SET NONE, DEPARTMENT CHAR(25) CHARACTER SET NONE, MNGR_NAME CHAR(20) CHARACTER SET NONE, TITLE CHAR(5) CHARACTER SET NONE, EMP_CNT INTEGER ) AS DECLARE VARIABLE mngr_no INTEGER; DECLARE VARIABLE dno CHAR(3); BEGIN FOR SELECT h.department, d.department, d.mngr_no, d.dept_no FROM department d LEFT OUTER JOIN department h ON d.head_dept = h.dept_no ORDER BY d.dept_no INTO :head_dept, :department, :mngr_no, :dno DO BEGIN IF (:mngr_no IS NULL) THEN BEGIN mngr_name = '--TBH--'; title = ''; END ELSE SELECT full_name, job_code FROM employee WHERE emp_no = :mngr_no INTO :mngr_name, :title; SELECT COUNT(emp_no) FROM employee WHERE dept_no = :dno INTO :emp_cnt; SUSPEND; END END ^ ALTER PROCEDURE SHIP_ORDER ( PO_NUM CHAR(8) CHARACTER SET NONE ) AS DECLARE VARIABLE ord_stat CHAR(7); DECLARE VARIABLE hold_stat CHAR(1); DECLARE VARIABLE cust_no INTEGER; DECLARE VARIABLE any_po CHAR(8); BEGIN SELECT s.order_status, c.on_hold, c.cust_no FROM sales s, customer c WHERE po_number = :po_num AND s.cust_no = c.cust_no INTO :ord_stat, :hold_stat, :cust_no; /* This purchase order has been already shipped. */ IF (ord_stat = 'shipped') THEN BEGIN EXCEPTION order_already_shipped; END /* Customer is on hold. */ ELSE IF (hold_stat = '*') THEN BEGIN EXCEPTION customer_on_hold; END /* * If there is an unpaid balance on orders shipped over 2 months ago, * put the customer on hold. */ FOR SELECT po_number FROM sales WHERE cust_no = :cust_no AND order_status = 'shipped' AND paid = 'n' AND ship_date < CAST('NOW' AS TIMESTAMP) - 60 INTO :any_po DO BEGIN EXCEPTION customer_check; UPDATE customer SET on_hold = '*' WHERE cust_no = :cust_no; END /* * Ship the order. */ UPDATE sales SET order_status = 'shipped', ship_date = 'NOW' WHERE po_number = :po_num; END ^ ALTER PROCEDURE SUB_TOT_BUDGET ( HEAD_DEPT CHAR(3) CHARACTER SET NONE ) RETURNS ( TOT_BUDGET DECIMAL(12,2), AVG_BUDGET DECIMAL(12,2), MIN_BUDGET DECIMAL(12,2), MAX_BUDGET DECIMAL(12,2) ) AS BEGIN SELECT SUM(budget), AVG(budget), MIN(budget), MAX(budget) FROM department WHERE head_dept = :head_dept INTO :tot_budget, :avg_budget, :min_budget, :max_budget; SUSPEND; END ^ ALTER PROCEDURE "UC SPACE" ( ARG1 INTEGER ) AS Begin End ^ ALTER PROCEDURE "iCASE" AS Begin End ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; COMMIT WORK; SET AUTODDL OFF; SET TERM ^; /* Stored Function Body */ ALTER FUNCTION F (X INTEGER) RETURNS INTEGER AS BEGIN RETURN X+1; END ^ SET TERM ;^ COMMIT WORK; SET AUTODDL ON; /* Comments on System Objects */ COMMENT ON CHARACTER SET UTF8 IS 'Default Character set'; /* Grant Roles for this database */ /* Role: TESTROLE, Owner: SYSDBA */ CREATE ROLE TESTROLE SET SYSTEM PRIVILEGES TO CREATE_DATABASE; /* Grant permissions for this database */ GRANT REFERENCES ON TABLE COUNTRIES TO USER BOB ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE COUNTRY TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE CUSTOMER TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE DEPARTMENT TO USER PUBLIC WITH GRANT OPTION ; GRANT SELECT ON TABLE EMPLOYEE TO USER ALICE WITH GRANT OPTION GRANTED BY BOB ; GRANT SELECT,Update(LAST_NAME,FIRST_NAME) ON TABLE EMPLOYEE TO USER BOB ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE EMPLOYEE TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE EMPLOYEE_PROJECT TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE FB$OUT_TABLE TO PACKAGE FB$OUT ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE JOB TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE PHONE_LIST TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE PROJECT TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE PROJ_DEPT_BUDGET TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE SALARY_HISTORY TO USER PUBLIC WITH GRANT OPTION ; GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON TABLE SALES TO USER PUBLIC WITH GRANT OPTION ; GRANT RDB$ADMIN TO ALICE; GRANT RDB$ADMIN TO BOB; GRANT EXECUTE ON PROCEDURE ADD_EMP_PROJ TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE ALL_LANGS TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE DELETE_EMPLOYEE TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE DEPT_BUDGET TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE GET_EMP_PROJ TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE MAIL_LABEL TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE ORG_CHART TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE SHIP_ORDER TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE SHOW_LANGS TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PROCEDURE SUB_TOT_BUDGET TO USER PUBLIC WITH GRANT OPTION ; GRANT EXECUTE ON PACKAGE FB$OUT TO USER PUBLIC ; GRANT CREATE TABLE TO USER BOB ; GRANT CREATE COLLATION TO USER BOB ; GRANT CREATE CHARACTER SET TO USER ALICE ; GRANT CREATE COLLATION TO USER ALICE ; GRANT CREATE DOMAIN TO USER ALICE ; GRANT CREATE EXCEPTION TO USER ALICE ; GRANT CREATE FILTER TO USER ALICE ; GRANT CREATE FUNCTION TO USER ALICE ; GRANT CREATE GENERATOR TO USER ALICE ; GRANT CREATE PACKAGE TO USER ALICE ; GRANT CREATE PROCEDURE TO USER ALICE ; GRANT CREATE ROLE TO USER ALICE ; GRANT CREATE TABLE TO USER ALICE ; GRANT CREATE VIEW TO USER ALICE ; GRANT DROP ANY TABLE TO USER ALICE ; GRANT ALTER ANY VIEW TO USER ALICE ; GRANT DROP ANY GENERATOR TO USER ALICE ; Schema written to Test10.out Run diff command returns 256 Output from diff command 4c4 < CREATE DATABASE 'inet://localhost//tmp/ibx-testsuite/testsuite1.fdb' PAGE_SIZE 8192 --- > /* CREATE DATABASE 'inet://localhost//tmp/ibx-testsuite/testsuite1.fdb' PAGE_SIZE 8192 6c6 < DEFAULT CHARACTER SET NONE; --- > DEFAULT CHARACTER SET NONE; */ 127c127 < "KEY" INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 0) NOT NULL, --- > "KEY" INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 0 INCREMENT BY 1) NOT NULL, 1160,1161c1160 < AS < BEGIN SUSPEND; EXIT; END --- > AS BEGIN SUSPEND; EXIT; END 1169,1170c1168 < AS < BEGIN EXIT; END --- > AS BEGIN EXIT; END 1181,1182c1179 < AS < BEGIN SUSPEND; EXIT; END --- > AS BEGIN SUSPEND; EXIT; END 1189,1190c1186 < AS < BEGIN EXIT; END --- > AS BEGIN EXIT; END 1201,1202c1197 < AS < BEGIN SUSPEND; EXIT; END --- > AS BEGIN SUSPEND; EXIT; END 1214,1215c1209 < AS < BEGIN EXIT; END --- > AS BEGIN EXIT; END 1226,1227c1220 < AS < BEGIN SUSPEND; EXIT; END --- > AS BEGIN SUSPEND; EXIT; END 1234,1235c1227 < AS < BEGIN EXIT; END --- > AS BEGIN EXIT; END 1251,1252c1243 < AS < BEGIN SUSPEND; EXIT; END --- > AS BEGIN SUSPEND; EXIT; END 1264,1265c1255 < AS < BEGIN SUSPEND; EXIT; END --- > AS BEGIN SUSPEND; EXIT; END 1272,1273c1262 < AS < BEGIN EXIT; END --- > AS BEGIN EXIT; END 1287,1288c1276 < AS < BEGIN SUSPEND; EXIT; END --- > AS BEGIN SUSPEND; EXIT; END 1295,1296c1283 < AS < BEGIN EXIT; END --- > AS BEGIN EXIT; END 1300,1301c1287 < AS < BEGIN EXIT; END --- > AS BEGIN EXIT; END 2346c2332 < GRANT SELECT,Update(FIRST_NAME,LAST_NAME) ON TABLE EMPLOYEE TO USER BOB ; --- > GRANT SELECT,Update(LAST_NAME,FIRST_NAME) ON TABLE EMPLOYEE TO USER BOB ; ------------------------------------------------------ Running Test 11: Event Handling Case #1: Deferred Event Registration Creating Database from resources/Test11.sql Set Term ^; Create Procedure CallEvent( EventName VarChar(32) ) As Begin Post_Event :EventName; End^ set term ;^ Event Called Event Handled: EVENT1, Count = 1 Event Handled: EVENT2, Count = 0 Case #2: Event Registration after DB Open Creating Database from resources/Test11.sql Set Term ^; Create Procedure CallEvent( EventName VarChar(32) ) As Begin Post_Event :EventName; End^ set term ;^ Event Called Event Handled: EVENT1, Count = 0 Event Handled: EVENT2, Count = 1 ------------------------------------------------------ Running Test 12: Test use of Services Connection Firebird Library PathName = /opt/firebird/4.0.2/lib/libfbclient.so Connect String = localhost:service_mgr Server Version = LI-V4.0.2.2816 Firebird 4.0 Server Implementation = Firebird/Linux/AMD/Intel/x64 Service Version = 2 Firebird Release = 4.0.2 (Build no. 2816) No. of attachments = 0 No. of databases = 0 Base Location = /opt/firebird/4.0.2/ Lock File Location = /tmp/firebird/ Security Database Location = /opt/firebird/4.0.2/security4.fdb Message File Location = /opt/firebird/4.0.2/ Database Statistics for employee Database "/opt/firebird/4.0.2/examples/empbuild/employee.fdb" Gstat execution time Sat Jun 17 14:53:16 2023 Database header page information: Flags 0 Generation 856 System Change Number 0 Page size 8192 ODS version 13.0 Oldest transaction 1053 Oldest active 1054 Oldest snapshot 1054 Next transaction 1054 Sequence number 0 Next attachment ID 1163 Implementation HW=AMD/Intel/x64 little-endian OS=Linux CC=gcc Shadow count 0 Page buffers 0 Next header page 0 Database dialect 3 Creation date Aug 10, 2022 10:51:50 Attributes force write Variable header data: Database GUID: {80156B13-7946-4B54-92B5-61D10B7B7619} *END* Database file sequence: File /opt/firebird/4.0.2/examples/empbuild/employee.fdb is the only file Analyzing database pages ... COUNTRY (128) Primary pointer page: 222, Index root page: 223 Pointer pages: 1, data page slots: 1 Data pages: 1, average fill: 8% Primary pages: 1, secondary pages: 0, swept pages: 1 Empty pages: 0, full pages: 0 Fill distribution: 0 - 19% = 1 20 - 39% = 0 40 - 59% = 0 60 - 79% = 0 80 - 99% = 0 CUSTOMER (137) Primary pointer page: 276, Index root page: 277 Pointer pages: 1, data page slots: 1 Data pages: 1, average fill: 26% Primary pages: 1, secondary pages: 0, swept pages: 1 Empty pages: 0, full pages: 0 Fill distribution: 0 - 19% = 0 20 - 39% = 1 40 - 59% = 0 60 - 79% = 0 80 - 99% = 0 DEPARTMENT (130) Primary pointer page: 236, Index root page: 237 Pointer pages: 1, data page slots: 1 Data pages: 1, average fill: 24% Primary pages: 1, secondary pages: 0, swept pages: 1 Empty pages: 0, full pages: 0 Fill distribution: 0 - 19% = 0 20 - 39% = 1 40 - 59% = 0 60 - 79% = 0 80 - 99% = 0 EMPLOYEE (131) Primary pointer page: 243, Index root page: 244 Pointer pages: 1, data page slots: 1 Data pages: 1, average fill: 44% Primary pages: 1, secondary pages: 0, swept pages: 0 Empty pages: 0, full pages: 0 Fill distribution: 0 - 19% = 0 20 - 39% = 0 40 - 59% = 1 60 - 79% = 0 80 - 99% = 0 EMPLOYEE_PROJECT (134) Primary pointer page: 258, Index root page: 259 Pointer pages: 1, data page slots: 1 Data pages: 1, average fill: 10% Primary pages: 1, secondary pages: 0, swept pages: 1 Empty pages: 0, full pages: 0 Fill distribution: 0 - 19% = 1 20 - 39% = 0 40 - 59% = 0 60 - 79% = 0 80 - 99% = 0 JOB (129) Primary pointer page: 229, Index root page: 230 Pointer pages: 1, data page slots: 2 Data pages: 2, average fill: 54% Primary pages: 1, secondary pages: 1, swept pages: 1 Empty pages: 0, full pages: 0 Fill distribution: 0 - 19% = 0 20 - 39% = 1 40 - 59% = 0 60 - 79% = 1 80 - 99% = 0 PROJECT (133) Primary pointer page: 251, Index root page: 252 Pointer pages: 1, data page slots: 2 Data pages: 2, average fill: 7% Primary pages: 1, secondary pages: 1, swept pages: 1 Empty pages: 0, full pages: 0 Fill distribution: 0 - 19% = 2 20 - 39% = 0 40 - 59% = 0 60 - 79% = 0 80 - 99% = 0 PROJ_DEPT_BUDGET (135) Primary pointer page: 265, Index root page: 266 Pointer pages: 1, data page slots: 2 Data pages: 2, average fill: 20% Primary pages: 1, secondary pages: 1, swept pages: 1 Empty pages: 0, full pages: 0 Fill distribution: 0 - 19% = 1 20 - 39% = 1 40 - 59% = 0 60 - 79% = 0 80 - 99% = 0 SALARY_HISTORY (136) Primary pointer page: 270, Index root page: 271 Pointer pages: 1, data page slots: 1 Data pages: 1, average fill: 30% Primary pages: 1, secondary pages: 0, swept pages: 1 Empty pages: 0, full pages: 0 Fill distribution: 0 - 19% = 0 20 - 39% = 1 40 - 59% = 0 60 - 79% = 0 80 - 99% = 0 SALES (138) Primary pointer page: 283, Index root page: 284 Pointer pages: 1, data page slots: 1 Data pages: 1, average fill: 35% Primary pages: 1, secondary pages: 0, swept pages: 1 Empty pages: 0, full pages: 0 Fill distribution: 0 - 19% = 0 20 - 39% = 1 40 - 59% = 0 60 - 79% = 0 80 - 99% = 0 Gstat completion time Sat Jun 17 14:53:16 2023 Server Log zeus Tue Feb 28 14:51:32 2023 firebird/4.0.2/bin/fbguard: guardian starting /opt/firebird/4.0.2/bin/firebird Online Validation 14:53:17.09 Validation started 14:53:17.09 Relation 128 (COUNTRY) 14:53:17.09 process pointer page 0 of 1 14:53:17.09 Index 1 (RDB$PRIMARY1) 14:53:17.09 Relation 128 (COUNTRY) is ok 14:53:17.09 Relation 129 (JOB) 14:53:17.09 process pointer page 0 of 1 14:53:17.09 Index 1 (RDB$PRIMARY2) 14:53:17.09 Index 2 (RDB$FOREIGN3) 14:53:17.09 Index 3 (MAXSALX) 14:53:17.09 Index 4 (MINSALX) 14:53:17.09 Relation 129 (JOB) is ok 14:53:17.09 Relation 130 (DEPARTMENT) 14:53:17.09 process pointer page 0 of 1 14:53:17.09 Index 1 (RDB$4) 14:53:17.09 Index 2 (RDB$PRIMARY5) 14:53:17.09 Index 3 (RDB$FOREIGN6) 14:53:17.09 Index 4 (BUDGETX) 14:53:17.09 Index 5 (RDB$FOREIGN10) 14:53:17.09 Relation 130 (DEPARTMENT) is ok 14:53:17.09 Relation 131 (EMPLOYEE) 14:53:17.09 process pointer page 0 of 1 14:53:17.09 Index 1 (RDB$PRIMARY7) 14:53:17.09 Index 2 (RDB$FOREIGN8) 14:53:17.09 Index 3 (RDB$FOREIGN9) 14:53:17.09 Index 4 (NAMEX) 14:53:17.09 Relation 131 (EMPLOYEE) is ok 14:53:17.09 Relation 133 (PROJECT) 14:53:17.09 process pointer page 0 of 1 14:53:17.10 Index 1 (RDB$11) 14:53:17.10 Index 2 (RDB$PRIMARY12) 14:53:17.10 Index 3 (RDB$FOREIGN13) 14:53:17.10 Index 4 (PRODTYPEX) 14:53:17.10 Relation 133 (PROJECT) is ok 14:53:17.10 Relation 134 (EMPLOYEE_PROJECT) 14:53:17.10 process pointer page 0 of 1 14:53:17.10 Index 1 (RDB$PRIMARY14) 14:53:17.10 Index 2 (RDB$FOREIGN15) 14:53:17.10 Index 3 (RDB$FOREIGN16) 14:53:17.10 Relation 134 (EMPLOYEE_PROJECT) is ok 14:53:17.10 Relation 135 (PROJ_DEPT_BUDGET) 14:53:17.10 process pointer page 0 of 1 14:53:17.10 Index 1 (RDB$PRIMARY17) 14:53:17.10 Index 2 (RDB$FOREIGN18) 14:53:17.10 Index 3 (RDB$FOREIGN19) 14:53:17.10 Relation 135 (PROJ_DEPT_BUDGET) is ok 14:53:17.10 Relation 136 (SALARY_HISTORY) 14:53:17.10 process pointer page 0 of 1 14:53:17.10 Index 1 (RDB$PRIMARY20) 14:53:17.10 Index 2 (RDB$FOREIGN21) 14:53:17.10 Index 3 (CHANGEX) 14:53:17.10 Index 4 (UPDATERX) 14:53:17.10 Relation 136 (SALARY_HISTORY) is ok 14:53:17.11 Relation 137 (CUSTOMER) 14:53:17.11 process pointer page 0 of 1 14:53:17.11 Index 1 (RDB$PRIMARY22) 14:53:17.11 Index 2 (RDB$FOREIGN23) 14:53:17.11 Index 3 (CUSTNAMEX) 14:53:17.11 Index 4 (CUSTREGION) 14:53:17.11 Relation 137 (CUSTOMER) is ok 14:53:17.11 Relation 138 (SALES) 14:53:17.11 process pointer page 0 of 1 14:53:17.11 Index 1 (RDB$PRIMARY24) 14:53:17.11 Index 2 (RDB$FOREIGN25) 14:53:17.11 Index 3 (RDB$FOREIGN26) 14:53:17.11 Index 4 (NEEDX) 14:53:17.11 Index 5 (QTYX) 14:53:17.11 Index 6 (SALESTATX) 14:53:17.11 Relation 138 (SALES) is ok 14:53:17.11 Validation finished Normal Validation Validation Completed Database Sweep Database Swept Current User List Row No = 1 UserID = 0 GroupID = 0 SEC$USER_NAME = SYSDBA SEC$FIRST_NAME = SEC$MIDDLE_NAME = SEC$LAST_NAME = SEC$PASSWORD = NULL SEC$ADMIN = True Rows printed = 1 Add user Updated User List Row No = 1 UserID = 0 GroupID = 0 SEC$USER_NAME = SYSDBA SEC$FIRST_NAME = SEC$MIDDLE_NAME = SEC$LAST_NAME = SEC$PASSWORD = NULL SEC$ADMIN = True Row No = 2 UserID = 0 GroupID = 0 SEC$USER_NAME = Test12Tester SEC$FIRST_NAME = NULL SEC$MIDDLE_NAME = NULL SEC$LAST_NAME = Tester SEC$PASSWORD = LetMeIn SEC$ADMIN = False Rows printed = 2 Close and re-open user list Row No = 1 UserID = 0 GroupID = 0 SEC$USER_NAME = SYSDBA SEC$FIRST_NAME = SEC$MIDDLE_NAME = SEC$LAST_NAME = SEC$PASSWORD = NULL SEC$ADMIN = True Row No = 2 UserID = 0 GroupID = 0 SEC$USER_NAME = TEST12TESTER SEC$FIRST_NAME = SEC$MIDDLE_NAME = SEC$LAST_NAME = Tester SEC$PASSWORD = NULL SEC$ADMIN = False Rows printed = 2 Modify the new user Row No = 1 UserID = 0 GroupID = 0 SEC$USER_NAME = SYSDBA SEC$FIRST_NAME = SEC$MIDDLE_NAME = SEC$LAST_NAME = SEC$PASSWORD = NULL SEC$ADMIN = True Row No = 2 UserID = 0 GroupID = 0 SEC$USER_NAME = TEST12TESTER SEC$FIRST_NAME = The SEC$MIDDLE_NAME = SEC$LAST_NAME = Tester SEC$PASSWORD = NULL SEC$ADMIN = False Rows printed = 2 Close and re-open user list Row No = 1 UserID = 0 GroupID = 0 SEC$USER_NAME = SYSDBA SEC$FIRST_NAME = SEC$MIDDLE_NAME = SEC$LAST_NAME = SEC$PASSWORD = NULL SEC$ADMIN = True Row No = 2 UserID = 0 GroupID = 0 SEC$USER_NAME = TEST12TESTER SEC$FIRST_NAME = The SEC$MIDDLE_NAME = SEC$LAST_NAME = Tester SEC$PASSWORD = NULL SEC$ADMIN = False Rows printed = 2 Now delete the new user Updated User List Row No = 1 UserID = 0 GroupID = 0 SEC$USER_NAME = SYSDBA SEC$FIRST_NAME = SEC$MIDDLE_NAME = SEC$LAST_NAME = SEC$PASSWORD = NULL SEC$ADMIN = True Rows printed = 1 Employee Database is Online = TRUE Employee Database is Online = FALSE Employee Database is Online = TRUE Starting Backup Backup Completed - File Size = 80384 bytes Restore Started Restore Completed Show the EMPLOYEE Table from the restored database Row No = 1 EMP_NO = 2 FIRST_NAME = Robert LAST_NAME = Nelson PHONE_EXT = 250 HIRE_DATE = 28/12/1988 DEPT_NO = 600 JOB_CODE = VP JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 105900 FULL_NAME = Nelson, Robert Row No = 2 EMP_NO = 4 FIRST_NAME = Bruce LAST_NAME = Young PHONE_EXT = 233 HIRE_DATE = 28/12/1988 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 97500 FULL_NAME = Young, Bruce Row No = 3 EMP_NO = 5 FIRST_NAME = Kim LAST_NAME = Lambert PHONE_EXT = 22 HIRE_DATE = 06/2/1989 DEPT_NO = 130 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 102750 FULL_NAME = Lambert, Kim Row No = 4 EMP_NO = 8 FIRST_NAME = Leslie LAST_NAME = Johnson PHONE_EXT = 410 HIRE_DATE = 05/4/1989 DEPT_NO = 180 JOB_CODE = Mktg JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 64635 FULL_NAME = Johnson, Leslie Row No = 5 EMP_NO = 9 FIRST_NAME = Phil LAST_NAME = Forest PHONE_EXT = 229 HIRE_DATE = 17/4/1989 DEPT_NO = 622 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 75060 FULL_NAME = Forest, Phil Row No = 6 EMP_NO = 11 FIRST_NAME = K. J. LAST_NAME = Weston PHONE_EXT = 34 HIRE_DATE = 17/1/1990 DEPT_NO = 130 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 86292.94 FULL_NAME = Weston, K. J. Row No = 7 EMP_NO = 12 FIRST_NAME = Terri LAST_NAME = Lee PHONE_EXT = 256 HIRE_DATE = 01/5/1990 DEPT_NO = 000 JOB_CODE = Admin JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 53793 FULL_NAME = Lee, Terri Row No = 8 EMP_NO = 14 FIRST_NAME = Stewart LAST_NAME = Hall PHONE_EXT = 227 HIRE_DATE = 04/6/1990 DEPT_NO = 900 JOB_CODE = Finan JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 69482.63 FULL_NAME = Hall, Stewart Row No = 9 EMP_NO = 15 FIRST_NAME = Katherine LAST_NAME = Young PHONE_EXT = 231 HIRE_DATE = 14/6/1990 DEPT_NO = 623 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 67241.25 FULL_NAME = Young, Katherine Row No = 10 EMP_NO = 20 FIRST_NAME = Chris LAST_NAME = Papadopoulos PHONE_EXT = 887 HIRE_DATE = 01/1/1990 DEPT_NO = 671 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 89655 FULL_NAME = Papadopoulos, Chris Row No = 11 EMP_NO = 24 FIRST_NAME = Pete LAST_NAME = Fisher PHONE_EXT = 888 HIRE_DATE = 12/9/1990 DEPT_NO = 671 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 81810.19 FULL_NAME = Fisher, Pete Row No = 12 EMP_NO = 28 FIRST_NAME = Ann LAST_NAME = Bennet PHONE_EXT = 5 HIRE_DATE = 01/2/1991 DEPT_NO = 120 JOB_CODE = Admin JOB_GRADE = 5 JOB_COUNTRY = England SALARY = 22935 FULL_NAME = Bennet, Ann Row No = 13 EMP_NO = 29 FIRST_NAME = Roger LAST_NAME = De Souza PHONE_EXT = 288 HIRE_DATE = 18/2/1991 DEPT_NO = 623 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 69482.63 FULL_NAME = De Souza, Roger Row No = 14 EMP_NO = 34 FIRST_NAME = Janet LAST_NAME = Baldwin PHONE_EXT = 2 HIRE_DATE = 21/3/1991 DEPT_NO = 110 JOB_CODE = Sales JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 61637.81 FULL_NAME = Baldwin, Janet Row No = 15 EMP_NO = 36 FIRST_NAME = Roger LAST_NAME = Reeves PHONE_EXT = 6 HIRE_DATE = 25/4/1991 DEPT_NO = 120 JOB_CODE = Sales JOB_GRADE = 3 JOB_COUNTRY = England SALARY = 33620.63 FULL_NAME = Reeves, Roger Row No = 16 EMP_NO = 37 FIRST_NAME = Willie LAST_NAME = Stansbury PHONE_EXT = 7 HIRE_DATE = 25/4/1991 DEPT_NO = 120 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = England SALARY = 39224.06 FULL_NAME = Stansbury, Willie Row No = 17 EMP_NO = 44 FIRST_NAME = Leslie LAST_NAME = Phong PHONE_EXT = 216 HIRE_DATE = 03/6/1991 DEPT_NO = 623 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 56034.38 FULL_NAME = Phong, Leslie Row No = 18 EMP_NO = 45 FIRST_NAME = Ashok LAST_NAME = Ramanathan PHONE_EXT = 209 HIRE_DATE = 01/8/1991 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 80689.5 FULL_NAME = Ramanathan, Ashok Row No = 19 EMP_NO = 46 FIRST_NAME = Walter LAST_NAME = Steadman PHONE_EXT = 210 HIRE_DATE = 09/8/1991 DEPT_NO = 900 JOB_CODE = CFO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 116100 FULL_NAME = Steadman, Walter Row No = 20 EMP_NO = 52 FIRST_NAME = Carol LAST_NAME = Nordstrom PHONE_EXT = 420 HIRE_DATE = 02/10/1991 DEPT_NO = 180 JOB_CODE = PRel JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 42742.5 FULL_NAME = Nordstrom, Carol Row No = 21 EMP_NO = 61 FIRST_NAME = Luke LAST_NAME = Leung PHONE_EXT = 3 HIRE_DATE = 18/2/1992 DEPT_NO = 110 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 68805 FULL_NAME = Leung, Luke Row No = 22 EMP_NO = 65 FIRST_NAME = Sue Anne LAST_NAME = O'Brien PHONE_EXT = 877 HIRE_DATE = 23/3/1992 DEPT_NO = 670 JOB_CODE = Admin JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 31275 FULL_NAME = O'Brien, Sue Anne Row No = 23 EMP_NO = 71 FIRST_NAME = Jennifer M. LAST_NAME = Burbank PHONE_EXT = 289 HIRE_DATE = 15/4/1992 DEPT_NO = 622 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 53167.5 FULL_NAME = Burbank, Jennifer M. Row No = 24 EMP_NO = 72 FIRST_NAME = Claudia LAST_NAME = Sutherland PHONE_EXT = NULL HIRE_DATE = 20/4/1992 DEPT_NO = 140 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Canada SALARY = 100914 FULL_NAME = Sutherland, Claudia Row No = 25 EMP_NO = 83 FIRST_NAME = Dana LAST_NAME = Bishop PHONE_EXT = 290 HIRE_DATE = 01/6/1992 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 62550 FULL_NAME = Bishop, Dana Row No = 26 EMP_NO = 85 FIRST_NAME = Mary S. LAST_NAME = MacDonald PHONE_EXT = 477 HIRE_DATE = 01/6/1992 DEPT_NO = 100 JOB_CODE = VP JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 111262.5 FULL_NAME = MacDonald, Mary S. Row No = 27 EMP_NO = 94 FIRST_NAME = Randy LAST_NAME = Williams PHONE_EXT = 892 HIRE_DATE = 08/8/1992 DEPT_NO = 672 JOB_CODE = Mngr JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 56295 FULL_NAME = Williams, Randy Row No = 28 EMP_NO = 105 FIRST_NAME = Oliver H. LAST_NAME = Bender PHONE_EXT = 255 HIRE_DATE = 08/10/1992 DEPT_NO = 000 JOB_CODE = CEO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 212850 FULL_NAME = Bender, Oliver H. Row No = 29 EMP_NO = 107 FIRST_NAME = Kevin LAST_NAME = Cook PHONE_EXT = 894 HIRE_DATE = 01/2/1993 DEPT_NO = 670 JOB_CODE = Dir JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 111262.5 FULL_NAME = Cook, Kevin Row No = 30 EMP_NO = 109 FIRST_NAME = Kelly LAST_NAME = Brown PHONE_EXT = 202 HIRE_DATE = 04/2/1993 DEPT_NO = 600 JOB_CODE = Admin JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 27000 FULL_NAME = Brown, Kelly Row No = 31 EMP_NO = 110 FIRST_NAME = Yuki LAST_NAME = Ichida PHONE_EXT = 22 HIRE_DATE = 04/2/1993 DEPT_NO = 115 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = Japan SALARY = 6000000 FULL_NAME = Ichida, Yuki Row No = 32 EMP_NO = 113 FIRST_NAME = Mary LAST_NAME = Page PHONE_EXT = 845 HIRE_DATE = 12/4/1993 DEPT_NO = 671 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 48000 FULL_NAME = Page, Mary Row No = 33 EMP_NO = 114 FIRST_NAME = Bill LAST_NAME = Parker PHONE_EXT = 247 HIRE_DATE = 01/6/1993 DEPT_NO = 623 JOB_CODE = Eng JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 35000 FULL_NAME = Parker, Bill Row No = 34 EMP_NO = 118 FIRST_NAME = Takashi LAST_NAME = Yamamoto PHONE_EXT = 23 HIRE_DATE = 01/7/1993 DEPT_NO = 115 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Japan SALARY = 7480000 FULL_NAME = Yamamoto, Takashi Row No = 35 EMP_NO = 121 FIRST_NAME = Roberto LAST_NAME = Ferrari PHONE_EXT = 1 HIRE_DATE = 12/7/1993 DEPT_NO = 125 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Italy SALARY = 33000 FULL_NAME = Ferrari, Roberto Row No = 36 EMP_NO = 127 FIRST_NAME = Michael LAST_NAME = Yanowski PHONE_EXT = 492 HIRE_DATE = 09/8/1993 DEPT_NO = 100 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 44000 FULL_NAME = Yanowski, Michael Row No = 37 EMP_NO = 134 FIRST_NAME = Jacques LAST_NAME = Glon PHONE_EXT = NULL HIRE_DATE = 23/8/1993 DEPT_NO = 123 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = France SALARY = 38500 FULL_NAME = Glon, Jacques Row No = 38 EMP_NO = 136 FIRST_NAME = Scott LAST_NAME = Johnson PHONE_EXT = 265 HIRE_DATE = 13/9/1993 DEPT_NO = 623 JOB_CODE = Doc JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 60000 FULL_NAME = Johnson, Scott Row No = 39 EMP_NO = 138 FIRST_NAME = T.J. LAST_NAME = Green PHONE_EXT = 218 HIRE_DATE = 01/11/1993 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 36000 FULL_NAME = Green, T.J. Row No = 40 EMP_NO = 141 FIRST_NAME = Pierre LAST_NAME = Osborne PHONE_EXT = NULL HIRE_DATE = 03/1/1994 DEPT_NO = 121 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Switzerland SALARY = 110000 FULL_NAME = Osborne, Pierre Row No = 41 EMP_NO = 144 FIRST_NAME = John LAST_NAME = Montgomery PHONE_EXT = 820 HIRE_DATE = 30/3/1994 DEPT_NO = 672 JOB_CODE = Eng JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 35000 FULL_NAME = Montgomery, John Row No = 42 EMP_NO = 145 FIRST_NAME = Mark LAST_NAME = Guckenheimer PHONE_EXT = 221 HIRE_DATE = 02/5/1994 DEPT_NO = 622 JOB_CODE = Eng JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 32000 FULL_NAME = Guckenheimer, Mark Rows printed = 42 Starting Server Side Backup Backup Completed Restore Started Restore Completed Show the EMPLOYEE Table from the restored database Row No = 1 EMP_NO = 2 FIRST_NAME = Robert LAST_NAME = Nelson PHONE_EXT = 250 HIRE_DATE = 28/12/1988 DEPT_NO = 600 JOB_CODE = VP JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 105900 FULL_NAME = Nelson, Robert Row No = 2 EMP_NO = 4 FIRST_NAME = Bruce LAST_NAME = Young PHONE_EXT = 233 HIRE_DATE = 28/12/1988 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 97500 FULL_NAME = Young, Bruce Row No = 3 EMP_NO = 5 FIRST_NAME = Kim LAST_NAME = Lambert PHONE_EXT = 22 HIRE_DATE = 06/2/1989 DEPT_NO = 130 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 102750 FULL_NAME = Lambert, Kim Row No = 4 EMP_NO = 8 FIRST_NAME = Leslie LAST_NAME = Johnson PHONE_EXT = 410 HIRE_DATE = 05/4/1989 DEPT_NO = 180 JOB_CODE = Mktg JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 64635 FULL_NAME = Johnson, Leslie Row No = 5 EMP_NO = 9 FIRST_NAME = Phil LAST_NAME = Forest PHONE_EXT = 229 HIRE_DATE = 17/4/1989 DEPT_NO = 622 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 75060 FULL_NAME = Forest, Phil Row No = 6 EMP_NO = 11 FIRST_NAME = K. J. LAST_NAME = Weston PHONE_EXT = 34 HIRE_DATE = 17/1/1990 DEPT_NO = 130 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 86292.94 FULL_NAME = Weston, K. J. Row No = 7 EMP_NO = 12 FIRST_NAME = Terri LAST_NAME = Lee PHONE_EXT = 256 HIRE_DATE = 01/5/1990 DEPT_NO = 000 JOB_CODE = Admin JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 53793 FULL_NAME = Lee, Terri Row No = 8 EMP_NO = 14 FIRST_NAME = Stewart LAST_NAME = Hall PHONE_EXT = 227 HIRE_DATE = 04/6/1990 DEPT_NO = 900 JOB_CODE = Finan JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 69482.63 FULL_NAME = Hall, Stewart Row No = 9 EMP_NO = 15 FIRST_NAME = Katherine LAST_NAME = Young PHONE_EXT = 231 HIRE_DATE = 14/6/1990 DEPT_NO = 623 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 67241.25 FULL_NAME = Young, Katherine Row No = 10 EMP_NO = 20 FIRST_NAME = Chris LAST_NAME = Papadopoulos PHONE_EXT = 887 HIRE_DATE = 01/1/1990 DEPT_NO = 671 JOB_CODE = Mngr JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 89655 FULL_NAME = Papadopoulos, Chris Row No = 11 EMP_NO = 24 FIRST_NAME = Pete LAST_NAME = Fisher PHONE_EXT = 888 HIRE_DATE = 12/9/1990 DEPT_NO = 671 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 81810.19 FULL_NAME = Fisher, Pete Row No = 12 EMP_NO = 28 FIRST_NAME = Ann LAST_NAME = Bennet PHONE_EXT = 5 HIRE_DATE = 01/2/1991 DEPT_NO = 120 JOB_CODE = Admin JOB_GRADE = 5 JOB_COUNTRY = England SALARY = 22935 FULL_NAME = Bennet, Ann Row No = 13 EMP_NO = 29 FIRST_NAME = Roger LAST_NAME = De Souza PHONE_EXT = 288 HIRE_DATE = 18/2/1991 DEPT_NO = 623 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 69482.63 FULL_NAME = De Souza, Roger Row No = 14 EMP_NO = 34 FIRST_NAME = Janet LAST_NAME = Baldwin PHONE_EXT = 2 HIRE_DATE = 21/3/1991 DEPT_NO = 110 JOB_CODE = Sales JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 61637.81 FULL_NAME = Baldwin, Janet Row No = 15 EMP_NO = 36 FIRST_NAME = Roger LAST_NAME = Reeves PHONE_EXT = 6 HIRE_DATE = 25/4/1991 DEPT_NO = 120 JOB_CODE = Sales JOB_GRADE = 3 JOB_COUNTRY = England SALARY = 33620.63 FULL_NAME = Reeves, Roger Row No = 16 EMP_NO = 37 FIRST_NAME = Willie LAST_NAME = Stansbury PHONE_EXT = 7 HIRE_DATE = 25/4/1991 DEPT_NO = 120 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = England SALARY = 39224.06 FULL_NAME = Stansbury, Willie Row No = 17 EMP_NO = 44 FIRST_NAME = Leslie LAST_NAME = Phong PHONE_EXT = 216 HIRE_DATE = 03/6/1991 DEPT_NO = 623 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 56034.38 FULL_NAME = Phong, Leslie Row No = 18 EMP_NO = 45 FIRST_NAME = Ashok LAST_NAME = Ramanathan PHONE_EXT = 209 HIRE_DATE = 01/8/1991 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 80689.5 FULL_NAME = Ramanathan, Ashok Row No = 19 EMP_NO = 46 FIRST_NAME = Walter LAST_NAME = Steadman PHONE_EXT = 210 HIRE_DATE = 09/8/1991 DEPT_NO = 900 JOB_CODE = CFO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 116100 FULL_NAME = Steadman, Walter Row No = 20 EMP_NO = 52 FIRST_NAME = Carol LAST_NAME = Nordstrom PHONE_EXT = 420 HIRE_DATE = 02/10/1991 DEPT_NO = 180 JOB_CODE = PRel JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 42742.5 FULL_NAME = Nordstrom, Carol Row No = 21 EMP_NO = 61 FIRST_NAME = Luke LAST_NAME = Leung PHONE_EXT = 3 HIRE_DATE = 18/2/1992 DEPT_NO = 110 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 68805 FULL_NAME = Leung, Luke Row No = 22 EMP_NO = 65 FIRST_NAME = Sue Anne LAST_NAME = O'Brien PHONE_EXT = 877 HIRE_DATE = 23/3/1992 DEPT_NO = 670 JOB_CODE = Admin JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 31275 FULL_NAME = O'Brien, Sue Anne Row No = 23 EMP_NO = 71 FIRST_NAME = Jennifer M. LAST_NAME = Burbank PHONE_EXT = 289 HIRE_DATE = 15/4/1992 DEPT_NO = 622 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 53167.5 FULL_NAME = Burbank, Jennifer M. Row No = 24 EMP_NO = 72 FIRST_NAME = Claudia LAST_NAME = Sutherland PHONE_EXT = NULL HIRE_DATE = 20/4/1992 DEPT_NO = 140 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Canada SALARY = 100914 FULL_NAME = Sutherland, Claudia Row No = 25 EMP_NO = 83 FIRST_NAME = Dana LAST_NAME = Bishop PHONE_EXT = 290 HIRE_DATE = 01/6/1992 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 62550 FULL_NAME = Bishop, Dana Row No = 26 EMP_NO = 85 FIRST_NAME = Mary S. LAST_NAME = MacDonald PHONE_EXT = 477 HIRE_DATE = 01/6/1992 DEPT_NO = 100 JOB_CODE = VP JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 111262.5 FULL_NAME = MacDonald, Mary S. Row No = 27 EMP_NO = 94 FIRST_NAME = Randy LAST_NAME = Williams PHONE_EXT = 892 HIRE_DATE = 08/8/1992 DEPT_NO = 672 JOB_CODE = Mngr JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 56295 FULL_NAME = Williams, Randy Row No = 28 EMP_NO = 105 FIRST_NAME = Oliver H. LAST_NAME = Bender PHONE_EXT = 255 HIRE_DATE = 08/10/1992 DEPT_NO = 000 JOB_CODE = CEO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 212850 FULL_NAME = Bender, Oliver H. Row No = 29 EMP_NO = 107 FIRST_NAME = Kevin LAST_NAME = Cook PHONE_EXT = 894 HIRE_DATE = 01/2/1993 DEPT_NO = 670 JOB_CODE = Dir JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 111262.5 FULL_NAME = Cook, Kevin Row No = 30 EMP_NO = 109 FIRST_NAME = Kelly LAST_NAME = Brown PHONE_EXT = 202 HIRE_DATE = 04/2/1993 DEPT_NO = 600 JOB_CODE = Admin JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 27000 FULL_NAME = Brown, Kelly Row No = 31 EMP_NO = 110 FIRST_NAME = Yuki LAST_NAME = Ichida PHONE_EXT = 22 HIRE_DATE = 04/2/1993 DEPT_NO = 115 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = Japan SALARY = 6000000 FULL_NAME = Ichida, Yuki Row No = 32 EMP_NO = 113 FIRST_NAME = Mary LAST_NAME = Page PHONE_EXT = 845 HIRE_DATE = 12/4/1993 DEPT_NO = 671 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 48000 FULL_NAME = Page, Mary Row No = 33 EMP_NO = 114 FIRST_NAME = Bill LAST_NAME = Parker PHONE_EXT = 247 HIRE_DATE = 01/6/1993 DEPT_NO = 623 JOB_CODE = Eng JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 35000 FULL_NAME = Parker, Bill Row No = 34 EMP_NO = 118 FIRST_NAME = Takashi LAST_NAME = Yamamoto PHONE_EXT = 23 HIRE_DATE = 01/7/1993 DEPT_NO = 115 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Japan SALARY = 7480000 FULL_NAME = Yamamoto, Takashi Row No = 35 EMP_NO = 121 FIRST_NAME = Roberto LAST_NAME = Ferrari PHONE_EXT = 1 HIRE_DATE = 12/7/1993 DEPT_NO = 125 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Italy SALARY = 33000 FULL_NAME = Ferrari, Roberto Row No = 36 EMP_NO = 127 FIRST_NAME = Michael LAST_NAME = Yanowski PHONE_EXT = 492 HIRE_DATE = 09/8/1993 DEPT_NO = 100 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 44000 FULL_NAME = Yanowski, Michael Row No = 37 EMP_NO = 134 FIRST_NAME = Jacques LAST_NAME = Glon PHONE_EXT = NULL HIRE_DATE = 23/8/1993 DEPT_NO = 123 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = France SALARY = 38500 FULL_NAME = Glon, Jacques Row No = 38 EMP_NO = 136 FIRST_NAME = Scott LAST_NAME = Johnson PHONE_EXT = 265 HIRE_DATE = 13/9/1993 DEPT_NO = 623 JOB_CODE = Doc JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 60000 FULL_NAME = Johnson, Scott Row No = 39 EMP_NO = 138 FIRST_NAME = T.J. LAST_NAME = Green PHONE_EXT = 218 HIRE_DATE = 01/11/1993 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 36000 FULL_NAME = Green, T.J. Row No = 40 EMP_NO = 141 FIRST_NAME = Pierre LAST_NAME = Osborne PHONE_EXT = NULL HIRE_DATE = 03/1/1994 DEPT_NO = 121 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = Switzerland SALARY = 110000 FULL_NAME = Osborne, Pierre Row No = 41 EMP_NO = 144 FIRST_NAME = John LAST_NAME = Montgomery PHONE_EXT = 820 HIRE_DATE = 30/3/1994 DEPT_NO = 672 JOB_CODE = Eng JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 35000 FULL_NAME = Montgomery, John Row No = 42 EMP_NO = 145 FIRST_NAME = Mark LAST_NAME = Guckenheimer PHONE_EXT = 221 HIRE_DATE = 02/5/1994 DEPT_NO = 622 JOB_CODE = Eng JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 32000 FULL_NAME = Guckenheimer, Mark Rows printed = 42 ------------------------------------------------------ Running Test 13: Open and read from Employee Database with ISQLMonitor Row No = 1 EMP_NO = 12 FIRST_NAME = Terri LAST_NAME = Lee PHONE_EXT = 256 HIRE_DATE = 01/5/1990 DEPT_NO = 000 JOB_CODE = Admin JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 53793 FULL_NAME = Lee, Terri DEPT_PATH = Corporate Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset = UTF8 Codepage = 65001) Row No = 2 EMP_NO = 105 FIRST_NAME = Oliver H. LAST_NAME = Bender PHONE_EXT = 255 HIRE_DATE = 08/10/1992 DEPT_NO = 000 JOB_CODE = CEO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 212850 FULL_NAME = Bender, Oliver H. DEPT_PATH = Corporate Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset = UTF8 Codepage = 65001) Rows printed = 2 Current memory = 19,660,752 Delta memory = 14,112 Max memory = 19,783,088 Elapsed time= 0.005 sec Cpu = 0.000 sec Buffers = 2048 Reads = 2 Writes = 0 Fetches = 9 Selects = 0 Inserts = 0 Updates = 0 Deletes = 0 Reconnect Row No = 1 EMP_NO = 12 FIRST_NAME = Terri LAST_NAME = Lee PHONE_EXT = 256 HIRE_DATE = 01/5/1990 DEPT_NO = 000 JOB_CODE = Admin JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 53793 FULL_NAME = Lee, Terri DEPT_PATH = Corporate Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset = UTF8 Codepage = 65001) Row No = 2 EMP_NO = 105 FIRST_NAME = Oliver H. LAST_NAME = Bender PHONE_EXT = 255 HIRE_DATE = 08/10/1992 DEPT_NO = 000 JOB_CODE = CEO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 212850 FULL_NAME = Bender, Oliver H. DEPT_PATH = Corporate Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset = UTF8 Codepage = 65001) Rows printed = 2 35 ISQL Monitor Messages Received (Monitoring Disabled) 35 ISQL Monitor Messages written *Monitor* [Application: IBX Test Suite] Test_Database_13: [Connect] *Monitor* [Application: IBX Test Suite] Test_Transaction_13: [Start transaction] *Monitor* [Application: IBX Test Suite] : [Prepare] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO Plan: Select Expression -> First N Records -> Nested Loop Join (inner) -> Recursion -> Filter -> Table "DEPARTMENT" as "DEPTS DEPARTMENT" Access By ID -> Bitmap -> Index "RDB$FOREIGN6" Range Scan (full match) -> Filter -> Table "DEPARTMENT" as "DEPTS D" Access By ID -> Bitmap -> Index "RDB$FOREIGN6" Range Scan (full match) -> Filter -> Table "EMPLOYEE" as "A" Access By ID -> Bitmap -> Index "RDB$FOREIGN8" Range Scan (full match) *Monitor* [Application: IBX Test Suite] : [Start transaction] *Monitor* [Application: IBX Test Suite] : [Prepare] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) Plan: Select Expression -> Filter -> Nested Loop Join (outer) -> Nested Loop Join (inner) -> Filter -> Table "RDB$RELATION_FIELDS" as "R" Access By ID -> Bitmap -> Index "RDB$INDEX_4" Range Scan (full match) -> Filter -> Table "RDB$FIELDS" as "F" Access By ID -> Bitmap -> Index "RDB$INDEX_2" Unique Scan -> Filter -> Nested Loop Join (inner) -> Filter -> Table "RDB$RELATION_CONSTRAINTS" as "X C" Access By ID -> Bitmap -> Index "RDB$INDEX_42" Range Scan (full match) -> Filter -> Table "RDB$INDEX_SEGMENTS" as "X S" Access By ID -> Bitmap -> Index "RDB$INDEX_6" Range Scan (full match) *Monitor* [Application: IBX Test Suite] : [Execute] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) RELATION = EMPLOYEE *Monitor* [Application: IBX Test Suite] : [Fetch] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) *Monitor* [Application: IBX Test Suite] : [Fetch] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) *Monitor* [Application: IBX Test Suite] : [Fetch] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) *Monitor* [Application: IBX Test Suite] : [Fetch] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) SEOFReached *Monitor* [Application: IBX Test Suite] : [Commit (Hard commit)] *Monitor* [Application: IBX Test Suite] : [Execute] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO *Monitor* [Application: IBX Test Suite] : [Fetch] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO *Monitor* [Application: IBX Test Suite] : [Fetch] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO *Monitor* [Application: IBX Test Suite] : [Fetch] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO SEOFReached *Monitor* [Application: IBX Test Suite] Test_Transaction_13: [Commit (Hard commit)] *Monitor* [Application: IBX Test Suite] Test_Database_13: [Disconnect] *Monitor* [Application: IBX Test Suite] Test_Database_13: [Connect] *Monitor* [Application: IBX Test Suite] Test_Transaction_13: [Start transaction] *Monitor* [Application: IBX Test Suite] : [Prepare] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO Plan: Select Expression -> First N Records -> Nested Loop Join (inner) -> Recursion -> Filter -> Table "DEPARTMENT" as "DEPTS DEPARTMENT" Access By ID -> Bitmap -> Index "RDB$FOREIGN6" Range Scan (full match) -> Filter -> Table "DEPARTMENT" as "DEPTS D" Access By ID -> Bitmap -> Index "RDB$FOREIGN6" Range Scan (full match) -> Filter -> Table "EMPLOYEE" as "A" Access By ID -> Bitmap -> Index "RDB$FOREIGN8" Range Scan (full match) *Monitor* [Application: IBX Test Suite] : [Start transaction] *Monitor* [Application: IBX Test Suite] : [Prepare] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) Plan: Select Expression -> Filter -> Nested Loop Join (outer) -> Nested Loop Join (inner) -> Filter -> Table "RDB$RELATION_FIELDS" as "R" Access By ID -> Bitmap -> Index "RDB$INDEX_4" Range Scan (full match) -> Filter -> Table "RDB$FIELDS" as "F" Access By ID -> Bitmap -> Index "RDB$INDEX_2" Unique Scan -> Filter -> Nested Loop Join (inner) -> Filter -> Table "RDB$RELATION_CONSTRAINTS" as "X C" Access By ID -> Bitmap -> Index "RDB$INDEX_42" Range Scan (full match) -> Filter -> Table "RDB$INDEX_SEGMENTS" as "X S" Access By ID -> Bitmap -> Index "RDB$INDEX_6" Range Scan (full match) *Monitor* [Application: IBX Test Suite] : [Execute] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) RELATION = EMPLOYEE *Monitor* [Application: IBX Test Suite] : [Fetch] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) *Monitor* [Application: IBX Test Suite] : [Fetch] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) *Monitor* [Application: IBX Test Suite] : [Fetch] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) *Monitor* [Application: IBX Test Suite] : [Fetch] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) SEOFReached *Monitor* [Application: IBX Test Suite] : [Commit (Hard commit)] *Monitor* [Application: IBX Test Suite] : [Execute] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO *Monitor* [Application: IBX Test Suite] : [Fetch] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO *Monitor* [Application: IBX Test Suite] : [Fetch] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO *Monitor* [Application: IBX Test Suite] : [Fetch] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO SEOFReached *Monitor* [Application: IBX Test Suite] Test_Transaction_13: [Commit (Hard commit)] *Monitor* [Application: IBX Test Suite] Test_Database_13: [Disconnect] *Monitor* [Application: IBX Test Suite] Monitoring Disabled 35 ISQL Monitor Messages Received ------------------------------------------------------ Running Test 14: Open and read from Employee Database with ISQLMonitor and external monitor Row No = 1 EMP_NO = 12 FIRST_NAME = Terri LAST_NAME = Lee PHONE_EXT = 256 HIRE_DATE = 01/5/1990 DEPT_NO = 000 JOB_CODE = Admin JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 53793 FULL_NAME = Lee, Terri DEPT_PATH = Corporate Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset = UTF8 Codepage = 65001) Row No = 2 EMP_NO = 105 FIRST_NAME = Oliver H. LAST_NAME = Bender PHONE_EXT = 255 HIRE_DATE = 08/10/1992 DEPT_NO = 000 JOB_CODE = CEO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 212850 FULL_NAME = Bender, Oliver H. DEPT_PATH = Corporate Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset = UTF8 Codepage = 65001) Rows printed = 2 Current memory = 19,660,752 Delta memory = 14,112 Max memory = 19,783,088 Elapsed time= 0.102 sec Cpu = 0.010 sec Buffers = 2048 Reads = 2 Writes = 0 Fetches = 9 Selects = 0 Inserts = 0 Updates = 0 Deletes = 0 Reconnect Row No = 1 EMP_NO = 12 FIRST_NAME = Terri LAST_NAME = Lee PHONE_EXT = 256 HIRE_DATE = 01/5/1990 DEPT_NO = 000 JOB_CODE = Admin JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 53793 FULL_NAME = Lee, Terri DEPT_PATH = Corporate Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset = UTF8 Codepage = 65001) Row No = 2 EMP_NO = 105 FIRST_NAME = Oliver H. LAST_NAME = Bender PHONE_EXT = 255 HIRE_DATE = 08/10/1992 DEPT_NO = 000 JOB_CODE = CEO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 212850 FULL_NAME = Bender, Oliver H. DEPT_PATH = Corporate Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset = UTF8 Codepage = 65001) Rows printed = 2 35 ISQL Monitor Messages written *Monitor* [Application: IBX Test Suite] Test_Database_14: [Connect] *Monitor* [Application: IBX Test Suite] Test_Transaction_14: [Start transaction] *Monitor* [Application: IBX Test Suite] : [Prepare] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO Plan: Select Expression -> First N Records -> Nested Loop Join (inner) -> Recursion -> Filter -> Table "DEPARTMENT" as "DEPTS DEPARTMENT" Access By ID -> Bitmap -> Index "RDB$FOREIGN6" Range Scan (full match) -> Filter -> Table "DEPARTMENT" as "DEPTS D" Access By ID -> Bitmap -> Index "RDB$FOREIGN6" Range Scan (full match) -> Filter -> Table "EMPLOYEE" as "A" Access By ID -> Bitmap -> Index "RDB$FOREIGN8" Range Scan (full match) *Monitor* [Application: IBX Test Suite] : [Start transaction] *Monitor* [Application: IBX Test Suite] : [Prepare] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) Plan: Select Expression -> Filter -> Nested Loop Join (outer) -> Nested Loop Join (inner) -> Filter -> Table "RDB$RELATION_FIELDS" as "R" Access By ID -> Bitmap -> Index "RDB$INDEX_4" Range Scan (full match) -> Filter -> Table "RDB$FIELDS" as "F" Access By ID -> Bitmap -> Index "RDB$INDEX_2" Unique Scan -> Filter -> Nested Loop Join (inner) -> Filter -> Table "RDB$RELATION_CONSTRAINTS" as "X C" Access By ID -> Bitmap -> Index "RDB$INDEX_42" Range Scan (full match) -> Filter -> Table "RDB$INDEX_SEGMENTS" as "X S" Access By ID -> Bitmap -> Index "RDB$INDEX_6" Range Scan (full match) *Monitor* [Application: IBX Test Suite] : [Execute] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) RELATION = EMPLOYEE *Monitor* [Application: IBX Test Suite] : [Fetch] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) *Monitor* [Application: IBX Test Suite] : [Fetch] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) *Monitor* [Application: IBX Test Suite] : [Fetch] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) *Monitor* [Application: IBX Test Suite] : [Fetch] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) SEOFReached *Monitor* [Application: IBX Test Suite] : [Commit (Hard commit)] *Monitor* [Application: IBX Test Suite] : [Execute] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO *Monitor* [Application: IBX Test Suite] : [Fetch] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO *Monitor* [Application: IBX Test Suite] : [Fetch] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO *Monitor* [Application: IBX Test Suite] : [Fetch] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO SEOFReached *Monitor* [Application: IBX Test Suite] Test_Transaction_14: [Commit (Hard commit)] *Monitor* [Application: IBX Test Suite] Test_Database_14: [Disconnect] *Monitor* [Application: IBX Test Suite] Test_Database_14: [Connect] *Monitor* [Application: IBX Test Suite] Test_Transaction_14: [Start transaction] *Monitor* [Application: IBX Test Suite] : [Prepare] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO Plan: Select Expression -> First N Records -> Nested Loop Join (inner) -> Recursion -> Filter -> Table "DEPARTMENT" as "DEPTS DEPARTMENT" Access By ID -> Bitmap -> Index "RDB$FOREIGN6" Range Scan (full match) -> Filter -> Table "DEPARTMENT" as "DEPTS D" Access By ID -> Bitmap -> Index "RDB$FOREIGN6" Range Scan (full match) -> Filter -> Table "EMPLOYEE" as "A" Access By ID -> Bitmap -> Index "RDB$FOREIGN8" Range Scan (full match) *Monitor* [Application: IBX Test Suite] : [Start transaction] *Monitor* [Application: IBX Test Suite] : [Prepare] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) Plan: Select Expression -> Filter -> Nested Loop Join (outer) -> Nested Loop Join (inner) -> Filter -> Table "RDB$RELATION_FIELDS" as "R" Access By ID -> Bitmap -> Index "RDB$INDEX_4" Range Scan (full match) -> Filter -> Table "RDB$FIELDS" as "F" Access By ID -> Bitmap -> Index "RDB$INDEX_2" Unique Scan -> Filter -> Nested Loop Join (inner) -> Filter -> Table "RDB$RELATION_CONSTRAINTS" as "X C" Access By ID -> Bitmap -> Index "RDB$INDEX_42" Range Scan (full match) -> Filter -> Table "RDB$INDEX_SEGMENTS" as "X S" Access By ID -> Bitmap -> Index "RDB$INDEX_6" Range Scan (full match) *Monitor* [Application: IBX Test Suite] : [Execute] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) RELATION = EMPLOYEE *Monitor* [Application: IBX Test Suite] : [Fetch] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) *Monitor* [Application: IBX Test Suite] : [Fetch] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) *Monitor* [Application: IBX Test Suite] : [Fetch] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) *Monitor* [Application: IBX Test Suite] : [Fetch] Select F.RDB$COMPUTED_BLR,F.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME, X.RDB$CONSTRAINT_TYPE, R.RDB$IDENTITY_TYPE from RDB$RELATION_FIELDS R JOIN RDB$FIELDS F on R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME Left Outer Join (Select C.RDB$RELATION_NAME, S.RDB$FIELD_NAME, C.RDB$CONSTRAINT_TYPE From RDB$RELATION_CONSTRAINTS C JOIN RDB$INDEX_SEGMENTS S On C.RDB$INDEX_NAME = S.RDB$INDEX_NAME Where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') X On X.RDB$RELATION_NAME = R.RDB$RELATION_NAME and X.RDB$FIELD_NAME = R.RDB$FIELD_NAME where R.RDB$RELATION_NAME = :RELATION and ( F.RDB$COMPUTED_BLR is not NULL or F.RDB$DEFAULT_VALUE is not NULL or R.RDB$IDENTITY_TYPE is not NULL or X.RDB$CONSTRAINT_TYPE is not null) SEOFReached *Monitor* [Application: IBX Test Suite] : [Commit (Hard commit)] *Monitor* [Application: IBX Test Suite] : [Execute] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO *Monitor* [Application: IBX Test Suite] : [Fetch] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO *Monitor* [Application: IBX Test Suite] : [Fetch] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO *Monitor* [Application: IBX Test Suite] : [Fetch] with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )Select First 2 A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE,A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO SEOFReached *Monitor* [Application: IBX Test Suite] Test_Transaction_14: [Commit (Hard commit)] *Monitor* [Application: IBX Test Suite] Test_Database_14: [Disconnect] *Monitor* [Application: IBX Test Suite] Monitoring Disabled 35 ISQL Monitor Messages Received ------------------------------------------------------ Running Test 15: IBStored Proc with packages /* * The contents of this file are subject to the Initial * Developer's Public License Version 1.0 (the "License"); * you may not use this file except in compliance with the * License. You may obtain a copy of the License at * http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_idpl. * * Software distributed under the License is distributed AS IS, * WITHOUT WARRANTY OF ANY KIND, either express or implied. * See the License for the specific language governing rights * and limitations under the License. * * The Original Code was created by Adriano dos Santos Fernandes * for the Firebird Open Source RDBMS project. * * Copyright (c) 2009 Adriano dos Santos Fernandes * and all contributors signed below. * * All Rights Reserved. * Contributor(s): ______________________________________. */ create sequence fb$out_seq; create domain fb$out_type as blob sub_type text character set utf8 not null; create global temporary table fb$out_table ( line_num int, content fb$out_type ) on commit preserve rows; set term !; create or alter package fb$out as begin procedure enable; procedure disable; procedure put_line (line fb$out_type); procedure clear; procedure get_lines returns (lines fb$out_type); end! set term ;! grant all on table fb$out_table to package fb$out; grant execute on package fb$out to public; /* * The contents of this file are subject to the Initial * Developer's Public License Version 1.0 (the "License"); * you may not use this file except in compliance with the * License. You may obtain a copy of the License at * http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_idpl. * * Software distributed under the License is distributed AS IS, * WITHOUT WARRANTY OF ANY KIND, either express or implied. * See the License for the specific language governing rights * and limitations under the License. * * The Original Code was created by Adriano dos Santos Fernandes * for the Firebird Open Source RDBMS project. * * Copyright (c) 2009 Adriano dos Santos Fernandes * and all contributors signed below. * * All Rights Reserved. * Contributor(s): ______________________________________. */ set term !; recreate package body fb$out as begin procedure enable as begin rdb$set_context('USER_SESSION', 'fb$out.enabled', '1'); end procedure disable as begin rdb$set_context('USER_SESSION', 'fb$out.enabled', null); end procedure put_line (line fb$out_type) as begin if (rdb$get_context('USER_SESSION', 'fb$out.enabled') = '1') then begin in autonomous transaction do begin insert into fb$out_table (line_num, content) values (next value for fb$out_seq, :line); end end end procedure clear as begin in autonomous transaction do delete from fb$out_table; end procedure get_lines returns (lines fb$out_type) as declare line fb$out_type; begin lines = ''; in autonomous transaction do begin for select content from fb$out_table order by line_num into line do begin if (octet_length(lines) > 0) then lines = lines || ascii_char(13) || ascii_char(10); lines = lines || :line; end end execute procedure clear; end end! set term ;! /* * The contents of this file are subject to the Initial * Developer's Public License Version 1.0 (the "License"); * you may not use this file except in compliance with the * License. You may obtain a copy of the License at * http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_idpl. * * Software distributed under the License is distributed AS IS, * WITHOUT WARRANTY OF ANY KIND, either express or implied. * See the License for the specific language governing rights * and limitations under the License. * * The Original Code was created by Adriano dos Santos Fernandes * for the Firebird Open Source RDBMS project. * * Copyright (c) 2009 Adriano dos Santos Fernandes * and all contributors signed below. * * All Rights Reserved. * Contributor(s): ______________________________________. */ /* * This example demonstrate packages creating and using FB$OUT, a package that write and read * messages in a session and is suitable for debug PSQL code. */ set names utf8; /*create database 'test.fdb'; input 'fbout-header.sql'; input 'fbout-body.sql';*/ set term !; create procedure test as declare i integer; begin execute procedure fb$out.put_line ('um'); execute procedure fb$out.put_line ('dois'); execute procedure fb$out.enable; execute procedure fb$out.put_line ('três'); execute procedure fb$out.put_line ('quatro'); execute procedure fb$out.disable; execute procedure fb$out.put_line ('cinco'); execute procedure fb$out.enable; execute procedure fb$out.put_line ('seis'); begin i = 'a'; execute procedure fb$out.put_line ('sete'); when any do begin end end end! set term ;! grant execute on procedure test to public; /*execute procedure test; execute procedure fb$out.get_lines; execute procedure fb$out.get_lines;*/ ------------------------------------------------------- Exec TEST proc Show FB$OUT_TABLE Row No = 1 LINE_NUM = 1 CONTENT (Charset = UTF8 Codepage = 65001) três Row No = 2 LINE_NUM = 2 CONTENT (Charset = UTF8 Codepage = 65001) quatro Row No = 3 LINE_NUM = 3 CONTENT (Charset = UTF8 Codepage = 65001) seis Rows printed = 3 três quatro seis ------------------------------------------------------ Running Test 16: TIBTable in master/detail relationship Department No 000 Selected Row No = 1 EMP_NO = 12 FIRST_NAME = Terri LAST_NAME = Lee PHONE_EXT = 256 HIRE_DATE = 01/5/1990 DEPT_NO = 000 JOB_CODE = Admin JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 53793 FULL_NAME = Lee, Terri Row No = 2 EMP_NO = 105 FIRST_NAME = Oliver H. LAST_NAME = Bender PHONE_EXT = 255 HIRE_DATE = 08/10/1992 DEPT_NO = 000 JOB_CODE = CEO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 212850 FULL_NAME = Bender, Oliver H. Rows printed = 2 Department No 600 Selected Row No = 1 EMP_NO = 2 FIRST_NAME = Robert LAST_NAME = Nelson PHONE_EXT = 250 HIRE_DATE = 28/12/1988 DEPT_NO = 600 JOB_CODE = VP JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 105900 FULL_NAME = Nelson, Robert Row No = 2 EMP_NO = 109 FIRST_NAME = Kelly LAST_NAME = Brown PHONE_EXT = 202 HIRE_DATE = 04/2/1993 DEPT_NO = 600 JOB_CODE = Admin JOB_GRADE = 5 JOB_COUNTRY = USA SALARY = 27000 FULL_NAME = Brown, Kelly Rows printed = 2 Department No 621 Selected Row No = 1 EMP_NO = 4 FIRST_NAME = Bruce LAST_NAME = Young PHONE_EXT = 233 HIRE_DATE = 28/12/1988 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 97500 FULL_NAME = Young, Bruce Row No = 2 EMP_NO = 45 FIRST_NAME = Ashok LAST_NAME = Ramanathan PHONE_EXT = 209 HIRE_DATE = 01/8/1991 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 80689.5 FULL_NAME = Ramanathan, Ashok Row No = 3 EMP_NO = 83 FIRST_NAME = Dana LAST_NAME = Bishop PHONE_EXT = 290 HIRE_DATE = 01/6/1992 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 3 JOB_COUNTRY = USA SALARY = 62550 FULL_NAME = Bishop, Dana Row No = 4 EMP_NO = 138 FIRST_NAME = T.J. LAST_NAME = Green PHONE_EXT = 218 HIRE_DATE = 01/11/1993 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 36000 FULL_NAME = Green, T.J. Rows printed = 4 Update Row with Computed Field EMP_NO = 138 FIRST_NAME = Boris LAST_NAME = Green PHONE_EXT = 218 HIRE_DATE = 01/11/1993 DEPT_NO = 621 JOB_CODE = Eng JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 36000 FULL_NAME = Green, Boris ------------------------------------------------------ Running Test 17: TIBDataset Tests Creating Database from resources/Test17.sql Create Table IBDataSetTest ( KeyField Integer not null, PlainText VarChar(128), TextAndKey Computed By (KeyField || ': ' || PlainText), ServerSideText VarChar(256), Primary Key (KeyField) ); Create Generator AGenerator; Create Trigger BeforeInsertTest for IBDataSetTest Before Insert or Update As Begin new.ServerSideText = new.KeyField || ' - ' || new.PlainText; End FIBDataSet1: Simple Append KEYFIELD = 1 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 1: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 1 - This is a test (Charset = UTF8 Codepage = 65001) After Refresh KEYFIELD = 1 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 1: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 1 - This is a test (Charset = UTF8 Codepage = 65001) Append and Update KEYFIELD = 2 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 2: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 2 - This is another test (Charset = UTF8 Codepage = 65001) KEYFIELD = 2 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 2: This is the update test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 2 - This is the update test (Charset = UTF8 Codepage = 65001) Show whole Dataset Row No = 1 KEYFIELD = 1 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 1: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 1 - This is a test (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 2 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 2: This is the update test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 2 - This is the update test (Charset = UTF8 Codepage = 65001) Rows printed = 2 Now delete the first row Row No = 1 KEYFIELD = 2 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 2: This is the update test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 2 - This is the update test (Charset = UTF8 Codepage = 65001) Rows printed = 1 On Post KeyField Assignment KEYFIELD = NULL PLAINTEXT = On Post KeyField test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = NULL SERVERSIDETEXT = NULL Row data after post KEYFIELD = 3 PLAINTEXT = On Post KeyField test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 3: On Post KeyField test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 3 - On Post KeyField test (Charset = UTF8 Codepage = 65001) Catch a Post Error - duplicate key Post Error Called: Engine Code: 335544665 violation of PRIMARY or UNIQUE KEY constraint "INTEG_2" on table "IBDATASETTEST" -Problematic key value is ("KEYFIELD" = 3) Exception handled: Engine Code: 335544665 violation of PRIMARY or UNIQUE KEY constraint "INTEG_2" on table "IBDATASETTEST" -Problematic key value is ("KEYFIELD" = 3) FIBDataSet1: Simple Append with automatic posting on close Row No = 1 KEYFIELD = 5 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 5: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 5 - This is a test (Charset = UTF8 Codepage = 65001) Rows printed = 1 FIBDataSet1: Simple Append with discard on close Dataset Empty Rows printed = 0 Unidirectional editing FIBDataSet1: Simple Append - unidirectional BOF = FALSE, EOF = FALSE KEYFIELD = 7 PLAINTEXT = This is a test - unidirectional (Charset = UTF8 Codepage = 65001) TEXTANDKEY = NULL SERVERSIDETEXT = NULL BOF = FALSE, EOF = FALSE KEYFIELD = 7 PLAINTEXT = This is a test - unidirectional (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 7: This is a test - unidirectional (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 7 - This is a test - unidirectional (Charset = UTF8 Codepage = 65001) After Refresh - unidirectional KEYFIELD = 7 PLAINTEXT = This is a test - unidirectional (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 7: This is a test - unidirectional (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 7 - This is a test - unidirectional (Charset = UTF8 Codepage = 65001) Record Count = 1 Insert and Update KEYFIELD = 8 PLAINTEXT = This is another test - unidirectional (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 8: This is another test - unidirectional (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 8 - This is another test - unidirectional (Charset = UTF8 Codepage = 65001) KEYFIELD = 8 PLAINTEXT = This is the update test - unidirectional (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 8: This is the update test - unidirectional (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 8 - This is the update test - unidirectional (Charset = UTF8 Codepage = 65001) Now delete the first row - unidirectional with Record Count = 2 Show Current Row KEYFIELD = 8 PLAINTEXT = This is the update test - unidirectional (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 8: This is the update test - unidirectional (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 8 - This is the update test - unidirectional (Charset = UTF8 Codepage = 65001) Record Count = 1 Ensure dataset saved to database Row No = 1 KEYFIELD = 8 PLAINTEXT = This is the update test - unidirectional (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 8: This is the update test - unidirectional (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 8 - This is the update test - unidirectional (Charset = UTF8 Codepage = 65001) Rows printed = 1 ================================== Dataset Event BeforeOpen: State = dsInactive Dataset Event AfterOpen: State = dsBrowse FIBDataSet2: Simple Append Dataset Event BeforeInsert: State = dsBrowse Dataset Event BeforeScroll: State = dsBrowse Dataset Event AfterInsert: State = dsInsert Dataset Event AfterScroll: State = dsInsert Dataset Event BeforePost: State = dsInsert Dataset Event AfterPost: State = dsBrowse KEYFIELD = 9 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 9: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = NULL Dataset Event BeforeRefresh: State = dsBrowse Dataset Event BeforeScroll: State = dsBrowse Dataset Event AfterScroll: State = dsBrowse Dataset Event BeforeScroll: State = dsBrowse Dataset Event AfterScroll: State = dsBrowse Dataset Event AfterRefresh: State = dsBrowse After Refresh KEYFIELD = 9 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 9: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 9 - This is a test (Charset = UTF8 Codepage = 65001) Append and Update Dataset Event BeforeInsert: State = dsBrowse Dataset Event BeforeScroll: State = dsBrowse Dataset Event AfterInsert: State = dsInsert Dataset Event AfterScroll: State = dsInsert Dataset Event BeforePost: State = dsInsert Dataset Event AfterPost: State = dsBrowse KEYFIELD = 10 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 10: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = NULL Dataset Event BeforeEdit: State = dsBrowse Dataset Event AfterEdit: State = dsEdit Dataset Event BeforePost: State = dsEdit Dataset Event AfterPost: State = dsBrowse KEYFIELD = 10 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 10: This is the update test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 10 - This is the update test (Charset = UTF8 Codepage = 65001) Now delete the first row Dataset Event BeforeScroll: State = dsBrowse Dataset Event AfterScroll: State = dsBrowse Row No = 1 KEYFIELD = 9 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 9: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 9 - This is a test (Charset = UTF8 Codepage = 65001) Dataset Event BeforeScroll: State = dsBrowse Dataset Event AfterScroll: State = dsBrowse Row No = 2 KEYFIELD = 10 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 10: This is the update test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 10 - This is the update test (Charset = UTF8 Codepage = 65001) Dataset Event BeforeScroll: State = dsBrowse Dataset Event AfterScroll: State = dsBrowse Rows printed = 2 Dataset Event BeforeScroll: State = dsBrowse Dataset Event AfterScroll: State = dsBrowse Dataset Event BeforeDelete: State = dsBrowse Dataset Event BeforeScroll: State = dsBrowse Delete Returning KEYFIELD = 9 Dataset Event AfterDelete: State = dsBrowse Dataset Event AfterScroll: State = dsBrowse Dataset Event BeforeScroll: State = dsBrowse Dataset Event AfterScroll: State = dsBrowse Row No = 1 KEYFIELD = 10 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 10: This is the update test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 10 - This is the update test (Charset = UTF8 Codepage = 65001) Dataset Event BeforeScroll: State = dsBrowse Dataset Event AfterScroll: State = dsBrowse Rows printed = 1 Validate Post OK Dataset Event BeforeInsert: State = dsBrowse Dataset Event BeforeScroll: State = dsBrowse Dataset Event AfterInsert: State = dsInsert Dataset Event AfterScroll: State = dsInsert Validate Post OK called Dataset Event BeforePost: State = dsInsert Dataset Event AfterPost: State = dsBrowse KEYFIELD = 11 PLAINTEXT = This is a validated Post (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 11: This is a validated Post (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = NULL Validate Post Cancel Dataset Event BeforeInsert: State = dsBrowse Dataset Event BeforeScroll: State = dsBrowse Dataset Event AfterInsert: State = dsInsert Dataset Event AfterScroll: State = dsInsert Validate Post Cancel called Dataset Event BeforeCancel: State = dsInsert Dataset Event AfterCancel: State = dsBrowse KEYFIELD = 11 PLAINTEXT = This is a validated Post (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 11: This is a validated Post (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = NULL FIBDataSet2: Simple Append with Forced Refresh Dataset Event BeforeInsert: State = dsBrowse Dataset Event BeforeScroll: State = dsBrowse Dataset Event AfterInsert: State = dsInsert Dataset Event AfterScroll: State = dsInsert Dataset Event BeforePost: State = dsInsert Dataset Event AfterPost: State = dsBrowse KEYFIELD = 12 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 12: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 12 - This is a test (Charset = UTF8 Codepage = 65001) Dataset Event BeforeClose: State = dsBrowse Dataset Event AfterClose: State = dsInactive ---------------------------------------------- FIBDataSet1: Insert at start Row No = 1 KEYFIELD = 15 PLAINTEXT = This is an insert test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 15: This is an insert test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 15 - This is an insert test (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 13 PLAINTEXT = Row 1 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 13: Row 1 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 13 - Row 1 (Charset = UTF8 Codepage = 65001) Row No = 3 KEYFIELD = 14 PLAINTEXT = Row 2 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 14: Row 2 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 14 - Row 2 (Charset = UTF8 Codepage = 65001) Rows printed = 3 Delete inserted row Row No = 1 KEYFIELD = 13 PLAINTEXT = Row 1 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 13: Row 1 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 13 - Row 1 (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 14 PLAINTEXT = Row 2 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 14: Row 2 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 14 - Row 2 (Charset = UTF8 Codepage = 65001) Rows printed = 2 Repeat Row No = 1 KEYFIELD = 16 PLAINTEXT = This is an insert test #1 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 16: This is an insert test #1 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 16 - This is an insert test #1 (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 13 PLAINTEXT = Row 1 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 13: Row 1 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 13 - Row 1 (Charset = UTF8 Codepage = 65001) Row No = 3 KEYFIELD = 14 PLAINTEXT = Row 2 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 14: Row 2 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 14 - Row 2 (Charset = UTF8 Codepage = 65001) Rows printed = 3 Delete inserted row Row No = 1 KEYFIELD = 13 PLAINTEXT = Row 1 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 13: Row 1 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 13 - Row 1 (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 14 PLAINTEXT = Row 2 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 14: Row 2 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 14 - Row 2 (Charset = UTF8 Codepage = 65001) Rows printed = 2 Row No = 1 KEYFIELD = 13 PLAINTEXT = Row 1 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 13: Row 1 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 13 - Row 1 (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 17 PLAINTEXT = This is an insert test #2 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 17: This is an insert test #2 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 17 - This is an insert test #2 (Charset = UTF8 Codepage = 65001) Row No = 3 KEYFIELD = 14 PLAINTEXT = Row 2 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 14: Row 2 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 14 - Row 2 (Charset = UTF8 Codepage = 65001) Rows printed = 3 Delete inserted row Row No = 1 KEYFIELD = 13 PLAINTEXT = Row 1 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 13: Row 1 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 13 - Row 1 (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 14 PLAINTEXT = Row 2 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 14: Row 2 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 14 - Row 2 (Charset = UTF8 Codepage = 65001) Rows printed = 2 Row No = 1 KEYFIELD = 13 PLAINTEXT = Row 1 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 13: Row 1 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 13 - Row 1 (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 18 PLAINTEXT = This is an insert test #3 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 18: This is an insert test #3 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 18 - This is an insert test #3 (Charset = UTF8 Codepage = 65001) Row No = 3 KEYFIELD = 14 PLAINTEXT = Row 2 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 14: Row 2 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 14 - Row 2 (Charset = UTF8 Codepage = 65001) Rows printed = 3 Delete inserted row Row No = 1 KEYFIELD = 13 PLAINTEXT = Row 1 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 13: Row 1 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 13 - Row 1 (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 14 PLAINTEXT = Row 2 (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 14: Row 2 (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 14 - Row 2 (Charset = UTF8 Codepage = 65001) Rows printed = 2 ------------------------------------------------------ Running Test 18: Cached Updates Creating Database from resources/Test18.sql Create Table IBDataSetTest ( KeyField Integer not null, PlainText VarChar(128), TextAndKey Computed By (KeyField || ': ' || PlainText), ServerSideText VarChar(256), Primary Key (KeyField) ); Create Generator AGenerator; Create Trigger BeforeInsertTest for IBDataSetTest Before Insert or Update As Begin new.ServerSideText = new.KeyField || ' - ' || new.PlainText; End Print Dataset for IBTestData Dataset Empty Rows printed = 0 Unidirectional caching = FALSE Simple Append i.e. caching of inserted records and cancel Print Dataset for IBTestData Row No = 1 KEYFIELD = 1 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = NULL SERVERSIDETEXT = NULL Row No = 2 KEYFIELD = 2 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = NULL SERVERSIDETEXT = NULL Rows printed = 2 Cancel Updates Print Dataset for IBTestData Dataset Empty Rows printed = 0 Now reopen and show empty Print Dataset for IBTestData Dataset Empty Rows printed = 0 Simple Append i.e. caching of inserted records and apply updates Print Dataset for IBTestData Row No = 1 KEYFIELD = 3 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = NULL SERVERSIDETEXT = NULL Row No = 2 KEYFIELD = 4 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = NULL SERVERSIDETEXT = NULL Row No = 3 KEYFIELD = 5 PLAINTEXT = And another (Charset = UTF8 Codepage = 65001) TEXTANDKEY = NULL SERVERSIDETEXT = NULL Rows printed = 3 Apply Updates Update Record Called for ukInsert KEYFIELD = 3 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = NULL SERVERSIDETEXT = NULL Update Record Called for ukInsert KEYFIELD = 4 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = NULL SERVERSIDETEXT = NULL Update Record Called for ukInsert KEYFIELD = 5 PLAINTEXT = And another (Charset = UTF8 Codepage = 65001) TEXTANDKEY = NULL SERVERSIDETEXT = NULL Print Dataset for IBTestData Row No = 1 KEYFIELD = 3 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 3: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 3 - This is a test (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 4 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 4: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 4 - This is another test (Charset = UTF8 Codepage = 65001) Row No = 3 KEYFIELD = 5 PLAINTEXT = And another (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 5: And another (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 5 - And another (Charset = UTF8 Codepage = 65001) Rows printed = 3 Now reopen and show still there Print Dataset for IBTestData Row No = 1 KEYFIELD = 3 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 3: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 3 - This is a test (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 4 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 4: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 4 - This is another test (Charset = UTF8 Codepage = 65001) Row No = 3 KEYFIELD = 5 PLAINTEXT = And another (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 5: And another (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 5 - And another (Charset = UTF8 Codepage = 65001) Rows printed = 3 Update of First and Last records and cancel Print Dataset for IBTestData Row No = 1 KEYFIELD = 3 PLAINTEXT = This is an updated test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 3: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 3 - This is a test (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 4 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 4: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 4 - This is another test (Charset = UTF8 Codepage = 65001) Row No = 3 KEYFIELD = 5 PLAINTEXT = This is another updated test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 5: And another (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 5 - And another (Charset = UTF8 Codepage = 65001) Rows printed = 3 Cancel Updates Print Dataset for IBTestData Row No = 1 KEYFIELD = 3 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 3: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 3 - This is a test (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 4 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 4: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 4 - This is another test (Charset = UTF8 Codepage = 65001) Row No = 3 KEYFIELD = 5 PLAINTEXT = And another (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 5: And another (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 5 - And another (Charset = UTF8 Codepage = 65001) Rows printed = 3 Now reopen and show no change Print Dataset for IBTestData Row No = 1 KEYFIELD = 3 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 3: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 3 - This is a test (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 4 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 4: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 4 - This is another test (Charset = UTF8 Codepage = 65001) Row No = 3 KEYFIELD = 5 PLAINTEXT = And another (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 5: And another (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 5 - And another (Charset = UTF8 Codepage = 65001) Rows printed = 3 Update of First and Last records and apply Print Dataset for IBTestData Row No = 1 KEYFIELD = 3 PLAINTEXT = This is an updated test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 3: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 3 - This is a test (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 4 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 4: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 4 - This is another test (Charset = UTF8 Codepage = 65001) Row No = 3 KEYFIELD = 5 PLAINTEXT = This is another updated test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 5: And another (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 5 - And another (Charset = UTF8 Codepage = 65001) Rows printed = 3 Apply Updates Update Record Called for ukModify KEYFIELD = 3 PLAINTEXT = This is an updated test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 3: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 3 - This is a test (Charset = UTF8 Codepage = 65001) Update Record Called for ukModify KEYFIELD = 5 PLAINTEXT = This is another updated test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 5: And another (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 5 - And another (Charset = UTF8 Codepage = 65001) Print Dataset for IBTestData Row No = 1 KEYFIELD = 3 PLAINTEXT = This is an updated test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 3: This is an updated test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 3 - This is an updated test (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 4 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 4: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 4 - This is another test (Charset = UTF8 Codepage = 65001) Row No = 3 KEYFIELD = 5 PLAINTEXT = This is another updated test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 5: This is another updated test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 5 - This is another updated test (Charset = UTF8 Codepage = 65001) Rows printed = 3 Now reopen and show still there Print Dataset for IBTestData Row No = 1 KEYFIELD = 3 PLAINTEXT = This is an updated test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 3: This is an updated test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 3 - This is an updated test (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 4 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 4: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 4 - This is another test (Charset = UTF8 Codepage = 65001) Row No = 3 KEYFIELD = 5 PLAINTEXT = This is another updated test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 5: This is another updated test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 5 - This is another updated test (Charset = UTF8 Codepage = 65001) Rows printed = 3 Update of First and Last records and implicitly apply Update Record Called for ukModify KEYFIELD = 3 PLAINTEXT = This is an updated test (implicit apply updates) (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 3: This is an updated test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 3 - This is an updated test (Charset = UTF8 Codepage = 65001) Print Dataset for IBTestData Row No = 1 KEYFIELD = 3 PLAINTEXT = This is an updated test (implicit apply updates) (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 3: This is an updated test (implicit apply updates) (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 3 - This is an updated test (implicit apply updates) (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 4 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 4: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 4 - This is another test (Charset = UTF8 Codepage = 65001) Row No = 3 KEYFIELD = 5 PLAINTEXT = This is another updated test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 5: This is another updated test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 5 - This is another updated test (Charset = UTF8 Codepage = 65001) Rows printed = 3 Delete First and Last records and Cancel Print Dataset for IBTestData Row No = 1 KEYFIELD = 4 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 4: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 4 - This is another test (Charset = UTF8 Codepage = 65001) Rows printed = 1 Cancel Updates Print Dataset for IBTestData Row No = 1 KEYFIELD = 3 PLAINTEXT = This is an updated test (implicit apply updates) (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 3: This is an updated test (implicit apply updates) (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 3 - This is an updated test (implicit apply updates) (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 4 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 4: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 4 - This is another test (Charset = UTF8 Codepage = 65001) Row No = 3 KEYFIELD = 5 PLAINTEXT = This is another updated test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 5: This is another updated test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 5 - This is another updated test (Charset = UTF8 Codepage = 65001) Rows printed = 3 Now reopen and show no change Print Dataset for IBTestData Row No = 1 KEYFIELD = 3 PLAINTEXT = This is an updated test (implicit apply updates) (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 3: This is an updated test (implicit apply updates) (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 3 - This is an updated test (implicit apply updates) (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 4 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 4: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 4 - This is another test (Charset = UTF8 Codepage = 65001) Row No = 3 KEYFIELD = 5 PLAINTEXT = This is another updated test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 5: This is another updated test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 5 - This is another updated test (Charset = UTF8 Codepage = 65001) Rows printed = 3 Delete First and Last records and Apply Print Dataset for IBTestData Row No = 1 KEYFIELD = 4 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 4: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 4 - This is another test (Charset = UTF8 Codepage = 65001) Rows printed = 1 Apply Updates Update Record Called for ukDelete KEYFIELD = 3 PLAINTEXT = This is an updated test (implicit apply updates) (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 3: This is an updated test (implicit apply updates) (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 3 - This is an updated test (implicit apply updates) (Charset = UTF8 Codepage = 65001) Update Record Called for ukDelete KEYFIELD = 5 PLAINTEXT = This is another updated test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 5: This is another updated test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 5 - This is another updated test (Charset = UTF8 Codepage = 65001) Print Dataset for IBTestData Row No = 1 KEYFIELD = 4 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 4: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 4 - This is another test (Charset = UTF8 Codepage = 65001) Rows printed = 1 Now reopen and show no change Print Dataset for IBTestData Row No = 1 KEYFIELD = 4 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 4: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 4 - This is another test (Charset = UTF8 Codepage = 65001) Rows printed = 1 Test Error Handling Print Dataset for IBTestData Row No = 1 KEYFIELD = 4 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 4: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 4 - This is another test (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 4 PLAINTEXT = NULL TEXTANDKEY = NULL SERVERSIDETEXT = NULL Rows printed = 2 Update Record Called for ukInsert KEYFIELD = 4 PLAINTEXT = NULL TEXTANDKEY = NULL SERVERSIDETEXT = NULL Update Error raised: Engine Code: 335544665 violation of PRIMARY or UNIQUE KEY constraint "INTEG_2" on table "IBDATASETTEST" -Problematic key value is ("KEYFIELD" = 4) Exception caught: User abort ------------------------------------------------------ Running Test 19: TIBDataset Master/Detail Queries Department Record: DEPT_NO = 000 DEPARTMENT = Corporate Headquarters HEAD_DEPT = NULL MNGR_NO = 105 BUDGET = 1000000 LOCATION = Monterey PHONE_NO = (408) 555-1234 Employee Records: Row No = 1 EMP_NO = 12 FIRST_NAME = Terri LAST_NAME = Lee PHONE_EXT = 256 HIRE_DATE = 01/5/1990 DEPT_NO = 000 JOB_CODE = Admin JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 53793 FULL_NAME = Lee, Terri Row No = 2 EMP_NO = 105 FIRST_NAME = Oliver H. LAST_NAME = Bender PHONE_EXT = 255 HIRE_DATE = 08/10/1992 DEPT_NO = 000 JOB_CODE = CEO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 212850 FULL_NAME = Bender, Oliver H. Rows printed = 2 Advance to next department Department Record: DEPT_NO = 100 DEPARTMENT = Sales and Marketing HEAD_DEPT = 000 MNGR_NO = 85 BUDGET = 2000000 LOCATION = San Francisco PHONE_NO = (415) 555-1234 Employee Records: Row No = 1 EMP_NO = 85 FIRST_NAME = Mary S. LAST_NAME = MacDonald PHONE_EXT = 477 HIRE_DATE = 01/6/1992 DEPT_NO = 100 JOB_CODE = VP JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 111262.5 FULL_NAME = MacDonald, Mary S. Row No = 2 EMP_NO = 127 FIRST_NAME = Michael LAST_NAME = Yanowski PHONE_EXT = 492 HIRE_DATE = 09/8/1993 DEPT_NO = 100 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 44000 FULL_NAME = Yanowski, Michael Rows printed = 2 Repeat test with an active master/detail timer Department Record: DEPT_NO = 000 DEPARTMENT = Corporate Headquarters HEAD_DEPT = NULL MNGR_NO = 105 BUDGET = 1000000 LOCATION = Monterey PHONE_NO = (408) 555-1234 Employee Records: Row No = 1 EMP_NO = 12 FIRST_NAME = Terri LAST_NAME = Lee PHONE_EXT = 256 HIRE_DATE = 01/5/1990 DEPT_NO = 000 JOB_CODE = Admin JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 53793 FULL_NAME = Lee, Terri Row No = 2 EMP_NO = 105 FIRST_NAME = Oliver H. LAST_NAME = Bender PHONE_EXT = 255 HIRE_DATE = 08/10/1992 DEPT_NO = 000 JOB_CODE = CEO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 212850 FULL_NAME = Bender, Oliver H. Rows printed = 2 Advance to next department Department Record: DEPT_NO = 100 DEPARTMENT = Sales and Marketing HEAD_DEPT = 000 MNGR_NO = 85 BUDGET = 2000000 LOCATION = San Francisco PHONE_NO = (415) 555-1234 Employee Records: Result - before checksynchronise Row No = 1 EMP_NO = 12 FIRST_NAME = Terri LAST_NAME = Lee PHONE_EXT = 256 HIRE_DATE = 01/5/1990 DEPT_NO = 000 JOB_CODE = Admin JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 53793 FULL_NAME = Lee, Terri Row No = 2 EMP_NO = 105 FIRST_NAME = Oliver H. LAST_NAME = Bender PHONE_EXT = 255 HIRE_DATE = 08/10/1992 DEPT_NO = 000 JOB_CODE = CEO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 212850 FULL_NAME = Bender, Oliver H. Rows printed = 2 Result - after checksynchronise Row No = 1 EMP_NO = 85 FIRST_NAME = Mary S. LAST_NAME = MacDonald PHONE_EXT = 477 HIRE_DATE = 01/6/1992 DEPT_NO = 100 JOB_CODE = VP JOB_GRADE = 2 JOB_COUNTRY = USA SALARY = 111262.5 FULL_NAME = MacDonald, Mary S. Row No = 2 EMP_NO = 127 FIRST_NAME = Michael LAST_NAME = Yanowski PHONE_EXT = 492 HIRE_DATE = 09/8/1993 DEPT_NO = 100 JOB_CODE = SRep JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 44000 FULL_NAME = Yanowski, Michael Rows printed = 2 ------------------------------------------------------ Running Test 20: TIBUpdateSQL Tests Creating Database from resources/Test20.sql Create Table IBDataSetTest ( KeyField Integer not null, PlainText VarChar(128), TextAndKey Computed By (KeyField || ': ' || PlainText), ServerSideText VarChar(256), Primary Key (KeyField) ); Create Generator AGenerator; Create Trigger BeforeInsertTest for IBDataSetTest Before Insert or Update As Begin new.ServerSideText = new.KeyField || ' - ' || new.PlainText; End Simple Append KEYFIELD = 1 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 1: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 1 - This is a test (Charset = UTF8 Codepage = 65001) After Refresh KEYFIELD = 1 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 1: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 1 - This is a test (Charset = UTF8 Codepage = 65001) Append and Update KEYFIELD = 2 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 2: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 2 - This is another test (Charset = UTF8 Codepage = 65001) KEYFIELD = 2 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 2: This is the update test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 2 - This is the update test (Charset = UTF8 Codepage = 65001) Show the whole dataset Row No = 1 KEYFIELD = 1 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 1: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 1 - This is a test (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 2 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 2: This is the update test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 2 - This is the update test (Charset = UTF8 Codepage = 65001) Rows printed = 2 Now delete the first row Row No = 1 KEYFIELD = 2 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 2: This is the update test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 2 - This is the update test (Charset = UTF8 Codepage = 65001) Rows printed = 1 Show the whole dataset after close/reopen Row No = 1 KEYFIELD = 2 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 2: This is the update test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 2 - This is the update test (Charset = UTF8 Codepage = 65001) Rows printed = 1 On Post KeyField Assignment KEYFIELD = NULL PLAINTEXT = On Post KeyField test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = NULL SERVERSIDETEXT = NULL Row data after post KEYFIELD = 3 PLAINTEXT = On Post KeyField test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 3: On Post KeyField test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 3 - On Post KeyField test (Charset = UTF8 Codepage = 65001) Repeat with cached updates Simple Append KEYFIELD = 4 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = NULL SERVERSIDETEXT = NULL After Refresh KEYFIELD = 4 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 4: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 4 - This is a test (Charset = UTF8 Codepage = 65001) Append and Update KEYFIELD = 5 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = NULL SERVERSIDETEXT = NULL KEYFIELD = 5 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = NULL SERVERSIDETEXT = NULL Show the whole dataset Row No = 1 KEYFIELD = 4 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 4: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 4 - This is a test (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 5 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = NULL SERVERSIDETEXT = NULL Rows printed = 2 Now delete the first row Row No = 1 KEYFIELD = 5 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = NULL SERVERSIDETEXT = NULL Rows printed = 1 close and re-open and print again Row No = 1 KEYFIELD = 5 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 5: This is the update test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 5 - This is the update test (Charset = UTF8 Codepage = 65001) Rows printed = 1 FIBQuery2: Simple Append KEYFIELD = 6 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 6: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = NULL FIBQuery2 Refresh KEYFIELD = 6 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 6: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 6 - This is a test (Charset = UTF8 Codepage = 65001) Append and Update KEYFIELD = 7 PLAINTEXT = This is another test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 7: This is another test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = NULL KEYFIELD = 7 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 7: This is the update test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 7 - This is the update test (Charset = UTF8 Codepage = 65001) Show the whole dataset Row No = 1 KEYFIELD = 6 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 6: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 6 - This is a test (Charset = UTF8 Codepage = 65001) Row No = 2 KEYFIELD = 7 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 7: This is the update test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 7 - This is the update test (Charset = UTF8 Codepage = 65001) Rows printed = 2 Now delete the first row Delete Returning KEYFIELD = 6 Dataset after delete Row No = 1 KEYFIELD = 7 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 7: This is the update test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 7 - This is the update test (Charset = UTF8 Codepage = 65001) Rows printed = 1 FIBQuery3: Simple Append - test refresh on insert KEYFIELD = 8 PLAINTEXT = This is a test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 8: This is a test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 8 - This is a test (Charset = UTF8 Codepage = 65001) KEYFIELD = 8 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 8: This is the update test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 8 - This is the update test (Charset = UTF8 Codepage = 65001) close and re-open and print again Row No = 1 KEYFIELD = 8 PLAINTEXT = This is the update test (Charset = UTF8 Codepage = 65001) TEXTANDKEY = 8: This is the update test (Charset = UTF8 Codepage = 65001) SERVERSIDETEXT = 8 - This is the update test (Charset = UTF8 Codepage = 65001) Rows printed = 1 ------------------------------------------------------ Running Test 21: Big dataset test Creating Database from resources/Test21.sql Create Table LotsOfData ( RowID integer not null, theDate TimeStamp, MyText VarChar(1024), Primary Key (RowID) ); Loading data into database table. Started at 17/6/2023 14:53:54.702 Data load completed at 17/6/2023 14:55:08.917 Elapsed Time = 74215 ms, 100000 records loaded Message Hash = bab5122e684e6f5ab6a9155ae91ba11b Database Read started at 17/6/2023 14:55:08.918 Read Dataset completed at 17/6/2023 14:55:13.792 Elapsed Time = 4874 ms, 100000 records read Message Hash = bab5122e684e6f5ab6a9155ae91ba11b Test Completed successfully 17/6/2023 14:55:13.792 Test 21 passes as long as the checksums are identical ------------------------------------------------------ Running Test 22: TIBUpdate Tests RoleName = NONE User List Row No = 1 SEC$DESCRIPTION = NULL SEC$PLUGIN = Srp (Charset = UTF8 Codepage = 65001) SEC$ADMIN = True SEC$ACTIVE = True SEC$USER_NAME = SYSDBA (Charset = UTF8 Codepage = 65001) SEC$FIRST_NAME = NULL SEC$MIDDLE_NAME = NULL SEC$LAST_NAME = NULL SEC$PASSWORD = NULL LOGGEDIN = True DBCREATOR = False Rows printed = 1 Add a user Updated User List Row No = 1 SEC$DESCRIPTION = NULL SEC$PLUGIN = Srp (Charset = UTF8 Codepage = 65001) SEC$ADMIN = False SEC$ACTIVE = False SEC$USER_NAME = TESTER (Charset = UTF8 Codepage = 65001) SEC$FIRST_NAME = Chief (Charset = UTF8 Codepage = 65001) SEC$MIDDLE_NAME = NULL SEC$LAST_NAME = Tester (Charset = UTF8 Codepage = 65001) SEC$PASSWORD = NULL LOGGEDIN = False DBCREATOR = False Row No = 2 SEC$DESCRIPTION = NULL SEC$PLUGIN = Srp (Charset = UTF8 Codepage = 65001) SEC$ADMIN = True SEC$ACTIVE = True SEC$USER_NAME = SYSDBA (Charset = UTF8 Codepage = 65001) SEC$FIRST_NAME = NULL SEC$MIDDLE_NAME = NULL SEC$LAST_NAME = NULL SEC$PASSWORD = NULL LOGGEDIN = True DBCREATOR = False Rows printed = 2 Modify a User Updated User List Row No = 1 SEC$DESCRIPTION = NULL SEC$PLUGIN = Srp (Charset = UTF8 Codepage = 65001) SEC$ADMIN = False SEC$ACTIVE = False SEC$USER_NAME = TESTER (Charset = UTF8 Codepage = 65001) SEC$FIRST_NAME = Chief (Charset = UTF8 Codepage = 65001) SEC$MIDDLE_NAME = Database (Charset = UTF8 Codepage = 65001) SEC$LAST_NAME = Tester (Charset = UTF8 Codepage = 65001) SEC$PASSWORD = NULL LOGGEDIN = False DBCREATOR = True Row No = 2 SEC$DESCRIPTION = NULL SEC$PLUGIN = Srp (Charset = UTF8 Codepage = 65001) SEC$ADMIN = True SEC$ACTIVE = True SEC$USER_NAME = SYSDBA (Charset = UTF8 Codepage = 65001) SEC$FIRST_NAME = NULL SEC$MIDDLE_NAME = NULL SEC$LAST_NAME = NULL SEC$PASSWORD = NULL LOGGEDIN = True DBCREATOR = False Rows printed = 2 Delete a user Updated User List Row No = 1 SEC$DESCRIPTION = NULL SEC$PLUGIN = Srp (Charset = UTF8 Codepage = 65001) SEC$ADMIN = True SEC$ACTIVE = True SEC$USER_NAME = SYSDBA (Charset = UTF8 Codepage = 65001) SEC$FIRST_NAME = NULL SEC$MIDDLE_NAME = NULL SEC$LAST_NAME = NULL SEC$PASSWORD = NULL LOGGEDIN = True DBCREATOR = False Rows printed = 1 ------------------------------------------------------ Running Test 23: Transliteration Tests Creating Database from resources/Test23.sql CREATE TABLE TESTDATA (ROWID INTEGER NOT NULL, TITLE VARCHAR(32), NOTES VARCHAR(64) CHARACTER SET ISO8859_1, BLOBDATA BLOB SUB_TYPE TEXT SEGMENT SIZE 80 CHARACTER SET WIN1252, INCLEAR VARCHAR(16) CHARACTER SET NONE, PRIMARY KEY (ROWID)); Default Character Set = UTF8 ROWID = 1 TITLE = Blob Test ©€ (Charset Id = 4 Codepage = 65001) NOTES = Écoute moi (Charset Id = 4 Codepage = 65001) BLOBDATA (Charset Id = 4 Codepage = 65001) Some German Special Characters like ÖÄÜöäüß INCLEAR = Test à Default Character Set = WIN1252 ROWID = 1 TITLE = Blob Test ©€ (Charset Id = 53 Codepage = 1252) NOTES = Écoute moi (Charset Id = 53 Codepage = 1252) BLOBDATA (Charset Id = 53 Codepage = 1252) Some German Special Characters like ÖÄÜöäüß INCLEAR = Test à Default Character Set = NONE ROWID = 1 TITLE = Blob Test ©€ (Charset Id = 4 Codepage = 65001) NOTES = Écoute moi (Charset Id = 21 Codepage = 28591) BLOBDATA (Charset Id = 53 Codepage = 1252) Some German Special Characters like ÖÄÜöäüß INCLEAR = Test à Default Character Set = UTF8 ROWID = 1 TITLE = Blob Test ©€ (Charset Id = 4 Codepage = 65001) NOTES = Écoute moi (Charset Id = 4 Codepage = 65001) BLOBDATA (Charset Id = 4 Codepage = 65001) Some German Special Characters like ÖÄÜöäüß INCLEAR = Test à Default Character Set = WIN1252 ROWID = 1 TITLE = 42 6C 6F 62 20 54 65 73 74 20 A9 80 (Charset Id = 53 Codepage = 1252) NOTES = C9 63 6F 75 74 65 20 6D 6F 69 (Charset Id = 53 Codepage = 1252) BLOBDATA = 53 6F 6D 65 20 47 65 72 6D 61 6E 20 53 70 65 63 69 61 6C 20 43 68 61 72 61 63 74 65 72 73 20 6C 69 6B 65 20 D6 C4 DC F6 E4 FC DF (Charset Id = 53 Codepage = 1252) INCLEAR = 1 54 65 73 74 D C3 (Charset Id = 0 Codepage = 0) Default Character Set = NONE ROWID = 1 TITLE = 42 6C 6F 62 20 54 65 73 74 20 C2 A9 E2 82 AC (Charset Id = 4 Codepage = 65001) NOTES = C9 63 6F 75 74 65 20 6D 6F 69 (Charset Id = 21 Codepage = 28591) BLOBDATA = 53 6F 6D 65 20 47 65 72 6D 61 6E 20 53 70 65 63 69 61 6C 20 43 68 61 72 61 63 74 65 72 73 20 6C 69 6B 65 20 D6 C4 DC F6 E4 FC DF (Charset Id = 53 Codepage = 1252) INCLEAR = 1 54 65 73 74 D C3 (Charset Id = 0 Codepage = 0) Default Character Set = UTF8 ROWID = 1 TITLE = 42 6C 6F 62 20 54 65 73 74 20 C2 A9 E2 82 AC (Charset Id = 4 Codepage = 65001) NOTES = C3 89 63 6F 75 74 65 20 6D 6F 69 (Charset Id = 4 Codepage = 65001) BLOBDATA = 53 6F 6D 65 20 47 65 72 6D 61 6E 20 53 70 65 63 69 61 6C 20 43 68 61 72 61 63 74 65 72 73 20 6C 69 6B 65 20 C3 96 C3 84 C3 9C C3 B6 C3 A4 C3 BC C3 9F (Charset Id = 4 Codepage = 65001) INCLEAR = 1 54 65 73 74 D C3 (Charset Id = 0 Codepage = 0) ------------------------------------------------------ Running Test 24: IB Parser Tests Test String 0 --------------------------------------------------- Select distinct A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, 2.2, 2..30 A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO; --------------------------------------------------- Select: distinct A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, 2.2, 2..30 A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From: EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO Where: Group By: Having: Order by: Plan: Rows: SQL: SELECT distinct A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, 2.2, 2..30 A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH FROM EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO Params: Updated SQL SELECT distinct A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, 2.2, 2..30 A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH FROM EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO Test String 1 --------------------------------------------------- with recursive Depts As (Select DEPT_NO, DEPARTMENT, "HEAD_DEPT", cast(DEPARTMENT as VarChar(256)) as DEPT_PATH /* test */,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO )--ignore Select distinct A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, 2.2, 2..30 A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO --------------------------------------------------- CTE0 recursive: Depts as (Select DEPT_NO, DEPARTMENT, "HEAD_DEPT", cast(DEPARTMENT as VarChar(256)) as DEPT_PATH ,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO ) Select: distinct A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, 2.2, 2..30 A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH From: EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO Where: Group By: Having: Order by: Plan: Rows: SQL: WITH RECURSIVE Depts AS (Select DEPT_NO, DEPARTMENT, "HEAD_DEPT", cast(DEPARTMENT as VarChar(256)) as DEPT_PATH ,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO ) SELECT distinct A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, 2.2, 2..30 A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH FROM EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO Params: Updated SQL WITH RECURSIVE Depts AS (Select DEPT_NO, DEPARTMENT, "HEAD_DEPT", cast(DEPARTMENT as VarChar(256)) as DEPT_PATH ,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO ) SELECT distinct A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, 2.2, 2..30 A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH FROM EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO Test String 2 --------------------------------------------------- Update EMPLOYEE A Set A.DEPT_NO = :DEPT_NO, A.FIRST_NAME = 'Mr/Ms ' || :FIRST_NAME, A.HIRE_DATE = :HIRE_DATE, A.JOB_CODE = :JOB_CODE, A.JOB_COUNTRY = :JOB_COUNTRY, A.JOB_GRADE = :JOB_GRADE, A.LAST_NAME = :LAST_NAME, A.PHONE_EXT = :PHONE_EXT, A.SALARY = :SALARY Where A.EMP_NO = :OLD_EMP_NO; --------------------------------------------------- Not a Select Statement Test String 3 --------------------------------------------------- INSERT INTO EMPLOYEE (EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, HIRE_DATE,DEPT_NO, JOB_CODE, JOB_GRADE, JOB_COUNTRY, SALARY /* what's this */) VALUES (:EMP_NO, :FIRST_NAME, :LAST_NAME, :PHONE_EXT, :HIRE_DATE, //end comment :DEPT_NO, :"JOB""CODE", 'Tester''s way''''', :JOB_COUNTRY, :"$SALARY") --------------------------------------------------- Not a Select Statement Test String 4 --------------------------------------------------- Select * from EMPLOYEE Where EMP_NO = :EMP_NO --------------------------------------------------- Select: * From: EMPLOYEE Where: EMP_NO = :EMP_NO Group By: Having: Order by: Plan: Rows: SQL: SELECT * FROM EMPLOYEE WHERE EMP_NO = :EMP_NO Params: EMP_NO, Updated SQL SELECT * FROM EMPLOYEE WHERE (EMP_NO = :EMP_NO) AND (JOB_CODE = 2) Test String 5 --------------------------------------------------- Select DEPT_NO, DEPARTMENT, "HEAD_DEPT", cast(DEPARTMENT as VarChar(256)) as DEPT_PATH /* test */,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO --------------------------------------------------- Select: DEPT_NO, DEPARTMENT, "HEAD_DEPT", cast(DEPARTMENT as VarChar(256)) as DEPT_PATH ,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From: DEPARTMENT Where: HEAD_DEPT is NULL Group By: Having: Union All Select: D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From: DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO Where: Group By: Having: Order by: Plan: Rows: SQL: SELECT D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH FROM DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO Params: Order by: Plan: Rows: SQL: SELECT DEPT_NO, DEPARTMENT, "HEAD_DEPT", cast(DEPARTMENT as VarChar(256)) as DEPT_PATH ,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH FROM DEPARTMENT WHERE HEAD_DEPT is NULL UNION ALL SELECT D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH FROM DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO Params: Updated SQL SELECT DEPT_NO, DEPARTMENT, "HEAD_DEPT", cast(DEPARTMENT as VarChar(256)) as DEPT_PATH ,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH FROM DEPARTMENT WHERE HEAD_DEPT is NULL UNION ALL SELECT D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH FROM DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO ORDER BY 1 Test String 6 --------------------------------------------------- Select DEPT_NO, DEPARTMENT, "HEAD_DEPT", cast(DEPARTMENT as VarChar(256)) as DEPT_PATH /* test */,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO Order by 1,2 --------------------------------------------------- Select: DEPT_NO, DEPARTMENT, "HEAD_DEPT", cast(DEPARTMENT as VarChar(256)) as DEPT_PATH ,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From: DEPARTMENT Where: HEAD_DEPT is NULL Group By: Having: Union All Select: D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From: DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO Where: Group By: Having: Order by: Plan: Rows: SQL: SELECT D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH FROM DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO Params: Order by: 1,2 Plan: Rows: SQL: SELECT DEPT_NO, DEPARTMENT, "HEAD_DEPT", cast(DEPARTMENT as VarChar(256)) as DEPT_PATH ,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH FROM DEPARTMENT WHERE HEAD_DEPT is NULL UNION ALL SELECT D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH FROM DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO ORDER BY 1,2 Params: Updated SQL SELECT DEPT_NO, DEPARTMENT, "HEAD_DEPT", cast(DEPARTMENT as VarChar(256)) as DEPT_PATH ,cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH FROM DEPARTMENT WHERE HEAD_DEPT is NULL UNION ALL SELECT D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH,Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH FROM DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO ORDER BY 1,2 Test String 7 --------------------------------------------------- with test1 as (Select * from Employee), test2 as (Select Emp_no, 'A test' from Employee) Select * from test1 --------------------------------------------------- CTE0: test1 as (Select * from Employee) CTE1: test2 as (Select Emp_no, 'A test' from Employee) Select: * From: test1 Where: Group By: Having: Order by: Plan: Rows: SQL: WITH test1 AS (Select * from Employee), test2 AS (Select Emp_no, 'A test' from Employee) SELECT * FROM test1 Params: Updated SQL WITH test1 AS (Select * from Employee), test2 AS (Select Emp_no, 'A test' from Employee) SELECT * FROM test1 Test String 8 --------------------------------------------------- with recursive Account_Types_List As( Select ACCOUNTTYPE_ID, PARENT, ACCOUNTTYPENAME, ACCOUNTTYPENAME as SortName, '' as INDENT From MYLB_ACCOUNTTYPES Where PARENT is Null UNION ALL Select A.ACCOUNTTYPE_ID, A.PARENT, A.ACCOUNTTYPENAME, L.SortName || A.ACCOUNTTYPENAME as SortName, L.INDENT || ' ' as INDENT From MYLB_ACCOUNTTYPES A Join Account_Types_List L On A.PARENT = L.ACCOUNTTYPE_ID) Select ACCOUNTTYPE_ID, PARENT, INDENT || ACCOUNTTYPENAME as Name From Account_Types_List Order by SortName --------------------------------------------------- CTE0 recursive: Account_Types_List as ( Select ACCOUNTTYPE_ID, PARENT, ACCOUNTTYPENAME, ACCOUNTTYPENAME as SortName, '' as INDENT From MYLB_ACCOUNTTYPES Where PARENT is Null UNION ALL Select A.ACCOUNTTYPE_ID, A.PARENT, A.ACCOUNTTYPENAME, L.SortName || A.ACCOUNTTYPENAME as SortName, L.INDENT || ' ' as INDENT From MYLB_ACCOUNTTYPES A Join Account_Types_List L On A.PARENT = L.ACCOUNTTYPE_ID) Select: ACCOUNTTYPE_ID, PARENT, INDENT || ACCOUNTTYPENAME as Name From: Account_Types_List Where: Group By: Having: Order by: SortName Plan: Rows: SQL: WITH RECURSIVE Account_Types_List AS ( Select ACCOUNTTYPE_ID, PARENT, ACCOUNTTYPENAME, ACCOUNTTYPENAME as SortName, '' as INDENT From MYLB_ACCOUNTTYPES Where PARENT is Null UNION ALL Select A.ACCOUNTTYPE_ID, A.PARENT, A.ACCOUNTTYPENAME, L.SortName || A.ACCOUNTTYPENAME as SortName, L.INDENT || ' ' as INDENT From MYLB_ACCOUNTTYPES A Join Account_Types_List L On A.PARENT = L.ACCOUNTTYPE_ID) SELECT ACCOUNTTYPE_ID, PARENT, INDENT || ACCOUNTTYPENAME as Name FROM Account_Types_List ORDER BY SortName Params: Updated SQL WITH RECURSIVE Account_Types_List AS ( Select ACCOUNTTYPE_ID, PARENT, ACCOUNTTYPENAME, ACCOUNTTYPENAME as SortName, '' as INDENT From MYLB_ACCOUNTTYPES Where PARENT is Null UNION ALL Select A.ACCOUNTTYPE_ID, A.PARENT, A.ACCOUNTTYPENAME, L.SortName || A.ACCOUNTTYPENAME as SortName, L.INDENT || ' ' as INDENT From MYLB_ACCOUNTTYPES A Join Account_Types_List L On A.PARENT = L.ACCOUNTTYPE_ID) SELECT ACCOUNTTYPE_ID, PARENT, INDENT || ACCOUNTTYPENAME as Name FROM Account_Types_List ORDER BY SortName Test String 9 --------------------------------------------------- SELECT r.RDB$DB_KEY, cast('Local' as VarChar(6)) as MAPTYPE, r.RDB$MAP_NAME, Case When r.RDB$MAP_USING = 'P' and r.RDB$MAP_PLUGIN is not null then cast ('Plugin ' || r.RDB$MAP_PLUGIN as VarChar(20)) When r.RDB$MAP_USING = 'P' and r.RDB$MAP_PLUGIN is null then 'Any Plugin' When r.RDB$MAP_USING = 'S' then 'Any Plugin Serverwide' When r.RDB$MAP_USING = 'M' then 'Mapping' When r.RDB$MAP_USING = '*' then '*' else 'Using ' || r.RDB$MAP_USING || ',' || coalesce(r.RDB$MAP_PLUGIN,'') End as MAP_USING, r.RDB$MAP_USING, r.RDB$MAP_PLUGIN, r.RDB$MAP_DB, r.RDB$MAP_FROM_TYPE, r.RDB$MAP_FROM, Trim(r.RDB$MAP_FROM_TYPE) || ': ' || Trim(r.RDB$MAP_FROM) as MAP_FROM, r.RDB$MAP_TO_TYPE, T.RDB$TYPE_NAME as MAP_TO_TYPE, r.RDB$MAP_TO, Trim(T.RDB$TYPE_NAME) || ': ' || Trim(r.RDB$MAP_TO) as MAP_TO, r.RDB$SYSTEM_FLAG, r.RDB$DESCRIPTION FROM RDB$AUTH_MAPPING r JOIN RDB$TYPES T On T.RDB$TYPE = r.RDB$MAP_TO_TYPE and T.RDB$FIELD_NAME = 'RDB$MAP_TO_TYPE' UNION SELECT r.RDB$DB_KEY, 'Global', r.SEC$MAP_NAME, Case When r.SEC$MAP_USING = 'P' and r.SEC$MAP_PLUGIN is not null then cast ('Plugin ' || r.SEC$MAP_PLUGIN as VarChar(20)) When r.SEC$MAP_USING = 'P' and r.SEC$MAP_PLUGIN is null then 'Any Plugin' When r.SEC$MAP_USING = 'S' then 'Any Plugin Serverwide' When r.SEC$MAP_USING = 'M' then 'Mapping' When r.SEC$MAP_USING = '*' then '*' else 'Using ' || r.SEC$MAP_USING || ',' || coalesce(r.SEC$MAP_PLUGIN,'') End as MAP_USING, r.SEC$MAP_USING, r.SEC$MAP_PLUGIN, r.SEC$MAP_DB, r.SEC$MAP_FROM_TYPE, r.SEC$MAP_FROM, Trim(r.SEC$MAP_FROM_TYPE) || ': ' || Trim(r.SEC$MAP_FROM) as MAP_FROM, r.SEC$MAP_TO_TYPE, T.RDB$TYPE_NAME as MAP_TO_TYPE,r.SEC$MAP_TO, Trim(T.RDB$TYPE_NAME) || ': ' || Trim(r.SEC$MAP_TO) as MAP_TO, null,null FROM SEC$GLOBAL_AUTH_MAPPING r JOIN RDB$TYPES T On T.RDB$TYPE = r.SEC$MAP_TO_TYPE and T.RDB$FIELD_NAME = 'RDB$MAP_TO_TYPE' --------------------------------------------------- Select: r.RDB$DB_KEY, cast('Local' as VarChar(6)) as MAPTYPE, r.RDB$MAP_NAME, Case When r.RDB$MAP_USING = 'P' and r.RDB$MAP_PLUGIN is not null then cast ('Plugin ' || r.RDB$MAP_PLUGIN as VarChar(20)) When r.RDB$MAP_USING = 'P' and r.RDB$MAP_PLUGIN is null then 'Any Plugin' When r.RDB$MAP_USING = 'S' then 'Any Plugin Serverwide' When r.RDB$MAP_USING = 'M' then 'Mapping' When r.RDB$MAP_USING = '*' then '*' else 'Using ' || r.RDB$MAP_USING || ',' || coalesce(r.RDB$MAP_PLUGIN,'') End as MAP_USING, r.RDB$MAP_USING, r.RDB$MAP_PLUGIN, r.RDB$MAP_DB, r.RDB$MAP_FROM_TYPE, r.RDB$MAP_FROM, Trim(r.RDB$MAP_FROM_TYPE) || ': ' || Trim(r.RDB$MAP_FROM) as MAP_FROM, r.RDB$MAP_TO_TYPE, T.RDB$TYPE_NAME as MAP_TO_TYPE, r.RDB$MAP_TO, Trim(T.RDB$TYPE_NAME) || ': ' || Trim(r.RDB$MAP_TO) as MAP_TO, r.RDB$SYSTEM_FLAG, r.RDB$DESCRIPTION From: RDB$AUTH_MAPPING r JOIN RDB$TYPES T On T.RDB$TYPE = r.RDB$MAP_TO_TYPE and T.RDB$FIELD_NAME = 'RDB$MAP_TO_TYPE' Where: Group By: Having: Union Select: r.RDB$DB_KEY, 'Global', r.SEC$MAP_NAME, Case When r.SEC$MAP_USING = 'P' and r.SEC$MAP_PLUGIN is not null then cast ('Plugin ' || r.SEC$MAP_PLUGIN as VarChar(20)) When r.SEC$MAP_USING = 'P' and r.SEC$MAP_PLUGIN is null then 'Any Plugin' When r.SEC$MAP_USING = 'S' then 'Any Plugin Serverwide' When r.SEC$MAP_USING = 'M' then 'Mapping' When r.SEC$MAP_USING = '*' then '*' else 'Using ' || r.SEC$MAP_USING || ',' || coalesce(r.SEC$MAP_PLUGIN,'') End as MAP_USING, r.SEC$MAP_USING, r.SEC$MAP_PLUGIN, r.SEC$MAP_DB, r.SEC$MAP_FROM_TYPE, r.SEC$MAP_FROM, Trim(r.SEC$MAP_FROM_TYPE) || ': ' || Trim(r.SEC$MAP_FROM) as MAP_FROM, r.SEC$MAP_TO_TYPE, T.RDB$TYPE_NAME as MAP_TO_TYPE,r.SEC$MAP_TO, Trim(T.RDB$TYPE_NAME) || ': ' || Trim(r.SEC$MAP_TO) as MAP_TO, null,null From: SEC$GLOBAL_AUTH_MAPPING r JOIN RDB$TYPES T On T.RDB$TYPE = r.SEC$MAP_TO_TYPE and T.RDB$FIELD_NAME = 'RDB$MAP_TO_TYPE' Where: Group By: Having: Order by: Plan: Rows: SQL: SELECT r.RDB$DB_KEY, 'Global', r.SEC$MAP_NAME, Case When r.SEC$MAP_USING = 'P' and r.SEC$MAP_PLUGIN is not null then cast ('Plugin ' || r.SEC$MAP_PLUGIN as VarChar(20)) When r.SEC$MAP_USING = 'P' and r.SEC$MAP_PLUGIN is null then 'Any Plugin' When r.SEC$MAP_USING = 'S' then 'Any Plugin Serverwide' When r.SEC$MAP_USING = 'M' then 'Mapping' When r.SEC$MAP_USING = '*' then '*' else 'Using ' || r.SEC$MAP_USING || ',' || coalesce(r.SEC$MAP_PLUGIN,'') End as MAP_USING, r.SEC$MAP_USING, r.SEC$MAP_PLUGIN, r.SEC$MAP_DB, r.SEC$MAP_FROM_TYPE, r.SEC$MAP_FROM, Trim(r.SEC$MAP_FROM_TYPE) || ': ' || Trim(r.SEC$MAP_FROM) as MAP_FROM, r.SEC$MAP_TO_TYPE, T.RDB$TYPE_NAME as MAP_TO_TYPE,r.SEC$MAP_TO, Trim(T.RDB$TYPE_NAME) || ': ' || Trim(r.SEC$MAP_TO) as MAP_TO, null,null FROM SEC$GLOBAL_AUTH_MAPPING r JOIN RDB$TYPES T On T.RDB$TYPE = r.SEC$MAP_TO_TYPE and T.RDB$FIELD_NAME = 'RDB$MAP_TO_TYPE' Params: Order by: Plan: Rows: SQL: SELECT r.RDB$DB_KEY, cast('Local' as VarChar(6)) as MAPTYPE, r.RDB$MAP_NAME, Case When r.RDB$MAP_USING = 'P' and r.RDB$MAP_PLUGIN is not null then cast ('Plugin ' || r.RDB$MAP_PLUGIN as VarChar(20)) When r.RDB$MAP_USING = 'P' and r.RDB$MAP_PLUGIN is null then 'Any Plugin' When r.RDB$MAP_USING = 'S' then 'Any Plugin Serverwide' When r.RDB$MAP_USING = 'M' then 'Mapping' When r.RDB$MAP_USING = '*' then '*' else 'Using ' || r.RDB$MAP_USING || ',' || coalesce(r.RDB$MAP_PLUGIN,'') End as MAP_USING, r.RDB$MAP_USING, r.RDB$MAP_PLUGIN, r.RDB$MAP_DB, r.RDB$MAP_FROM_TYPE, r.RDB$MAP_FROM, Trim(r.RDB$MAP_FROM_TYPE) || ': ' || Trim(r.RDB$MAP_FROM) as MAP_FROM, r.RDB$MAP_TO_TYPE, T.RDB$TYPE_NAME as MAP_TO_TYPE, r.RDB$MAP_TO, Trim(T.RDB$TYPE_NAME) || ': ' || Trim(r.RDB$MAP_TO) as MAP_TO, r.RDB$SYSTEM_FLAG, r.RDB$DESCRIPTION FROM RDB$AUTH_MAPPING r JOIN RDB$TYPES T On T.RDB$TYPE = r.RDB$MAP_TO_TYPE and T.RDB$FIELD_NAME = 'RDB$MAP_TO_TYPE' UNION SELECT r.RDB$DB_KEY, 'Global', r.SEC$MAP_NAME, Case When r.SEC$MAP_USING = 'P' and r.SEC$MAP_PLUGIN is not null then cast ('Plugin ' || r.SEC$MAP_PLUGIN as VarChar(20)) When r.SEC$MAP_USING = 'P' and r.SEC$MAP_PLUGIN is null then 'Any Plugin' When r.SEC$MAP_USING = 'S' then 'Any Plugin Serverwide' When r.SEC$MAP_USING = 'M' then 'Mapping' When r.SEC$MAP_USING = '*' then '*' else 'Using ' || r.SEC$MAP_USING || ',' || coalesce(r.SEC$MAP_PLUGIN,'') End as MAP_USING, r.SEC$MAP_USING, r.SEC$MAP_PLUGIN, r.SEC$MAP_DB, r.SEC$MAP_FROM_TYPE, r.SEC$MAP_FROM, Trim(r.SEC$MAP_FROM_TYPE) || ': ' || Trim(r.SEC$MAP_FROM) as MAP_FROM, r.SEC$MAP_TO_TYPE, T.RDB$TYPE_NAME as MAP_TO_TYPE,r.SEC$MAP_TO, Trim(T.RDB$TYPE_NAME) || ': ' || Trim(r.SEC$MAP_TO) as MAP_TO, null,null FROM SEC$GLOBAL_AUTH_MAPPING r JOIN RDB$TYPES T On T.RDB$TYPE = r.SEC$MAP_TO_TYPE and T.RDB$FIELD_NAME = 'RDB$MAP_TO_TYPE' Params: Updated SQL SELECT r.RDB$DB_KEY, cast('Local' as VarChar(6)) as MAPTYPE, r.RDB$MAP_NAME, Case When r.RDB$MAP_USING = 'P' and r.RDB$MAP_PLUGIN is not null then cast ('Plugin ' || r.RDB$MAP_PLUGIN as VarChar(20)) When r.RDB$MAP_USING = 'P' and r.RDB$MAP_PLUGIN is null then 'Any Plugin' When r.RDB$MAP_USING = 'S' then 'Any Plugin Serverwide' When r.RDB$MAP_USING = 'M' then 'Mapping' When r.RDB$MAP_USING = '*' then '*' else 'Using ' || r.RDB$MAP_USING || ',' || coalesce(r.RDB$MAP_PLUGIN,'') End as MAP_USING, r.RDB$MAP_USING, r.RDB$MAP_PLUGIN, r.RDB$MAP_DB, r.RDB$MAP_FROM_TYPE, r.RDB$MAP_FROM, Trim(r.RDB$MAP_FROM_TYPE) || ': ' || Trim(r.RDB$MAP_FROM) as MAP_FROM, r.RDB$MAP_TO_TYPE, T.RDB$TYPE_NAME as MAP_TO_TYPE, r.RDB$MAP_TO, Trim(T.RDB$TYPE_NAME) || ': ' || Trim(r.RDB$MAP_TO) as MAP_TO, r.RDB$SYSTEM_FLAG, r.RDB$DESCRIPTION FROM RDB$AUTH_MAPPING r JOIN RDB$TYPES T On T.RDB$TYPE = r.RDB$MAP_TO_TYPE and T.RDB$FIELD_NAME = 'RDB$MAP_TO_TYPE' UNION SELECT r.RDB$DB_KEY, 'Global', r.SEC$MAP_NAME, Case When r.SEC$MAP_USING = 'P' and r.SEC$MAP_PLUGIN is not null then cast ('Plugin ' || r.SEC$MAP_PLUGIN as VarChar(20)) When r.SEC$MAP_USING = 'P' and r.SEC$MAP_PLUGIN is null then 'Any Plugin' When r.SEC$MAP_USING = 'S' then 'Any Plugin Serverwide' When r.SEC$MAP_USING = 'M' then 'Mapping' When r.SEC$MAP_USING = '*' then '*' else 'Using ' || r.SEC$MAP_USING || ',' || coalesce(r.SEC$MAP_PLUGIN,'') End as MAP_USING, r.SEC$MAP_USING, r.SEC$MAP_PLUGIN, r.SEC$MAP_DB, r.SEC$MAP_FROM_TYPE, r.SEC$MAP_FROM, Trim(r.SEC$MAP_FROM_TYPE) || ': ' || Trim(r.SEC$MAP_FROM) as MAP_FROM, r.SEC$MAP_TO_TYPE, T.RDB$TYPE_NAME as MAP_TO_TYPE,r.SEC$MAP_TO, Trim(T.RDB$TYPE_NAME) || ': ' || Trim(r.SEC$MAP_TO) as MAP_TO, null,null FROM SEC$GLOBAL_AUTH_MAPPING r JOIN RDB$TYPES T On T.RDB$TYPE = r.SEC$MAP_TO_TYPE and T.RDB$FIELD_NAME = 'RDB$MAP_TO_TYPE' Test String 10 --------------------------------------------------- Select * From A Group By a1,b1 Union Select * From B Rows 3 to 4 --------------------------------------------------- Select: * From: A Where: Group By: a1,b1 Having: Union Select: * From: B Where: Group By: Having: Order by: Plan: Rows: SQL: SELECT * FROM B Params: Order by: Plan: Rows: 3 to 4 SQL: SELECT * FROM A GROUP BY a1,b1 UNION SELECT * FROM B ROWS 3 to 4 Params: Updated SQL SELECT * FROM A GROUP BY a1,b1 UNION SELECT * FROM B ROWS 3 to 4 Test String 11 --------------------------------------------------- Select * From A Union Select * From B Order by 1 Rows 3 to 4 --------------------------------------------------- Select: * From: A Where: Group By: Having: Union Select: * From: B Where: Group By: Having: Order by: Plan: Rows: SQL: SELECT * FROM B Params: Order by: 1 Plan: Rows: 3 to 4 SQL: SELECT * FROM A UNION SELECT * FROM B ORDER BY 1 ROWS 3 to 4 Params: Updated SQL SELECT * FROM A UNION SELECT * FROM B ORDER BY 1 ROWS 3 to 4 Test String 12 --------------------------------------------------- Select * From A Union Select * From B Union Select * FROM C Order by 1 --------------------------------------------------- Select: * From: A Where: Group By: Having: Union Select: * From: B Where: Group By: Having: Union Select: * From: C Where: Group By: Having: Order by: Plan: Rows: SQL: SELECT * FROM C Params: Order by: Plan: Rows: SQL: SELECT * FROM B UNION SELECT * FROM C Params: Order by: 1 Plan: Rows: SQL: SELECT * FROM A UNION SELECT * FROM B UNION SELECT * FROM C ORDER BY 1 Params: Updated SQL SELECT * FROM A UNION SELECT * FROM B UNION SELECT * FROM C ORDER BY 1 Test String 13 --------------------------------------------------- --------------------------------------------------- Not a Select Statement ------------------------------------------------------ Running Test 25: TIBTable Tests IBTable after create /* Table: TestTable, Owner: SYSDBA */ CREATE TABLE "TestTable" ( MYKEY INTEGER NOT NULL, TEXTFIELD VARCHAR(32) CHARACTER SET UTF8, CONSTRAINT "PrimaryIndex" PRIMARY KEY (MYKEY) ); Dataset Empty Rows printed = 0 Add 2 rows Row No = 1 MYKEY = 1 TEXTFIELD = Test 1 (Charset = UTF8 Codepage = 65001) Row No = 2 MYKEY = 2 TEXTFIELD = Test 2 (Charset = UTF8 Codepage = 65001) Rows printed = 2 Update first row Row No = 1 MYKEY = 1 TEXTFIELD = Updated Test 1 (Charset = UTF8 Codepage = 65001) Row No = 2 MYKEY = 2 TEXTFIELD = Test 2 (Charset = UTF8 Codepage = 65001) Rows printed = 2 Delete first row Row No = 1 MYKEY = 2 TEXTFIELD = Test 2 (Charset = UTF8 Codepage = 65001) Rows printed = 1 Empty the Table Dataset Empty Rows printed = 0 Now drop the table Extract table after drop - should be empty ------------------------------------------------------ Running Test 26: IBXScript data out and exceptional conditions Dump project table to CSV PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT 'VBASE','Video Database','Design a video data base management system for controlling on-demand video distribution. ',45,'software' 'DGPII','DigiPizza','Develop second generation digital pizza maker with flash-bake heating element and digital ingredient measuring system. ',24,'other' 'GUIDE','AutoMap','Develop a prototype for the automobile version of the hand-held map browsing device. ',20,'hardware' 'MAPDB','MapBrowser port','Port the map browsing database software to run on the automobile model. ',4,'software' 'HWRII','Translator upgrade','Integrate the hand-writing recognition module into the universal language translator. ',,'software' 'MKTPR','Marketing project 3','Expand marketing and sales in the Pacific Rim. Set up a field office in Australia and Singapore. ',85,'N/A' Dump project table to Insert Statements /* Inserting data into Table: PROJECT */ INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('VBASE','Video Database','Design a video data base management system for controlling on-demand video distribution. ',45,'software'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('DGPII','DigiPizza','Develop second generation digital pizza maker with flash-bake heating element and digital ingredient measuring system. ',24,'other'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('GUIDE','AutoMap','Develop a prototype for the automobile version of the hand-held map browsing device. ',20,'hardware'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('MAPDB','MapBrowser port','Port the map browsing database software to run on the automobile model. ',4,'software'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('HWRII','Translator upgrade','Integrate the hand-writing recognition module into the universal language translator. ',NULL,'software'); INSERT INTO PROJECT (PROJ_ID,PROJ_NAME,PROJ_DESC,TEAM_LEADER,PRODUCT) VALUES('MKTPR','Marketing project 3','Expand marketing and sales in the Pacific Rim. Set up a field office in Australia and Singapore. ',85,'N/A'); Dump project table to Data Block Format ---------------------------------------------------------------------------------------------------------------------------------------- |PROJ_ID| PROJ_NAME | PROJ_DESC |TEAM_LEADER| PRODUCT | ---------------------------------------------------------------------------------------------------------------------------------------- |VBASE |Video Database |Design a video data base management system for controlling on-demand video di...| 45|software | ---------------------------------------------------------------------------------------------------------------------------------------- |DGPII |DigiPizza |Develop second generation digital pizza maker with flash-bake heating element...| 24|other | ---------------------------------------------------------------------------------------------------------------------------------------- |GUIDE |AutoMap |Develop a prototype for the automobile version of the hand-held map browsing ...| 20|hardware | ---------------------------------------------------------------------------------------------------------------------------------------- |MAPDB |MapBrowser port |Port the map browsing database software to run on the automobile model. | 4|software | ---------------------------------------------------------------------------------------------------------------------------------------- |HWRII |Translator upgrade |Integrate the hand-writing recognition module into the universal language tra...| NULL |software | ---------------------------------------------------------------------------------------------------------------------------------------- |MKTPR |Marketing project 3 |Expand marketing and sales in the Pacific Rim. Set up a field office in Austr...| 85|N/A | ---------------------------------------------------------------------------------------------------------------------------------------- Unknown SET statement - stop on first error Script Error: Set Blah; Script Error: Error processing SQL statement: On Line 2 Character 1: Invalid BLAH Statement - Set Blah - for statement "Set Blah" Unknown SET statement - continue after error Script Error: Set Blah; Script Error: Error processing SQL statement: On Line 2 Character 1: Invalid BLAH Statement - Set Blah - for statement "Set Blah" -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |JOB_CODE|JOB_GRADE| JOB_COUNTRY | JOB_TITLE | MIN_SALARY | MAX_SALARY | JOB_REQUIREMENT |LANGUAGE_REQ| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |CEO | 1|USA |Chief Executive Officer | 130000| 250000|No specific requirements. | NULL | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |CFO | 1|USA |Chief Financial Officer | 85000| 140000|15+ years in finance or 5+ years as a CFO with a proven track record. MBA or ...| NULL | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------ Running Test 27: create, bring up-to-date and read from local database Creating new Database gbak:opened file resources/Test27/employee.gbk gbak:transportable backup -- data in XDR format gbak: backup file is compressed gbak:backup version is 9 gbak:created database /home/tony/.MWA Software/testsuite1.fdb, page_size 4096 bytes gbak:started transaction gbak:restoring domain FIRSTNAME gbak:restoring domain LASTNAME gbak:restoring domain PHONENUMBER gbak:restoring domain COUNTRYNAME gbak:restoring domain ADDRESSLINE gbak:restoring domain EMPNO gbak:restoring domain DEPTNO gbak:restoring domain PROJNO gbak:restoring domain CUSTNO gbak:restoring domain JOBCODE gbak:restoring domain JOBGRADE gbak:restoring domain SALARY gbak:restoring domain BUDGET gbak:restoring domain PRODTYPE gbak:restoring domain PONUMBER gbak:restoring domain RDB$1 gbak:restoring domain RDB$2 gbak:restoring domain RDB$3 gbak:restoring domain RDB$4 gbak:restoring domain RDB$5 gbak:restoring domain RDB$6 gbak:restoring domain RDB$7 gbak:restoring domain RDB$8 gbak:restoring domain RDB$9 gbak:restoring domain RDB$10 gbak:restoring domain RDB$11 gbak:restoring domain RDB$12 gbak:restoring domain RDB$13 gbak:restoring domain RDB$14 gbak:restoring domain RDB$15 gbak:restoring domain RDB$16 gbak:restoring domain RDB$17 gbak:restoring domain RDB$18 gbak:restoring domain RDB$19 gbak:restoring domain RDB$20 gbak:restoring domain RDB$21 gbak:restoring domain RDB$22 gbak:restoring domain RDB$23 gbak:restoring domain RDB$24 gbak:restoring domain RDB$25 gbak:restoring domain RDB$26 gbak:restoring domain RDB$27 gbak:restoring domain RDB$28 gbak:restoring domain RDB$29 gbak:restoring domain RDB$30 gbak:restoring domain RDB$31 gbak:restoring domain RDB$32 gbak:restoring domain RDB$33 gbak:restoring domain RDB$34 gbak:restoring domain RDB$35 gbak:restoring domain RDB$36 gbak:restoring domain RDB$37 gbak:restoring domain RDB$38 gbak:restoring domain RDB$39 gbak:restoring domain RDB$40 gbak:restoring domain RDB$41 gbak:restoring domain RDB$42 gbak:restoring domain RDB$43 gbak:restoring domain RDB$44 gbak:restoring domain RDB$45 gbak:restoring domain RDB$46 gbak:restoring domain RDB$47 gbak:restoring domain RDB$48 gbak:restoring domain RDB$49 gbak:restoring domain RDB$50 gbak:restoring domain RDB$51 gbak:restoring domain RDB$52 gbak:restoring domain RDB$53 gbak:restoring domain RDB$54 gbak:restoring domain RDB$55 gbak:restoring domain RDB$56 gbak:restoring domain RDB$57 gbak:restoring domain RDB$58 gbak:restoring domain RDB$59 gbak:restoring domain RDB$60 gbak:restoring domain RDB$61 gbak:restoring domain RDB$62 gbak:restoring domain RDB$63 gbak:restoring domain RDB$64 gbak:committing metadata gbak:restoring table COUNTRY gbak: restoring column CURRENCY gbak: restoring column COUNTRY gbak:restoring table JOB gbak: restoring column MIN_SALARY gbak: restoring column MAX_SALARY gbak: restoring column JOB_REQUIREMENT gbak: restoring column JOB_GRADE gbak: restoring column JOB_CODE gbak: restoring column JOB_COUNTRY gbak: restoring column JOB_TITLE gbak: restoring column LANGUAGE_REQ gbak:restoring table DEPARTMENT gbak: restoring column BUDGET gbak: restoring column MNGR_NO gbak: restoring column PHONE_NO gbak: restoring column DEPT_NO gbak: restoring column DEPARTMENT gbak: restoring column HEAD_DEPT gbak: restoring column LOCATION gbak:restoring table EMPLOYEE gbak: restoring column HIRE_DATE gbak: restoring column SALARY gbak: restoring column EMP_NO gbak: restoring column LAST_NAME gbak: restoring column PHONE_EXT gbak: restoring column JOB_GRADE gbak: restoring column FIRST_NAME gbak: restoring column DEPT_NO gbak: restoring column JOB_CODE gbak: restoring column JOB_COUNTRY gbak: restoring column FULL_NAME gbak:restoring table SALES gbak: restoring column PO_NUMBER gbak: restoring column ORDER_DATE gbak: restoring column SHIP_DATE gbak: restoring column DATE_NEEDED gbak: restoring column AGED gbak: restoring column CUST_NO gbak: restoring column QTY_ORDERED gbak: restoring column TOTAL_VALUE gbak: restoring column DISCOUNT gbak: restoring column SALES_REP gbak: restoring column ITEM_TYPE gbak: restoring column ORDER_STATUS gbak: restoring column PAID gbak:restoring table PHONE_LIST gbak: table PHONE_LIST is a view gbak: restoring column EMP_NO gbak: restoring column LAST_NAME gbak: restoring column PHONE_EXT gbak: restoring column PHONE_NO gbak: restoring column FIRST_NAME gbak: restoring column LOCATION gbak:restoring table PROJECT gbak: restoring column PROJ_DESC gbak: restoring column PROJ_NAME gbak: restoring column TEAM_LEADER gbak: restoring column PRODUCT gbak: restoring column PROJ_ID gbak:restoring table EMPLOYEE_PROJECT gbak: restoring column EMP_NO gbak: restoring column PROJ_ID gbak:restoring table PROJ_DEPT_BUDGET gbak: restoring column PROJECTED_BUDGET gbak: restoring column FISCAL_YEAR gbak: restoring column QUART_HEAD_CNT gbak: restoring column PROJ_ID gbak: restoring column DEPT_NO gbak:restoring table SALARY_HISTORY gbak: restoring column CHANGE_DATE gbak: restoring column OLD_SALARY gbak: restoring column PERCENT_CHANGE gbak: restoring column NEW_SALARY gbak: restoring column EMP_NO gbak: restoring column UPDATER_ID gbak:restoring table CUSTOMER gbak: restoring column ADDRESS_LINE1 gbak: restoring column ADDRESS_LINE2 gbak: restoring column CUST_NO gbak: restoring column CONTACT_LAST gbak: restoring column PHONE_NO gbak: restoring column POSTAL_CODE gbak: restoring column CUSTOMER gbak: restoring column CONTACT_FIRST gbak: restoring column CITY gbak: restoring column STATE_PROVINCE gbak: restoring column COUNTRY gbak: restoring column ON_HOLD gbak:restoring generator EMP_NO_GEN value: 145 gbak:restoring generator CUST_NO_GEN value: 1015 gbak:restoring stored procedure GET_EMP_PROJ gbak: restoring parameter EMP_NO for stored procedure gbak: restoring parameter PROJ_ID for stored procedure gbak:restoring stored procedure ADD_EMP_PROJ gbak: restoring parameter EMP_NO for stored procedure gbak: restoring parameter PROJ_ID for stored procedure gbak:restoring stored procedure SUB_TOT_BUDGET gbak: restoring parameter HEAD_DEPT for stored procedure gbak: restoring parameter TOT_BUDGET for stored procedure gbak: restoring parameter AVG_BUDGET for stored procedure gbak: restoring parameter MIN_BUDGET for stored procedure gbak: restoring parameter MAX_BUDGET for stored procedure gbak:restoring stored procedure DELETE_EMPLOYEE gbak: restoring parameter EMP_NUM for stored procedure gbak:restoring stored procedure DEPT_BUDGET gbak: restoring parameter DNO for stored procedure gbak: restoring parameter TOT for stored procedure gbak:restoring stored procedure ORG_CHART gbak: restoring parameter HEAD_DEPT for stored procedure gbak: restoring parameter DEPARTMENT for stored procedure gbak: restoring parameter MNGR_NAME for stored procedure gbak: restoring parameter TITLE for stored procedure gbak: restoring parameter EMP_CNT for stored procedure gbak:restoring stored procedure MAIL_LABEL gbak: restoring parameter CUST_NO for stored procedure gbak: restoring parameter LINE1 for stored procedure gbak: restoring parameter LINE2 for stored procedure gbak: restoring parameter LINE3 for stored procedure gbak: restoring parameter LINE4 for stored procedure gbak: restoring parameter LINE5 for stored procedure gbak: restoring parameter LINE6 for stored procedure gbak:restoring stored procedure SHIP_ORDER gbak: restoring parameter PO_NUM for stored procedure gbak:restoring stored procedure SHOW_LANGS gbak: restoring parameter CODE for stored procedure gbak: restoring parameter GRADE for stored procedure gbak: restoring parameter CTY for stored procedure gbak: restoring parameter LANGUAGES for stored procedure gbak:restoring stored procedure ALL_LANGS gbak: restoring parameter CODE for stored procedure gbak: restoring parameter GRADE for stored procedure gbak: restoring parameter COUNTRY for stored procedure gbak: restoring parameter LANG for stored procedure gbak:restoring exception UNKNOWN_EMP_ID gbak:restoring exception REASSIGN_SALES gbak:restoring exception ORDER_ALREADY_SHIPPED gbak:restoring exception CUSTOMER_ON_HOLD gbak:restoring exception CUSTOMER_CHECK gbak:committing metadata gbak: restoring index RDB$PRIMARY22 gbak: restoring index RDB$FOREIGN23 gbak: restoring index CUSTNAMEX gbak: restoring index CUSTREGION gbak:restoring data for table CUSTOMER gbak: 15 records restored gbak: restoring index RDB$PRIMARY20 gbak: restoring index RDB$FOREIGN21 gbak: restoring index UPDATERX gbak: restoring index CHANGEX gbak:restoring data for table SALARY_HISTORY gbak: 49 records restored gbak: restoring index RDB$PRIMARY17 gbak: restoring index RDB$FOREIGN18 gbak: restoring index RDB$FOREIGN19 gbak:restoring data for table PROJ_DEPT_BUDGET gbak: 24 records restored gbak: restoring index RDB$PRIMARY14 gbak: restoring index RDB$FOREIGN15 gbak: restoring index RDB$FOREIGN16 gbak:restoring data for table EMPLOYEE_PROJECT gbak: 28 records restored gbak: restoring index RDB$11 gbak: restoring index RDB$PRIMARY12 gbak: restoring index RDB$FOREIGN13 gbak: restoring index PRODTYPEX gbak:restoring data for table PROJECT gbak: 6 records restored gbak: restoring index RDB$PRIMARY24 gbak: restoring index RDB$FOREIGN25 gbak: restoring index RDB$FOREIGN26 gbak: restoring index NEEDX gbak: restoring index SALESTATX gbak: restoring index QTYX gbak:restoring data for table SALES gbak: 33 records restored gbak: restoring index RDB$PRIMARY7 gbak: restoring index RDB$FOREIGN8 gbak: restoring index RDB$FOREIGN9 gbak: restoring index NAMEX gbak:restoring data for table EMPLOYEE gbak: 42 records restored gbak: restoring index RDB$4 gbak: restoring index RDB$PRIMARY5 gbak: restoring index RDB$FOREIGN6 gbak: restoring index BUDGETX gbak: restoring index RDB$FOREIGN10 gbak:restoring data for table DEPARTMENT gbak: 21 records restored gbak: restoring index RDB$PRIMARY2 gbak: restoring index RDB$FOREIGN3 gbak: restoring index MINSALX gbak: restoring index MAXSALX gbak:restoring data for table JOB gbak: 31 records restored gbak: restoring index RDB$PRIMARY1 gbak:restoring data for table COUNTRY gbak: 14 records restored gbak: restoring trigger CHECK_1 gbak: restoring trigger CHECK_2 gbak: restoring trigger CHECK_3 gbak: restoring trigger CHECK_4 gbak: restoring trigger SET_EMP_NO gbak: restoring trigger CHECK_5 gbak: restoring trigger CHECK_6 gbak: restoring trigger CHECK_7 gbak: restoring trigger CHECK_8 gbak: restoring trigger SAVE_SALARY_CHANGE gbak: restoring trigger CHECK_9 gbak: restoring trigger CHECK_10 gbak: restoring trigger SET_CUST_NO gbak: restoring trigger CHECK_11 gbak: restoring trigger CHECK_12 gbak: restoring trigger CHECK_13 gbak: restoring trigger CHECK_14 gbak: restoring trigger CHECK_15 gbak: restoring trigger CHECK_16 gbak: restoring trigger CHECK_17 gbak: restoring trigger CHECK_18 gbak: restoring trigger CHECK_19 gbak: restoring trigger CHECK_20 gbak: restoring trigger CHECK_21 gbak: restoring trigger CHECK_22 gbak: restoring trigger CHECK_23 gbak: restoring trigger CHECK_24 gbak: restoring trigger CHECK_25 gbak: restoring trigger CHECK_26 gbak: restoring trigger CHECK_27 gbak: restoring trigger CHECK_28 gbak: restoring trigger POST_NEW_ORDER gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak: restoring privilege for user PUBLIC gbak:creating indexes gbak:committing metadata gbak: activating and creating deferred index RDB$PRIMARY22 gbak: activating and creating deferred index CUSTNAMEX gbak: activating and creating deferred index CUSTREGION gbak: activating and creating deferred index RDB$PRIMARY20 gbak: activating and creating deferred index UPDATERX gbak: activating and creating deferred index CHANGEX gbak: activating and creating deferred index RDB$PRIMARY17 gbak: activating and creating deferred index RDB$PRIMARY14 gbak: activating and creating deferred index RDB$11 gbak: activating and creating deferred index RDB$PRIMARY12 gbak: activating and creating deferred index PRODTYPEX gbak: activating and creating deferred index RDB$PRIMARY24 gbak: activating and creating deferred index NEEDX gbak: activating and creating deferred index SALESTATX gbak: activating and creating deferred index QTYX gbak: activating and creating deferred index RDB$PRIMARY7 gbak: activating and creating deferred index NAMEX gbak: activating and creating deferred index RDB$4 gbak: activating and creating deferred index RDB$PRIMARY5 gbak: activating and creating deferred index BUDGETX gbak: activating and creating deferred index RDB$PRIMARY2 gbak: activating and creating deferred index MINSALX gbak: activating and creating deferred index MAXSALX gbak: activating and creating deferred index RDB$PRIMARY1 gbak: activating and creating deferred index RDB$FOREIGN3 gbak: activating and creating deferred index RDB$FOREIGN6 gbak: activating and creating deferred index RDB$FOREIGN8 gbak: activating and creating deferred index RDB$FOREIGN9 gbak: activating and creating deferred index RDB$FOREIGN10 gbak: activating and creating deferred index RDB$FOREIGN13 gbak: activating and creating deferred index RDB$FOREIGN15 gbak: activating and creating deferred index RDB$FOREIGN16 gbak: activating and creating deferred index RDB$FOREIGN18 gbak: activating and creating deferred index RDB$FOREIGN19 gbak: activating and creating deferred index RDB$FOREIGN21 gbak: activating and creating deferred index RDB$FOREIGN23 gbak: activating and creating deferred index RDB$FOREIGN25 gbak: activating and creating deferred index RDB$FOREIGN26 gbak:adjusting views dbkey length gbak:updating ownership of packages, procedures and tables gbak:adding missing privileges gbak:adjusting system generators gbak:finishing, closing, and going home gbak:adjusting the ONLINE and FORCED WRITES flags Upgrading to Version 1 Applying Update from resources/Test27/patches/01-patch.sql Create Table DBVERSIONINFO( VersionNo Integer not null ); Insert into DBVERSIONINFO(VersionNo) Values(1); Commit; Upgrading to Version 2 Applying Update from resources/Test27/patches/02-patch.sql Alter Table EMPLOYEE Add Photo Blob; Create View DeptList As with recursive Depts As ( Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT as VarChar(256)) as DEPT_PATH, cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH From DEPARTMENT Where HEAD_DEPT is NULL UNION ALL Select D.DEPT_NO, D.DEPARTMENT, D.HEAD_DEPT, Depts.DEPT_PATH || ' / ' || D.DEPARTMENT as DEPT_PATH, Depts.DEPT_KEY_PATH || ';' || D.DEPT_NO as DEPT_KEY_PATH From DEPARTMENT D JOIN Depts On D.HEAD_DEPT = Depts.DEPT_NO ) Select A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH, A.PHOTO From EMPLOYEE A JOIN Depts D On D.DEPT_NO = A.DEPT_NO; Update EMPLOYEE Set Photo =:MUGSHOT Where Emp_no = 2; Resolving Query Parameter: MUGSHOT Update DBVERSIONINFO Set VersionNo = 2; Commit; Row No = 1 EMP_NO = 12 FIRST_NAME = Terri LAST_NAME = Lee PHONE_EXT = 256 HIRE_DATE = 01/5/1990 DEPT_NO = 000 JOB_CODE = Admin JOB_GRADE = 4 JOB_COUNTRY = USA SALARY = 53793 FULL_NAME = Lee, Terri PHOTO = NULL DEPT_PATH = Corporate Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset = UTF8 Codepage = 65001) Row No = 2 EMP_NO = 105 FIRST_NAME = Oliver H. LAST_NAME = Bender PHONE_EXT = 255 HIRE_DATE = 08/10/1992 DEPT_NO = 000 JOB_CODE = CEO JOB_GRADE = 1 JOB_COUNTRY = USA SALARY = 212850 FULL_NAME = Bender, Oliver H. PHOTO = NULL DEPT_PATH = Corporate Headquarters (Charset = UTF8 Codepage = 65001) DEPT_KEY_PATH = 000 (Charset = UTF8 Codepage = 65001) Rows printed = 2 ------------------------------------------------------ Running Test 28: Create Local Database from Script Creating new Database Show schema for /home/tony/.MWA Software/testsuite1.fdb SET SQL DIALECT 3; SET AUTODDL ON; /* CREATE DATABASE '/home/tony/.MWA Software/testsuite1.fdb' PAGE_SIZE 8192 DEFAULT CHARACTER SET UTF8; */ /* Table: DBVERSIONINFO, Owner: SYSDBA */ CREATE TABLE DBVERSIONINFO ( VERSIONNO INTEGER NOT NULL, PRIMARY KEY (VERSIONNO) ); /* Table: IBDATASETTEST, Owner: SYSDBA */ CREATE TABLE IBDATASETTEST ( KEYFIELD INTEGER NOT NULL, PLAINTEXT VARCHAR(128), TEXTANDKEY COMPUTED BY (KeyField || ': ' || PlainText), SERVERSIDETEXT VARCHAR(256), PRIMARY KEY (KEYFIELD) ); /* Data Starts */ /* Inserting data into Table: DBVERSIONINFO */ INSERT INTO DBVERSIONINFO (VERSIONNO) VALUES(1); COMMIT; /* Data Ends */ CREATE SEQUENCE AGENERATOR; ALTER SEQUENCE AGENERATOR RESTART WITH 1; SET TERM ^; /* Triggers only will work for SQL triggers */ CREATE TRIGGER BEFOREINSERTTEST FOR IBDATASETTEST ACTIVE BEFORE INSERT or UPDATE POSITION 0 As Begin new.ServerSideText = new.KeyField || ' - ' || new.PlainText; End ^ COMMIT WORK^ SET TERM ;^ /* Comments on System Objects */ /* Grant Roles for this database */ /* Grant permissions for this database */ Now test out an upgrade failure gbak:readied database /home/tony/.MWA Software/testsuite1.fdb for backup gbak:creating file /home/tony/.MWA Software/testsuite1.1.gbk gbak:starting transaction gbak:database /home/tony/.MWA Software/testsuite1.fdb has a page size of 8192 bytes. gbak:writing domains gbak: writing domain RDB$1 gbak: writing domain RDB$2 gbak: writing domain RDB$3 gbak: writing domain RDB$4 gbak: writing domain RDB$5 gbak:writing shadow files gbak:writing character sets gbak:writing collations gbak:writing tables gbak: writing table IBDATASETTEST gbak: writing column KEYFIELD gbak: writing column PLAINTEXT gbak: writing column TEXTANDKEY gbak: writing column SERVERSIDETEXT gbak: writing table DBVERSIONINFO gbak: writing column VERSIONNO gbak:writing types gbak:writing filters gbak:writing id generators gbak: writing generator AGENERATOR value 1 gbak:writing exceptions gbak:writing functions gbak:writing stored procedures gbak:writing packages gbak: writing index RDB$PRIMARY2 gbak: writing data for table DBVERSIONINFO gbak:1 records written gbak: writing index RDB$PRIMARY1 gbak: writing data for table IBDATASETTEST gbak:1 records written gbak:writing triggers gbak: writing trigger BEFOREINSERTTEST gbak:writing trigger messages gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak:writing security classes gbak:writing table constraints gbak:writing constraint INTEG_1 gbak:writing constraint INTEG_2 gbak:writing constraint INTEG_3 gbak:writing referential constraints gbak:writing check constraints gbak:writing SQL roles gbak:writing names mapping gbak:writing publications gbak:closing file, committing, and finishing. 3072 bytes written Database Archived to /home/tony/.MWA Software/testsuite1.1.gbk Upgrading to Version 2 Applying Update from resources/Test28/patches/01-badpatch.sql Create table GoodTable( TheKey integer not null, aText VarChar(12), Primary Key(TheKey) ); Create table blah; Error processing SQL statement: On Line 8 Character 1: Engine Code: 335544569 Dynamic SQL Error -SQL error code = -104 -Unexpected end of command - line 2, column 1 When Executing: Create table blah - for statement "Create table blah" Downgrading to version 1 gbak:opened file /home/tony/.MWA Software/testsuite1.1.gbk gbak:transportable backup -- data in XDR format gbak: backup file is compressed gbak:backup version is 11 gbak:created database /home/tony/.MWA Software/testsuite1.fdb, page_size 8192 bytes gbak:started transaction gbak:restoring domain RDB$1 gbak:restoring domain RDB$2 gbak:restoring domain RDB$3 gbak:restoring domain RDB$4 gbak:restoring domain RDB$5 gbak:committing metadata gbak:restoring table IBDATASETTEST gbak: restoring column KEYFIELD gbak: restoring column PLAINTEXT gbak: restoring column TEXTANDKEY gbak: restoring column SERVERSIDETEXT gbak:restoring table DBVERSIONINFO gbak: restoring column VERSIONNO gbak:restoring generator AGENERATOR value: 1 gbak:committing metadata gbak: restoring index RDB$PRIMARY2 gbak:restoring data for table DBVERSIONINFO gbak: 1 records restored gbak: restoring index RDB$PRIMARY1 gbak:restoring data for table IBDATASETTEST gbak: 1 records restored gbak: restoring trigger BEFOREINSERTTEST gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak:creating indexes gbak:committing metadata gbak: activating and creating deferred index RDB$PRIMARY2 gbak: activating and creating deferred index RDB$PRIMARY1 gbak:adjusting views dbkey length gbak:updating ownership of packages, procedures and tables gbak:adding missing privileges gbak:adjusting system generators gbak:finishing, closing, and going home gbak:adjusting the ONLINE and FORCED WRITES flags Upgrade failed (as expected): Upgrade Failed. Database Version No. is 1 Schema after failed upgrade is SET SQL DIALECT 3; SET AUTODDL ON; /* CREATE DATABASE '/home/tony/.MWA Software/testsuite1.fdb' PAGE_SIZE 8192 DEFAULT CHARACTER SET UTF8; */ /* Table: DBVERSIONINFO, Owner: SYSDBA */ CREATE TABLE DBVERSIONINFO ( VERSIONNO INTEGER NOT NULL, PRIMARY KEY (VERSIONNO) ); /* Table: IBDATASETTEST, Owner: SYSDBA */ CREATE TABLE IBDATASETTEST ( KEYFIELD INTEGER NOT NULL, PLAINTEXT VARCHAR(128), TEXTANDKEY COMPUTED BY (KeyField || ': ' || PlainText), SERVERSIDETEXT VARCHAR(256), PRIMARY KEY (KEYFIELD) ); /* Data Starts */ /* Inserting data into Table: DBVERSIONINFO */ INSERT INTO DBVERSIONINFO (VERSIONNO) VALUES(1); COMMIT; /* Inserting data into Table: IBDATASETTEST */ INSERT INTO IBDATASETTEST (KEYFIELD,PLAINTEXT,SERVERSIDETEXT) VALUES(1,'Test','1 - Test'); COMMIT; /* Data Ends */ CREATE SEQUENCE AGENERATOR; ALTER SEQUENCE AGENERATOR RESTART WITH 2; SET TERM ^; /* Triggers only will work for SQL triggers */ CREATE TRIGGER BEFOREINSERTTEST FOR IBDATASETTEST ACTIVE BEFORE INSERT or UPDATE POSITION 0 As Begin new.ServerSideText = new.KeyField || ' - ' || new.PlainText; End ^ COMMIT WORK^ SET TERM ;^ /* Comments on System Objects */ /* Grant Roles for this database */ /* Grant permissions for this database */ Save and Restore Tests gbak:readied database /home/tony/.MWA Software/testsuite1.fdb for backup gbak:creating file /tmp/ibx-testsuite/testsuite.gbk gbak:starting transaction gbak:database /home/tony/.MWA Software/testsuite1.fdb has a page size of 8192 bytes. gbak:writing domains gbak: writing domain RDB$1 gbak: writing domain RDB$2 gbak: writing domain RDB$3 gbak: writing domain RDB$4 gbak: writing domain RDB$5 gbak:writing shadow files gbak:writing character sets gbak:writing collations gbak:writing tables gbak: writing table IBDATASETTEST gbak: writing column KEYFIELD gbak: writing column PLAINTEXT gbak: writing column TEXTANDKEY gbak: writing column SERVERSIDETEXT gbak: writing table DBVERSIONINFO gbak: writing column VERSIONNO gbak:writing types gbak:writing filters gbak:writing id generators gbak: writing generator AGENERATOR value 2 gbak:writing exceptions gbak:writing functions gbak:writing stored procedures gbak:writing packages gbak: writing index RDB$PRIMARY2 gbak: writing data for table DBVERSIONINFO gbak:1 records written gbak: writing index RDB$PRIMARY1 gbak: writing data for table IBDATASETTEST gbak:2 records written gbak:writing triggers gbak: writing trigger BEFOREINSERTTEST gbak:writing trigger messages gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak: writing privilege for user SYSDBA gbak:writing security classes gbak:writing table constraints gbak:writing constraint INTEG_1 gbak:writing constraint INTEG_2 gbak:writing constraint INTEG_3 gbak:writing referential constraints gbak:writing check constraints gbak:writing SQL roles gbak:writing names mapping gbak:writing publications gbak:closing file, committing, and finishing. 3072 bytes written Database Archived to /tmp/ibx-testsuite/testsuite.gbk gbak:opened file /tmp/ibx-testsuite/testsuite.gbk gbak:transportable backup -- data in XDR format gbak: backup file is compressed gbak:backup version is 11 gbak:created database /home/tony/.MWA Software/testsuite1.fdb, page_size 8192 bytes gbak:started transaction gbak:restoring domain RDB$1 gbak:restoring domain RDB$2 gbak:restoring domain RDB$3 gbak:restoring domain RDB$4 gbak:restoring domain RDB$5 gbak:committing metadata gbak:restoring table IBDATASETTEST gbak: restoring column KEYFIELD gbak: restoring column PLAINTEXT gbak: restoring column TEXTANDKEY gbak: restoring column SERVERSIDETEXT gbak:restoring table DBVERSIONINFO gbak: restoring column VERSIONNO gbak:restoring generator AGENERATOR value: 2 gbak:committing metadata gbak: restoring index RDB$PRIMARY2 gbak:restoring data for table DBVERSIONINFO gbak: 1 records restored gbak: restoring index RDB$PRIMARY1 gbak:restoring data for table IBDATASETTEST gbak: 2 records restored gbak: restoring trigger BEFOREINSERTTEST gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak:creating indexes gbak:committing metadata gbak: activating and creating deferred index RDB$PRIMARY2 gbak: activating and creating deferred index RDB$PRIMARY1 gbak:adjusting views dbkey length gbak:updating ownership of packages, procedures and tables gbak:adding missing privileges gbak:adjusting system generators gbak:finishing, closing, and going home gbak:adjusting the ONLINE and FORCED WRITES flags Database after restore SET SQL DIALECT 3; SET AUTODDL ON; /* CREATE DATABASE '/home/tony/.MWA Software/testsuite1.fdb' PAGE_SIZE 8192 DEFAULT CHARACTER SET UTF8; */ /* Table: DBVERSIONINFO, Owner: SYSDBA */ CREATE TABLE DBVERSIONINFO ( VERSIONNO INTEGER NOT NULL, PRIMARY KEY (VERSIONNO) ); /* Table: IBDATASETTEST, Owner: SYSDBA */ CREATE TABLE IBDATASETTEST ( KEYFIELD INTEGER NOT NULL, PLAINTEXT VARCHAR(128), TEXTANDKEY COMPUTED BY (KeyField || ': ' || PlainText), SERVERSIDETEXT VARCHAR(256), PRIMARY KEY (KEYFIELD) ); /* Data Starts */ /* Inserting data into Table: DBVERSIONINFO */ INSERT INTO DBVERSIONINFO (VERSIONNO) VALUES(1); COMMIT; /* Inserting data into Table: IBDATASETTEST */ INSERT INTO IBDATASETTEST (KEYFIELD,PLAINTEXT,SERVERSIDETEXT) VALUES(1,'Test','1 - Test'); INSERT INTO IBDATASETTEST (KEYFIELD,PLAINTEXT,SERVERSIDETEXT) VALUES(2,'Test','2 - Test'); COMMIT; /* Data Ends */ CREATE SEQUENCE AGENERATOR; ALTER SEQUENCE AGENERATOR RESTART WITH 3; SET TERM ^; /* Triggers only will work for SQL triggers */ CREATE TRIGGER BEFOREINSERTTEST FOR IBDATASETTEST ACTIVE BEFORE INSERT or UPDATE POSITION 0 As Begin new.ServerSideText = new.KeyField || ' - ' || new.PlainText; End ^ COMMIT WORK^ SET TERM ;^ /* Comments on System Objects */ /* Grant Roles for this database */ /* Grant permissions for this database */ ------------------------------------------------------ Running Test 29: IBJournal Tests Creating Database from resources/Test29.sql Create Table IBXTest ( TableKey Integer not null, F1 Smallint, F2 Float, F3 Double Precision, F4 Decimal(9,3), F5 Decimal(18,4), F6 Date, F7 Timestamp, F8 Char (2), F9 VarChar(256), F10 Blob, F11 BigInt, "f12" Integer, F13 Time, F14 Blob sub_type text, F15 Double Precision Computed by (F2 + F3), MyArray Integer [0:16], "GRANTS" VarChar(20), "My Field" VarChar(32), "MY Field" VarChar(32), Primary Key(TableKey) ); Create Generator IBXGen; Journal Entry Made Journal Entry at 2023/06/17 14:55:23.7070: Type = Transaction Start Attachment ID = 4 Session ID = 1 Transaction ID = 11 Transaction Name = "{0A595AC0-C43B-4302-9C1E-ECD354ACC142}" TPB = [isc_tpb_concurrency,isc_tpb_wait,isc_tpb_write] Default Completion = TACommit Field Names for Dataset29 TABLEKEY F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 MYARRAY GRANTS MYFIELD1 MYFIELD2 Add a record Journal Entry Made Journal Entry at 2023/06/17 14:55:23.7640: Type = Query Attachment ID = 4 Session ID = 1 Transaction ID = 11 Query Text = "Insert Into IBXTEST(TABLEKEY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, "f12", F13, F14, MyArray, GRANTS) Values(1, 2, 0.314, 0.31412345678, 101.314, 101.99, '2007-12-25', '2007-12-25 12:30:29.1300','XX', 'The Quick Brown Fox jumps over the lazy dog', FFD8FFE000104A46494600010101004800480000FFE11E0545786966000049492A00080000000C00 0E010200200000009E0000000F01020014000000BE0000001001020008000000D200000012010300 01000000010000001A01050001000000DA000000 , 9223372036854775807, 65566, '12:30:45.0000', 'If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o''er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: ''Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe''er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l''amour, continuez à jouer; Donnez-m''en un excès, que, surexcité, L''appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m''est venu à l''oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l''odeur! Assez; Pas plus: «Ce n''est pas si doux maintenant qu''avant. O esprit d''amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n''y entre, De quelle validité et de quelle hauteur soe''er, Mais tombe dans l''abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. ', 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 , NULL) Returning MyArray, F15" Add and edit a record Journal Entry Made Journal Entry at 2023/06/17 14:55:23.7870: Type = Query Attachment ID = 4 Session ID = 1 Transaction ID = 11 Query Text = "Insert Into IBXTEST(TABLEKEY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, "f12", F13, F14, MyArray, GRANTS) Values(2, 2, 0.314, 0.31412345678, 101.314, 101.99, '2007-12-25', '2007-12-25 12:30:29.1300','XX', 'The Quick Brown Fox jumps over the lazy dog', FFD8FFE000104A46494600010101004800480000FFE11E0545786966000049492A00080000000C00 0E010200200000009E0000000F01020014000000BE0000001001020008000000D200000012010300 01000000010000001A01050001000000DA000000 , 9223372036854775807, 65566, '12:30:45.0000', 'If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o''er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: ''Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe''er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l''amour, continuez à jouer; Donnez-m''en un excès, que, surexcité, L''appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m''est venu à l''oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l''odeur! Assez; Pas plus: «Ce n''est pas si doux maintenant qu''avant. O esprit d''amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n''y entre, De quelle validité et de quelle hauteur soe''er, Mais tombe dans l''abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. ', 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 , NULL) Returning MyArray, F15" TABLEKEY = 2 F1 = 199 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 100 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. F15 = 0.628123467270 Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = My Field (Charset = UTF8 Codepage = 65001) MYFIELD2 = MY Field (Charset = UTF8 Codepage = 65001) Journal Entry Made Journal Entry at 2023/06/17 14:55:23.8130: Type = Query Attachment ID = 4 Session ID = 1 Transaction ID = 11 Query Text = "Update IBXTEST A Set A.F1 = 199, A.F2 = 0.314000010490417, A.F3 = 0.31412345678, A.F4 = 101.314, A.F5 = 101.99, A.F6 = '2007-12-25', A.F7 = '2007-12-25 12:30:29.1300', A.F8 = 'XX ', A.F9 = 'The Quick Brown Fox jumps over the lazy dog', A.F10 = FFD8FFE000104A46494600010101004800480000FFE11E0545786966000049492A00080000000C00 0E010200200000009E0000000F01020014000000BE0000001001020008000000D200000012010300 01000000010000001A01050001000000DA000000 , A.F11 = 9223372036854775807, A."f12" = 65566, A.F13 = '12:30:45.0000', A.F14 = 'If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o''er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: ''Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe''er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l''amour, continuez à jouer; Donnez-m''en un excès, que, surexcité, L''appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m''est venu à l''oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l''odeur! Assez; Pas plus: «Ce n''est pas si doux maintenant qu''avant. O esprit d''amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n''y entre, De quelle validité et de quelle hauteur soe''er, Mais tombe dans l''abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. ', A.MyArray = 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 , A."My Field" = 'My Field', A."MY Field" = 'MY Field', A.GRANTS = NULL Where A.TABLEKEY = 2 RETURNING A.MyArray, A.F15" Journal Entry Made Journal Entry at 2023/06/17 14:55:23.8310: Type = Commit Attachment ID = 4 Session ID = 1 Transaction ID = 11 Journal Entry Made Journal Entry at 2023/06/17 14:55:23.8340: Type = Transaction Start Attachment ID = 4 Session ID = 1 Transaction ID = 13 Transaction Name = "{0A595AC0-C43B-4302-9C1E-ECD354ACC142}" TPB = [isc_tpb_concurrency,isc_tpb_wait,isc_tpb_write] Default Completion = TACommit Print Dataset for Dataset29 Row No = 1 TABLEKEY = 1 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 100 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. F15 = 0.628123467270 Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = NULL MYFIELD2 = NULL Row No = 2 TABLEKEY = 2 F1 = 199 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 100 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. F15 = 0.628123467270 Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = My Field (Charset = UTF8 Codepage = 65001) MYFIELD2 = MY Field (Charset = UTF8 Codepage = 65001) Rows printed = 2 Delete a record Journal Entry Made Journal Entry at 2023/06/17 14:55:24.0950: Type = Query Attachment ID = 4 Session ID = 1 Transaction ID = 13 Query Text = "Delete From IBXTEST A Where A.TABLEKEY = 1" Print Dataset for Dataset29 Row No = 1 TABLEKEY = 2 F1 = 199 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 100 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. F15 = 0.628123467270 Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = My Field (Charset = UTF8 Codepage = 65001) MYFIELD2 = MY Field (Charset = UTF8 Codepage = 65001) Rows printed = 1 Rollback Retaining Journal Entry Made Journal Entry at 2023/06/17 14:55:24.2030: Type = Rollback Retaining Attachment ID = 4 Session ID = 1 Transaction ID = 15 Old Transaction ID = 13 Print Dataset for Dataset29 Row No = 1 TABLEKEY = 1 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 100 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. F15 = 0.628123467270 Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = NULL MYFIELD2 = NULL Row No = 2 TABLEKEY = 2 F1 = 199 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 100 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. F15 = 0.628123467270 Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = My Field (Charset = UTF8 Codepage = 65001) MYFIELD2 = MY Field (Charset = UTF8 Codepage = 65001) Rows printed = 2 Delete a record Journal Entry Made Journal Entry at 2023/06/17 14:55:24.4350: Type = Query Attachment ID = 4 Session ID = 1 Transaction ID = 15 Query Text = "Delete From IBXTEST A Where A.TABLEKEY = 1" Print Dataset for Dataset29 Row No = 1 TABLEKEY = 2 F1 = 199 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 100 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. F15 = 0.628123467270 Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = My Field (Charset = UTF8 Codepage = 65001) MYFIELD2 = MY Field (Charset = UTF8 Codepage = 65001) Rows printed = 1 Rollback Journal Entry Made Journal Entry at 2023/06/17 14:55:24.5520: Type = Rollback Attachment ID = 4 Session ID = 1 Transaction ID = 15 Journal Entry Made Journal Entry at 2023/06/17 14:55:24.5590: Type = Transaction Start Attachment ID = 4 Session ID = 1 Transaction ID = 16 Transaction Name = "{0A595AC0-C43B-4302-9C1E-ECD354ACC142}" TPB = [isc_tpb_concurrency,isc_tpb_wait,isc_tpb_write] Default Completion = TACommit Print Dataset for Dataset29 Row No = 1 TABLEKEY = 1 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 100 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. F15 = 0.628123467270 Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = NULL MYFIELD2 = NULL Row No = 2 TABLEKEY = 2 F1 = 199 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 100 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. F15 = 0.628123467270 Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = My Field (Charset = UTF8 Codepage = 65001) MYFIELD2 = MY Field (Charset = UTF8 Codepage = 65001) Rows printed = 2 Commit Retaining Journal Entry Made Journal Entry at 2023/06/17 14:55:24.8380: Type = Query Attachment ID = 4 Session ID = 1 Transaction ID = 16 Query Text = "Insert Into IBXTEST(TABLEKEY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, "f12", F13, F14, MyArray, GRANTS) Values(3, 2, 0.314, 0.31412345678, 101.314, 101.99, '2007-12-25', '2007-12-25 12:30:29.1300','XX', 'The Quick Brown Fox jumps over the lazy dog', FFD8FFE000104A46494600010101004800480000FFE11E0545786966000049492A00080000000C00 0E010200200000009E0000000F01020014000000BE0000001001020008000000D200000012010300 01000000010000001A01050001000000DA000000 , 9223372036854775807, 65566, '12:30:45.0000', 'If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o''er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: ''Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe''er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l''amour, continuez à jouer; Donnez-m''en un excès, que, surexcité, L''appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m''est venu à l''oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l''odeur! Assez; Pas plus: «Ce n''est pas si doux maintenant qu''avant. O esprit d''amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n''y entre, De quelle validité et de quelle hauteur soe''er, Mais tombe dans l''abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. ', 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 , NULL) Returning MyArray, F15" Journal Entry Made Journal Entry at 2023/06/17 14:55:24.8550: Type = Commit Retaining Attachment ID = 4 Session ID = 1 Transaction ID = 18 Old Transaction ID = 16 Print Dataset for Dataset29 Row No = 1 TABLEKEY = 1 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 100 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. F15 = 0.628123467270 Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = NULL MYFIELD2 = NULL Row No = 2 TABLEKEY = 2 F1 = 199 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 100 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. F15 = 0.628123467270 Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = My Field (Charset = UTF8 Codepage = 65001) MYFIELD2 = MY Field (Charset = UTF8 Codepage = 65001) Row No = 3 TABLEKEY = 3 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 100 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. F15 = 0.628123467270 Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = NULL MYFIELD2 = NULL Rows printed = 3 Commit Journal Entry Made Journal Entry at 2023/06/17 14:55:25.2020: Type = Commit Attachment ID = 4 Session ID = 1 Transaction ID = 18 Journal Entry Made Journal Entry at 2023/06/17 14:55:25.2060: Type = Transaction Start Attachment ID = 4 Session ID = 1 Transaction ID = 19 Transaction Name = "{0A595AC0-C43B-4302-9C1E-ECD354ACC142}" TPB = [isc_tpb_concurrency,isc_tpb_wait,isc_tpb_write] Default Completion = TACommit Print Dataset for Dataset29 Row No = 1 TABLEKEY = 1 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 100 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. F15 = 0.628123467270 Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = NULL MYFIELD2 = NULL Row No = 2 TABLEKEY = 2 F1 = 199 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 100 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. F15 = 0.628123467270 Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = My Field (Charset = UTF8 Codepage = 65001) MYFIELD2 = MY Field (Charset = UTF8 Codepage = 65001) Row No = 3 TABLEKEY = 3 F1 = 2 F2 = 0.314000010490 F3 = 0.314123456780 F4 = 101.314 F5 = 101.99 F6 = 25/12/2007 F7 = 25/12/2007 12:30:29.130 F8 = XX (Charset = UTF8 Codepage = 65001) F9 = The Quick Brown Fox jumps over the lazy dog (Charset = UTF8 Codepage = 65001) F10 = (blob), Length = 100 F11 = 9223372036854775807 F12 = 65566 F13 = 12:30:45.000 F14 (Charset = UTF8 Codepage = 65001) If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o'er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: 'Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe'er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l'amour, continuez à jouer; Donnez-m'en un excès, que, surexcité, L'appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m'est venu à l'oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l'odeur! Assez; Pas plus: «Ce n'est pas si doux maintenant qu'avant. O esprit d'amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n'y entre, De quelle validité et de quelle hauteur soe'er, Mais tombe dans l'abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. F15 = 0.628123467270 Array: (0: 100) (1: 99) (2: 98) (3: 97) (4: 96) (5: 95) (6: 94) (7: 93) (8: 92) (9: 91) (10: 90) (11: 89) (12: 88) (13: 87) (14: 86) (15: 85) (16: 84) GRANTS = NULL MYFIELD1 = NULL MYFIELD2 = NULL Rows printed = 3 Journal Entry Made Journal Entry at 2023/06/17 14:55:25.5900: Type = Rollback Attachment ID = 4 Session ID = 1 Transaction ID = 19 Journal Table IBX$SESSIONID = 1 IBX$TRANSACTIONID = 11 IBX$OLDTRANSACTIONID = NULL IBX$USER = SYSDBA (Charset Id = 4 Codepage = 65001) IBX$CREATED = 2023/06/17 14:55:23.7050 IBX$SESSIONID = 1 IBX$TRANSACTIONID = 16 IBX$OLDTRANSACTIONID = NULL IBX$USER = SYSDBA (Charset Id = 4 Codepage = 65001) IBX$CREATED = 2023/06/17 14:55:24.5580 IBX$SESSIONID = 1 IBX$TRANSACTIONID = 18 IBX$OLDTRANSACTIONID = 16 IBX$USER = SYSDBA (Charset Id = 4 Codepage = 65001) IBX$CREATED = 2023/06/17 14:55:24.8570 Low Level Journal File Print out Journal Entries Journal Entry = jeTransStart(Transaction Start) Timestamp = 2023/06/17 14:55:23.7070 Attachment ID = 4 Session ID = 1 Transaction ID = 11 Transaction Name = "{0A595AC0-C43B-4302-9C1E-ECD354ACC142}" TPB: Item Count = 3 isc_tpb_concurrency isc_tpb_wait isc_tpb_write Default Completion = TACommit Journal Entry = jeQuery(Query) Timestamp = 2023/06/17 14:55:23.7640 Attachment ID = 4 Session ID = 1 Transaction ID = 11 Query = Insert Into IBXTEST(TABLEKEY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, "f12", F13, F14, MyArray, GRANTS) Values(1, 2, 0.314, 0.31412345678, 101.314, 101.99, '2007-12-25', '2007-12-25 12:30:29.1300','XX', 'The Quick Brown Fox jumps over the lazy dog', FFD8FFE000104A46494600010101004800480000FFE11E0545786966000049492A00080000000C00 0E010200200000009E0000000F01020014000000BE0000001001020008000000D200000012010300 01000000010000001A01050001000000DA000000 , 9223372036854775807, 65566, '12:30:45.0000', 'If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o''er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: ''Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe''er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l''amour, continuez à jouer; Donnez-m''en un excès, que, surexcité, L''appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m''est venu à l''oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l''odeur! Assez; Pas plus: «Ce n''est pas si doux maintenant qu''avant. O esprit d''amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n''y entre, De quelle validité et de quelle hauteur soe''er, Mais tombe dans l''abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. ', 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 , NULL) Returning MyArray, F15 Journal Entry = jeQuery(Query) Timestamp = 2023/06/17 14:55:23.7870 Attachment ID = 4 Session ID = 1 Transaction ID = 11 Query = Insert Into IBXTEST(TABLEKEY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, "f12", F13, F14, MyArray, GRANTS) Values(2, 2, 0.314, 0.31412345678, 101.314, 101.99, '2007-12-25', '2007-12-25 12:30:29.1300','XX', 'The Quick Brown Fox jumps over the lazy dog', FFD8FFE000104A46494600010101004800480000FFE11E0545786966000049492A00080000000C00 0E010200200000009E0000000F01020014000000BE0000001001020008000000D200000012010300 01000000010000001A01050001000000DA000000 , 9223372036854775807, 65566, '12:30:45.0000', 'If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o''er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: ''Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe''er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l''amour, continuez à jouer; Donnez-m''en un excès, que, surexcité, L''appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m''est venu à l''oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l''odeur! Assez; Pas plus: «Ce n''est pas si doux maintenant qu''avant. O esprit d''amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n''y entre, De quelle validité et de quelle hauteur soe''er, Mais tombe dans l''abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. ', 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 , NULL) Returning MyArray, F15 Journal Entry = jeQuery(Query) Timestamp = 2023/06/17 14:55:23.8130 Attachment ID = 4 Session ID = 1 Transaction ID = 11 Query = Update IBXTEST A Set A.F1 = 199, A.F2 = 0.314000010490417, A.F3 = 0.31412345678, A.F4 = 101.314, A.F5 = 101.99, A.F6 = '2007-12-25', A.F7 = '2007-12-25 12:30:29.1300', A.F8 = 'XX ', A.F9 = 'The Quick Brown Fox jumps over the lazy dog', A.F10 = FFD8FFE000104A46494600010101004800480000FFE11E0545786966000049492A00080000000C00 0E010200200000009E0000000F01020014000000BE0000001001020008000000D200000012010300 01000000010000001A01050001000000DA000000 , A.F11 = 9223372036854775807, A."f12" = 65566, A.F13 = '12:30:45.0000', A.F14 = 'If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o''er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: ''Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe''er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l''amour, continuez à jouer; Donnez-m''en un excès, que, surexcité, L''appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m''est venu à l''oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l''odeur! Assez; Pas plus: «Ce n''est pas si doux maintenant qu''avant. O esprit d''amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n''y entre, De quelle validité et de quelle hauteur soe''er, Mais tombe dans l''abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. ', A.MyArray = 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 , A."My Field" = 'My Field', A."MY Field" = 'MY Field', A.GRANTS = NULL Where A.TABLEKEY = 2 RETURNING A.MyArray, A.F15 Journal Entry = jeTransCommit(Commit) Timestamp = 2023/06/17 14:55:23.8310 Attachment ID = 4 Session ID = 1 Transaction ID = 11 Journal Entry = jeTransStart(Transaction Start) Timestamp = 2023/06/17 14:55:23.8340 Attachment ID = 4 Session ID = 1 Transaction ID = 13 Transaction Name = "{0A595AC0-C43B-4302-9C1E-ECD354ACC142}" TPB: Item Count = 3 isc_tpb_concurrency isc_tpb_wait isc_tpb_write Default Completion = TACommit Journal Entry = jeQuery(Query) Timestamp = 2023/06/17 14:55:24.0950 Attachment ID = 4 Session ID = 1 Transaction ID = 13 Query = Delete From IBXTEST A Where A.TABLEKEY = 1 Journal Entry = jeTransRollbackRet(Rollback Retaining) Timestamp = 2023/06/17 14:55:24.2030 Attachment ID = 4 Session ID = 1 Transaction ID = 15 Old TransactionID = 13 Journal Entry = jeQuery(Query) Timestamp = 2023/06/17 14:55:24.4350 Attachment ID = 4 Session ID = 1 Transaction ID = 15 Query = Delete From IBXTEST A Where A.TABLEKEY = 1 Journal Entry = jeTransRollback(Rollback) Timestamp = 2023/06/17 14:55:24.5520 Attachment ID = 4 Session ID = 1 Transaction ID = 15 Journal Entry = jeTransStart(Transaction Start) Timestamp = 2023/06/17 14:55:24.5590 Attachment ID = 4 Session ID = 1 Transaction ID = 16 Transaction Name = "{0A595AC0-C43B-4302-9C1E-ECD354ACC142}" TPB: Item Count = 3 isc_tpb_concurrency isc_tpb_wait isc_tpb_write Default Completion = TACommit Journal Entry = jeQuery(Query) Timestamp = 2023/06/17 14:55:24.8380 Attachment ID = 4 Session ID = 1 Transaction ID = 16 Query = Insert Into IBXTEST(TABLEKEY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, "f12", F13, F14, MyArray, GRANTS) Values(3, 2, 0.314, 0.31412345678, 101.314, 101.99, '2007-12-25', '2007-12-25 12:30:29.1300','XX', 'The Quick Brown Fox jumps over the lazy dog', FFD8FFE000104A46494600010101004800480000FFE11E0545786966000049492A00080000000C00 0E010200200000009E0000000F01020014000000BE0000001001020008000000D200000012010300 01000000010000001A01050001000000DA000000 , 9223372036854775807, 65566, '12:30:45.0000', 'If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o''er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: ''Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe''er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l''amour, continuez à jouer; Donnez-m''en un excès, que, surexcité, L''appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m''est venu à l''oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l''odeur! Assez; Pas plus: «Ce n''est pas si doux maintenant qu''avant. O esprit d''amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n''y entre, De quelle validité et de quelle hauteur soe''er, Mais tombe dans l''abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. ', 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 , NULL) Returning MyArray, F15 Journal Entry = jeTransCommitRet(Commit Retaining) Timestamp = 2023/06/17 14:55:24.8550 Attachment ID = 4 Session ID = 1 Transaction ID = 18 Old TransactionID = 16 Journal Entry = jeTransCommit(Commit) Timestamp = 2023/06/17 14:55:25.2020 Attachment ID = 4 Session ID = 1 Transaction ID = 18 Journal Entry = jeTransStart(Transaction Start) Timestamp = 2023/06/17 14:55:25.2060 Attachment ID = 4 Session ID = 1 Transaction ID = 19 Transaction Name = "{0A595AC0-C43B-4302-9C1E-ECD354ACC142}" TPB: Item Count = 3 isc_tpb_concurrency isc_tpb_wait isc_tpb_write Default Completion = TACommit Journal Entry = jeTransRollback(Rollback) Timestamp = 2023/06/17 14:55:25.5900 Attachment ID = 4 Session ID = 1 Transaction ID = 19 Print out Journal File using TIBJournal Journal Entry at 2023/06/17 14:55:23.7070: Type = Transaction Start Attachment ID = 4 Session ID = 1 Transaction ID = 11 Transaction Name = "{0A595AC0-C43B-4302-9C1E-ECD354ACC142}" TPB = [isc_tpb_concurrency,isc_tpb_wait,isc_tpb_write] Default Completion = TACommit Journal Entry at 2023/06/17 14:55:23.7640: Type = Query Attachment ID = 4 Session ID = 1 Transaction ID = 11 Query Text = "Insert Into IBXTEST(TABLEKEY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, "f12", F13, F14, MyArray, GRANTS) Values(1, 2, 0.314, 0.31412345678, 101.314, 101.99, '2007-12-25', '2007-12-25 12:30:29.1300','XX', 'The Quick Brown Fox jumps over the lazy dog', FFD8FFE000104A46494600010101004800480000FFE11E0545786966000049492A00080000000C00 0E010200200000009E0000000F01020014000000BE0000001001020008000000D200000012010300 01000000010000001A01050001000000DA000000 , 9223372036854775807, 65566, '12:30:45.0000', 'If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o''er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: ''Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe''er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l''amour, continuez à jouer; Donnez-m''en un excès, que, surexcité, L''appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m''est venu à l''oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l''odeur! Assez; Pas plus: «Ce n''est pas si doux maintenant qu''avant. O esprit d''amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n''y entre, De quelle validité et de quelle hauteur soe''er, Mais tombe dans l''abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. ', 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 , NULL) Returning MyArray, F15" Journal Entry at 2023/06/17 14:55:23.7870: Type = Query Attachment ID = 4 Session ID = 1 Transaction ID = 11 Query Text = "Insert Into IBXTEST(TABLEKEY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, "f12", F13, F14, MyArray, GRANTS) Values(2, 2, 0.314, 0.31412345678, 101.314, 101.99, '2007-12-25', '2007-12-25 12:30:29.1300','XX', 'The Quick Brown Fox jumps over the lazy dog', FFD8FFE000104A46494600010101004800480000FFE11E0545786966000049492A00080000000C00 0E010200200000009E0000000F01020014000000BE0000001001020008000000D200000012010300 01000000010000001A01050001000000DA000000 , 9223372036854775807, 65566, '12:30:45.0000', 'If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o''er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: ''Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe''er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l''amour, continuez à jouer; Donnez-m''en un excès, que, surexcité, L''appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m''est venu à l''oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l''odeur! Assez; Pas plus: «Ce n''est pas si doux maintenant qu''avant. O esprit d''amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n''y entre, De quelle validité et de quelle hauteur soe''er, Mais tombe dans l''abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. ', 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 , NULL) Returning MyArray, F15" Journal Entry at 2023/06/17 14:55:23.8130: Type = Query Attachment ID = 4 Session ID = 1 Transaction ID = 11 Query Text = "Update IBXTEST A Set A.F1 = 199, A.F2 = 0.314000010490417, A.F3 = 0.31412345678, A.F4 = 101.314, A.F5 = 101.99, A.F6 = '2007-12-25', A.F7 = '2007-12-25 12:30:29.1300', A.F8 = 'XX ', A.F9 = 'The Quick Brown Fox jumps over the lazy dog', A.F10 = FFD8FFE000104A46494600010101004800480000FFE11E0545786966000049492A00080000000C00 0E010200200000009E0000000F01020014000000BE0000001001020008000000D200000012010300 01000000010000001A01050001000000DA000000 , A.F11 = 9223372036854775807, A."f12" = 65566, A.F13 = '12:30:45.0000', A.F14 = 'If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o''er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: ''Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe''er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l''amour, continuez à jouer; Donnez-m''en un excès, que, surexcité, L''appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m''est venu à l''oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l''odeur! Assez; Pas plus: «Ce n''est pas si doux maintenant qu''avant. O esprit d''amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n''y entre, De quelle validité et de quelle hauteur soe''er, Mais tombe dans l''abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. ', A.MyArray = 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 , A."My Field" = 'My Field', A."MY Field" = 'MY Field', A.GRANTS = NULL Where A.TABLEKEY = 2 RETURNING A.MyArray, A.F15" Journal Entry at 2023/06/17 14:55:23.8310: Type = Commit Attachment ID = 4 Session ID = 1 Transaction ID = 11 Journal Entry at 2023/06/17 14:55:23.8340: Type = Transaction Start Attachment ID = 4 Session ID = 1 Transaction ID = 13 Transaction Name = "{0A595AC0-C43B-4302-9C1E-ECD354ACC142}" TPB = [isc_tpb_concurrency,isc_tpb_wait,isc_tpb_write] Default Completion = TACommit Journal Entry at 2023/06/17 14:55:24.0950: Type = Query Attachment ID = 4 Session ID = 1 Transaction ID = 13 Query Text = "Delete From IBXTEST A Where A.TABLEKEY = 1" Journal Entry at 2023/06/17 14:55:24.2030: Type = Rollback Retaining Attachment ID = 4 Session ID = 1 Transaction ID = 15 Old Transaction ID = 13 Journal Entry at 2023/06/17 14:55:24.4350: Type = Query Attachment ID = 4 Session ID = 1 Transaction ID = 15 Query Text = "Delete From IBXTEST A Where A.TABLEKEY = 1" Journal Entry at 2023/06/17 14:55:24.5520: Type = Rollback Attachment ID = 4 Session ID = 1 Transaction ID = 15 Journal Entry at 2023/06/17 14:55:24.5590: Type = Transaction Start Attachment ID = 4 Session ID = 1 Transaction ID = 16 Transaction Name = "{0A595AC0-C43B-4302-9C1E-ECD354ACC142}" TPB = [isc_tpb_concurrency,isc_tpb_wait,isc_tpb_write] Default Completion = TACommit Journal Entry at 2023/06/17 14:55:24.8380: Type = Query Attachment ID = 4 Session ID = 1 Transaction ID = 16 Query Text = "Insert Into IBXTEST(TABLEKEY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, "f12", F13, F14, MyArray, GRANTS) Values(3, 2, 0.314, 0.31412345678, 101.314, 101.99, '2007-12-25', '2007-12-25 12:30:29.1300','XX', 'The Quick Brown Fox jumps over the lazy dog', FFD8FFE000104A46494600010101004800480000FFE11E0545786966000049492A00080000000C00 0E010200200000009E0000000F01020014000000BE0000001001020008000000D200000012010300 01000000010000001A01050001000000DA000000 , 9223372036854775807, 65566, '12:30:45.0000', 'If music be the food of love, play on; Give me excess of it, that, surfeiting, The appetite may sicken, and so die. That strain again! it had a dying fall: O, it came o''er my ear like the sweet south, That breathes upon a bank of violets, Stealing and giving odour! Enough; no more: ''Tis not so sweet now as it was before. O spirit of love! how quick and fresh art thou, That, notwithstanding thy capacity 10 Receiveth as the sea, nought enters there, Of what validity and pitch soe''er, But falls into abatement and low price, Even in a minute: so full of shapes is fancy That it alone is high fantastical. Si la musique est la nourriture de l''amour, continuez à jouer; Donnez-m''en un excès, que, surexcité, L''appétit peut devenir malade et ainsi mourir. Cette souche encore! il a eu une chute mourante: Oh, ça m''est venu à l''oreille comme le doux sud, Qui souffle sur une banque de violettes, Voler et donner de l''odeur! Assez; Pas plus: «Ce n''est pas si doux maintenant qu''avant. O esprit d''amour! comme tu es rapide et fraîche, Que, malgré ta capacité 10 Reçoit comme la mer, rien n''y entre, De quelle validité et de quelle hauteur soe''er, Mais tombe dans l''abattement et le prix bas, Même en une minute: si plein de formes est fantaisie Que cela seul est fantastique. ', 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 , NULL) Returning MyArray, F15" Journal Entry at 2023/06/17 14:55:24.8550: Type = Commit Retaining Attachment ID = 4 Session ID = 1 Transaction ID = 18 Old Transaction ID = 16 Journal Entry at 2023/06/17 14:55:25.2020: Type = Commit Attachment ID = 4 Session ID = 1 Transaction ID = 18 Journal Entry at 2023/06/17 14:55:25.2060: Type = Transaction Start Attachment ID = 4 Session ID = 1 Transaction ID = 19 Transaction Name = "{0A595AC0-C43B-4302-9C1E-ECD354ACC142}" TPB = [isc_tpb_concurrency,isc_tpb_wait,isc_tpb_write] Default Completion = TACommit Journal Entry at 2023/06/17 14:55:25.5900: Type = Rollback Attachment ID = 4 Session ID = 1 Transaction ID = 19 Creating Database from resources/Test29.sql Create Table IBXTest ( TableKey Integer not null, F1 Smallint, F2 Float, F3 Double Precision, F4 Decimal(9,3), F5 Decimal(18,4), F6 Date, F7 Timestamp, F8 Char (2), F9 VarChar(256), F10 Blob, F11 BigInt, "f12" Integer, F13 Time, F14 Blob sub_type text, F15 Double Precision Computed by (F2 + F3), MyArray Integer [0:16], "GRANTS" VarChar(20), "My Field" VarChar(32), "MY Field" VarChar(32), Primary Key(TableKey) ); Create Generator IBXGen; Comparing original database with restored database Run diff command returns 256 Output from diff command 216c216 < ALTER SEQUENCE IBXGEN RESTART WITH 4; --- > ALTER SEQUENCE IBXGEN RESTART WITH 1; ------------------------------------------------------ Test Suite Ends