1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612
|
--
-- Licensed to the Apache Software Foundation (ASF) under one or more
-- contributor license agreements. See the NOTICE file distributed with
-- this work for additional information regarding copyright ownership.
-- The ASF licenses this file to You under the Apache License, Version 2.0
-- (the "License"); you may not use this file except in compliance with
-- the License. You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
-- Test prints query plans for SpecjAppServer2001 benchmark queries.
-- Specifically this test checks for plans generated for tables with no rows to
-- ensure that
-- Index scan must be chosen over table scan for searched update/delete even when there are
-- 0 rows in table
-- Also see Beetle task id : 5006
-- Test does the following
-- 1. First creates the necessary schema (tables, indexes)
-- 2. Executes and prints the query plan for all the queries in specjappserver2001 benchmark
-- Makes sure that the insert stmts are in the end to ensure that there are no
-- rows in the tables
-- 3. Drops the tables
-- Let's start with something light...
-- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
NoHoldForConnection;
drop table t1;
create table t1(c1 int, c2 int);
-- create non-unique index first, then unique, to make sure non-unique is looked at first, and so
-- in case of tie, the first (nonunique) would be chosen by the cost-based optimizer. But we need
-- to make sure such tie never happens, and unique index is always chosen (if the only difference
-- between the two is "uniqueness"). Well the beetle bug 5006 itself is about, first of all,
-- table scan should never be chosen, no matter the index is covering ot not.
create index i11 on t1(c1);
create unique index i12 on t1(c1);
call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
maximumdisplaywidth 3500;
-- In the following statement, optimizer thinks we have a covering index (only referenced column is
-- c1), make sure we are using unique index (I12), not table scan, not I11.
delete from t1 where c1 = 1;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
-- In the following statement, optimizer thinks we have a non-covering index (referenced columns are
-- c1 and c2), make sure we are still using unique index (I12), not table scan, not I11.
update t1 set c2 = 1 where c1 = 1;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
-- The following select should use TABLE SCAN, no predicate at all, and index not covering, no reason
-- to use index!!!
select * from t1;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
-- This one should use index, since it is covered, really doesn't matter which one, since no predicate,
-- It will choose the first one -- I11.
select c1 from t1;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
drop table t1;
-- end of something light...
DROP TABLE C_customer;
CREATE TABLE C_customer
(
c_id integer not null,
c_first char(16),
c_last char(16),
c_street1 char(20),
c_street2 char(20),
c_city char(20),
c_state char(2),
c_country char(10),
c_zip char(9),
c_phone char(16),
c_contact char(25),
c_since date,
c_balance numeric(9,2),
c_credit char(2),
c_credit_limit numeric(9,2),
c_ytd_payment numeric(9,2)
);
CREATE UNIQUE INDEX C_c_idx ON C_customer (c_id);
DROP TABLE C_supplier;
CREATE TABLE C_supplier
(
supp_id integer not null,
supp_name char(16),
supp_street1 char(20),
supp_street2 char(20),
supp_city char(20),
supp_state char(2),
supp_country char(10),
supp_zip char(9),
supp_phone char(16),
supp_contact char(25)
);
CREATE UNIQUE INDEX C_supp_idx ON C_supplier (supp_id);
DROP TABLE C_site;
CREATE TABLE C_site
(
site_id integer not null,
site_name char(16),
site_street1 char(20),
site_street2 char(20),
site_city char(20),
site_state char(2),
site_country char(10),
site_zip char(9)
);
CREATE UNIQUE INDEX C_site_idx ON C_site (site_id);
DROP TABLE C_parts;
CREATE TABLE C_parts
(
p_id char(15) not null,
p_name char(10),
p_desc varchar(100),
p_rev char(6),
p_unit char(10),
p_cost numeric(9,2),
p_price numeric(9,2),
p_planner integer,
p_type integer,
p_ind integer,
p_lomark integer,
p_himark integer
);
CREATE UNIQUE INDEX C_p_idx ON C_parts (p_id);
DROP TABLE C_rule;
CREATE TABLE C_rule
(
r_id varchar(20) not null,
r_text long varchar
);
CREATE UNIQUE INDEX C_r_idx on C_rule (r_id);
DROP TABLE C_discount;
CREATE TABLE C_discount
(
d_id varchar(64) not null,
d_percent integer
);
CREATE UNIQUE INDEX C_d_idx on C_discount (d_id);
DROP TABLE M_parts;
CREATE TABLE M_parts
(
p_id char(15) not null,
p_name char(10),
p_desc varchar(100),
p_rev char(6),
p_planner integer,
p_type integer,
p_ind integer,
p_lomark integer,
p_himark integer
);
CREATE UNIQUE INDEX M_parts_idx ON M_parts (p_id);
DROP TABLE M_bom;
CREATE TABLE M_bom
(
b_comp_id char(15) not null,
b_assembly_id char(15) not null,
b_line_no integer,
b_qty integer,
b_ops integer,
b_eng_change char(10),
b_ops_desc varchar(100)
);
CREATE UNIQUE INDEX M_bom_idx ON M_bom (b_assembly_id, b_comp_id, b_line_no);
DROP TABLE M_workorder;
CREATE TABLE M_workorder
(
wo_number integer not null,
wo_o_id integer,
wo_ol_id integer,
wo_status integer,
wo_assembly_id char(15),
wo_orig_qty integer,
wo_comp_qty integer,
wo_due_date date,
wo_start_date timestamp
);
CREATE UNIQUE INDEX M_wo_idx ON M_workorder (wo_number);
DROP TABLE M_largeorder;
CREATE TABLE M_largeorder
(
lo_id integer not null,
lo_o_id integer,
lo_ol_id integer,
lo_assembly_id char(15),
lo_qty integer,
lo_due_date date
);
CREATE UNIQUE INDEX M_lo_idx ON M_largeorder (lo_id);
CREATE UNIQUE INDEX M_OL_O_idx ON M_largeorder (lo_o_id, lo_ol_id);
DROP TABLE M_inventory;
CREATE TABLE M_inventory
(
in_p_id char(15) not null,
in_qty integer,
in_ordered integer,
in_location char(20),
in_acc_code integer,
in_act_date date
);
CREATE UNIQUE INDEX M_inv_idx ON M_inventory (in_p_id);
DROP TABLE O_customer;
CREATE TABLE O_customer
(
c_id integer not null,
c_first char(16),
c_last char(16),
c_street1 char(20),
c_street2 char(20),
c_city char(20),
c_state char(2),
c_country char(10),
c_zip char(9),
c_phone char(16),
c_contact char(25),
c_since date
);
CREATE UNIQUE INDEX O_c_idx ON O_customer (c_id);
DROP TABLE O_orders;
CREATE TABLE O_orders
(
o_id integer not null,
o_c_id integer,
o_ol_cnt integer,
o_discount numeric(4,2),
o_total numeric(9,2),
o_status integer,
o_entry_date timestamp,
o_ship_date date
);
CREATE UNIQUE INDEX O_ords_idx ON O_orders (o_id);
CREATE INDEX O_oc_idx ON O_orders (o_c_id);
DROP TABLE O_orderline;
CREATE TABLE O_orderline
(
ol_id integer not null,
ol_o_id integer not null,
ol_i_id char(15),
ol_qty integer,
ol_status integer,
ol_ship_date date
);
CREATE UNIQUE INDEX O_ordl_idx ON O_orderline (ol_o_id, ol_id);
CREATE INDEX O_ordl_idx2 ON O_orderline (ol_o_id, ol_i_id);
CREATE INDEX O_ordl_idx3 ON O_orderline (ol_o_id);
DROP TABLE O_item;
CREATE TABLE O_item
(
i_id char(15) not null,
i_name char(20),
i_desc varchar(100),
i_price numeric(9,2),
i_discount numeric(6,4)
);
CREATE UNIQUE INDEX O_i_idx ON O_item (i_id);
DROP TABLE S_component;
CREATE TABLE S_component
(
comp_id char(15) not null,
comp_name char(10),
comp_desc varchar(100),
comp_unit char(10),
comp_cost numeric(9,2),
qty_on_order integer,
qty_demanded integer,
lead_time integer,
container_size integer
);
CREATE UNIQUE INDEX S_comp_idx ON S_component (comp_id);
DROP TABLE S_supp_component;
CREATE TABLE S_supp_component
(
sc_p_id char(15) not null,
sc_supp_id integer not null,
sc_price numeric(9,2),
sc_qty integer,
sc_discount numeric(6,4),
sc_del_date integer
);
CREATE UNIQUE INDEX S_sc_idx ON S_supp_component (sc_p_id, sc_supp_id);
DROP TABLE S_supplier;
CREATE TABLE S_supplier
(
supp_id integer not null,
supp_name char(16),
supp_street1 char(20),
supp_street2 char(20),
supp_city char(20),
supp_state char(2),
supp_country char(10),
supp_zip char(9),
supp_phone char(16),
supp_contact char(25)
);
CREATE UNIQUE INDEX S_supp_idx ON S_supplier (supp_id);
DROP TABLE S_site;
CREATE TABLE S_site
(
site_id integer not null,
site_name char(16),
site_street1 char(20),
site_street2 char(20),
site_city char(20),
site_state char(2),
site_country char(10),
site_zip char(9)
);
CREATE UNIQUE INDEX S_site_idx ON S_site (site_id);
DROP TABLE S_purchase_order;
CREATE TABLE S_purchase_order
(
po_number integer not null,
po_supp_id integer,
po_site_id integer
);
CREATE UNIQUE INDEX S_po_idx ON S_purchase_order (po_number);
DROP TABLE S_purchase_orderline;
CREATE TABLE S_purchase_orderline
(
pol_number integer not null,
pol_po_id integer not null,
pol_p_id char(15),
pol_qty integer,
pol_balance numeric(9,2),
pol_deldate date,
pol_message varchar(100)
);
CREATE UNIQUE INDEX S_pol_idx ON S_purchase_orderline (pol_po_id, pol_number);
DROP TABLE U_sequences;
CREATE TABLE U_sequences
(
s_id varchar(50) not null,
s_nextnum integer,
s_blocksize integer
);
CREATE UNIQUE INDEX U_s_idx ON U_sequences (s_id);
-- set the runtimestatistics to check the query plans generated
call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
maximumdisplaywidth 3500;
SELECT T1.O_STATUS, T1.O_SHIP_DATE, T1.O_ENTRY_DATE, T1.O_TOTAL, T1.O_DISCOUNT, T1.O_OL_CNT, T1.O_C_ID, T1.O_ID
FROM O_ORDERS T1 WHERE o_c_id = 0 FOR UPDATE ;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
-- MAKE SURE THE FOLLOWING USE TABLE SCAN, NO REASON TO USE INDEX AT ALL, NOT USEFUL PREDICATES!!!
SELECT COUNT (*) FROM O_orders WHERE o_entry_date >= '01/10/2003' AND o_entry_date <= '01/09/2003' ;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.WO_NUMBER, T1.WO_O_ID, T1.WO_OL_ID, T1.WO_STATUS, T1.WO_ORIG_QTY, T1.WO_COMP_QTY, T1.WO_ASSEMBLY_ID,
T1.WO_DUE_DATE, T1.WO_START_DATE FROM M_WORKORDER T1 WHERE T1.WO_NUMBER = 1 FOR UPDATE;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
-- MAKE SURE THE FOLLOWING USE TABLE SCAN, NO REASON TO USE INDEX AT ALL, NOT USEFUL PREDICATES!!!
SELECT T1.LO_ID, T1.LO_O_ID, T1.LO_OL_ID, T1.LO_ASSEMBLY_ID, T1.LO_QTY, T1.LO_DUE_DATE FROM M_LARGEORDER T1 WHERE 1=1;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
UPDATE M_INVENTORY SET IN_QTY = 1, IN_LOCATION = 'sanfrancisco', IN_ACC_CODE = 1, IN_ACT_DATE = '01/01/2003', IN_ORDERED = 1 WHERE IN_P_ID = 'abcdefghijklm';
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT COUNT (*) FROM S_component;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.R_ID, T1.R_TEXT FROM C_RULE T1 WHERE T1.R_ID = 'abcdefghijlkmijklmnopqrstuvwxyz';
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT COUNT (*) FROM C_site;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.IN_P_ID, T1.IN_QTY, T1.IN_LOCATION, T1.IN_ACC_CODE, T1.IN_ACT_DATE, T1.IN_ORDERED FROM M_INVENTORY T1 WHERE T1.IN_P_ID = 'abcdefghijkl' FOR UPDATE;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.OL_SHIP_DATE, T1.OL_QTY, T1.OL_I_ID, T1.OL_O_ID, T1.OL_ID FROM O_ORDERLINE T1 WHERE ol_o_id = 1 FOR UPDATE ;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
DELETE FROM M_LARGEORDER WHERE LO_ID = 1;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
-- MAKE SURE THE FOLLOWING USE TABLE SCAN, NO REASON TO USE INDEX AT ALL, NOT USEFUL PREDICATES!!!
SELECT COUNT (*) FROM M_workorder WHERE wo_start_date >= '01/10/2003' AND wo_start_date <= '01/10/2003';
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.I_DISCOUNT, T1.I_DESC, T1.I_NAME, T1.I_PRICE, T1.I_ID FROM O_ITEM T1 WHERE T1.I_ID = 'abcdefghijk';
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.P_ID, T1.P_NAME, T1.P_DESC, T1.P_REV, T1.P_PLANNER, T1.P_TYPE, T1.P_IND, T1.P_LOMARK, T1.P_HIMARK FROM M_PARTS T1 WHERE T1.P_ID = 'abcdefghijl';
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT COUNT (*) FROM S_purchase_orderline;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.S_ID, T1.S_NEXTNUM, T1.S_BLOCKSIZE FROM U_SEQUENCES T1 WHERE T1.S_ID = 'abcdefghijklmnopqrstuvwxyz' FOR UPDATE;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.SC_P_ID, T1.SC_SUPP_ID, T1.SC_PRICE, T1.SC_QTY, T1.SC_DISCOUNT, T1.SC_DEL_DATE FROM S_SUPP_COMPONENT T1 WHERE T1.SC_P_ID = 'abcdefgjikl' AND T1.SC_SUPP_ID = 1;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.O_STATUS, T1.O_SHIP_DATE, T1.O_ENTRY_DATE, T1.O_TOTAL, T1.O_DISCOUNT, T1.O_OL_CNT, T1.O_C_ID, T1.O_ID FROM O_ORDERS T1 WHERE T1.O_ID = 1 FOR UPDATE;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT COUNT (*) FROM M_workorder;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT COUNT (*) FROM S_purchase_order;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT COUNT (*) FROM M_bom;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.PO_NUMBER, T1.PO_SUPP_ID, T1.PO_SITE_ID FROM S_PURCHASE_ORDER T1 WHERE T1.PO_NUMBER = 1;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT COUNT (*) FROM O_orderline;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.D_ID, T1.D_PERCENT FROM C_DISCOUNT T1 WHERE T1.D_ID = 'abcdefghijklmnopqrstuvwz';
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
UPDATE O_ORDERLINE SET OL_SHIP_DATE = '2/28/2000', OL_QTY = 10, OL_I_ID = 'abcdefghijkl' WHERE OL_O_ID = 1 AND OL_ID = 1;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.COMP_ID, T1.COMP_NAME, T1.COMP_DESC, T1.COMP_UNIT, T1.COMP_COST, T1.QTY_ON_ORDER, T1.QTY_DEMANDED, T1.LEAD_TIME, T1.CONTAINER_SIZE FROM S_COMPONENT T1 WHERE T1.COMP_ID = 'abcdefghijk' FOR UPDATE;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT COUNT (*) FROM O_customer;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.LO_ID, T1.LO_O_ID, T1.LO_OL_ID, T1.LO_ASSEMBLY_ID, T1.LO_QTY, T1.LO_DUE_DATE FROM M_LARGEORDER T1 WHERE lo_o_id = 1 AND lo_ol_id = 1;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
UPDATE O_ORDERS SET O_STATUS = 1, O_SHIP_DATE = '01/01/9004', O_ENTRY_DATE = NULL, O_TOTAL = 1000, O_DISCOUNT =100, O_OL_CNT = 1, O_C_ID = 1 WHERE O_ID = 2;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT COUNT (*) FROM C_customer;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT COUNT (*) FROM M_inventory;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
-- MAKE SURE THE FOLLOWING USE TABLE SCAN, NO REASON TO USE INDEX AT ALL, NOT USEFUL PREDICATES!!!
SELECT T1.SUPP_ID, T1.SUPP_NAME, T1.SUPP_STREET1, T1.SUPP_STREET2, T1.SUPP_CITY, T1.SUPP_STATE, T1.SUPP_COUNTRY, T1.SUPP_ZIP, T1.SUPP_PHONE, T1.SUPP_CONTACT FROM S_SUPPLIER T1 WHERE 1=1;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
UPDATE U_SEQUENCES SET S_NEXTNUM = 1 , S_BLOCKSIZE = 1000 WHERE S_ID = 'abcdefghijklmnopqrstuvwxyz';
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT COUNT (*) FROM M_parts ;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT COUNT (*) FROM O_item;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
UPDATE M_WORKORDER SET WO_O_ID = 11, WO_OL_ID = 11, WO_STATUS = 11, WO_ORIG_QTY = 11, WO_COMP_QTY = 11, WO_ASSEMBLY_ID = 'abcdefghijk', WO_DUE_DATE = '01/01/2000', WO_START_DATE = '01/01/00' WHERE WO_NUMBER = 1;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.POL_NUMBER, T1.POL_PO_ID, T1.POL_P_ID, T1.POL_QTY, T1.POL_BALANCE, T1.POL_DELDATE, T1.POL_MESSAGE FROM S_PURCHASE_ORDERLINE T1 WHERE T1.POL_NUMBER = 100 AND T1.POL_PO_ID = 200 FOR UPDATE;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.OL_SHIP_DATE, T1.OL_QTY, T1.OL_I_ID, T1.OL_O_ID, T1.OL_ID FROM O_ORDERLINE T1 WHERE ol_o_id = 100 AND ol_i_id = 'abcdefgh' FOR UPDATE;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.POL_NUMBER, T1.POL_PO_ID, T1.POL_P_ID, T1.POL_QTY, T1.POL_BALANCE, T1.POL_DELDATE, T1.POL_MESSAGE FROM S_PURCHASE_ORDERLINE T1 WHERE pol_po_id = 11 FOR UPDATE;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
DELETE FROM O_ORDERS WHERE O_ID = 1;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT COUNT (*) FROM O_orders;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT COUNT (*) FROM S_supplier;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.C_ID, T1.C_SINCE, T1.C_BALANCE, T1.C_CREDIT, T1.C_CREDIT_LIMIT, T1.C_YTD_PAYMENT FROM C_CUSTOMER T1 WHERE T1.C_ID = 1111 FOR UPDATE;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
-- MAKE SURE THE FOLLOWING DELETE STATEMENT USES UNIQUE INDEX "O_ORDL_IDX", NOT NON-UNIQUE INDEX "O_ORDL_IDX2",
-- EVEN THOUGH WE ARE COMPILING WITH EMPTY TABLE!!! beetle 5006.
DELETE FROM O_ORDERLINE WHERE OL_O_ID = 11111 AND OL_ID = 111111;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT COUNT (*) FROM C_supplier;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.B_ASSEMBLY_ID, T1.B_COMP_ID, T1.B_LINE_NO, T1.B_QTY, T1.B_ENG_CHANGE, T1.B_OPS, T1.B_OPS_DESC FROM M_BOM T1 WHERE b_assembly_id = 'specjstuff';
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
UPDATE S_COMPONENT SET COMP_NAME = 'abc', COMP_DESC = 'book', COMP_UNIT = '100', COMP_COST = 1000, QTY_ON_ORDER = 1000, QTY_DEMANDED = 111, LEAD_TIME = 11, CONTAINER_SIZE = 11 WHERE COMP_ID = 'rudyardkipling';
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.PO_NUMBER, T1.PO_SUPP_ID, T1.PO_SITE_ID FROM S_PURCHASE_ORDER T1 WHERE T1.PO_NUMBER = 100 FOR UPDATE;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
UPDATE S_PURCHASE_ORDERLINE SET POL_P_ID = 'teacup', POL_QTY = 2, POL_BALANCE = 2, POL_DELDATE = '01/01/2000', POL_MESSAGE = 'tintin shooting star' WHERE POL_NUMBER = 1 AND POL_PO_ID = 1111;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT COUNT (*) FROM S_site ;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT T1.C_SINCE, T1.C_STREET1, T1.C_STREET2, T1.C_CITY, T1.C_STATE, T1.C_COUNTRY, T1.C_ZIP, T1.C_PHONE, T1.C_CONTACT, T1.C_LAST, T1.C_FIRST, T1.C_ID FROM O_CUSTOMER T1 WHERE T1.C_ID = 23456;
values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
SELECT COUNT (*) FROM C_parts;
INSERT INTO O_ORDERLINE (OL_O_ID, OL_ID, OL_SHIP_DATE, OL_QTY, OL_I_ID) VALUES (1, 1,NULL, 1,'abcdefghijklmn') ;
INSERT INTO M_LARGEORDER (LO_ID, LO_O_ID, LO_OL_ID, LO_ASSEMBLY_ID, LO_QTY, LO_DUE_DATE) VALUES (2, 2, 2,'id', 2, date('2000-02-29'));
INSERT INTO O_ORDERS (O_ID, O_STATUS, O_SHIP_DATE, O_ENTRY_DATE, O_TOTAL, O_DISCOUNT, O_OL_CNT, O_C_ID) VALUES (111, 11, date('1999-01-01'),timestamp('1997-06-30 01:01:01'), 10, 10, 10, 10);
INSERT INTO M_WORKORDER (WO_NUMBER, WO_O_ID, WO_OL_ID, WO_STATUS, WO_ORIG_QTY, WO_COMP_QTY, WO_ASSEMBLY_ID, WO_DUE_DATE, WO_START_DATE) VALUES (10,10 ,10, 10,10, 10, 'abcd', date('2099-10-10'), timestamp('1997-06-30 01:01:01'));
INSERT INTO O_CUSTOMER (C_ID, C_SINCE, C_STREET1, C_STREET2, C_CITY, C_STATE, C_COUNTRY, C_ZIP, C_PHONE, C_CONTACT, C_LAST, C_FIRST) VALUES (1, date('2000-01-01'), 'berkeley', 'berkeley','berkeley','ca', 'usofa', '94703', '01191797897', 'calvinandhobbes', 'watterson','bill');
INSERT INTO S_PURCHASE_ORDER (PO_NUMBER, PO_SUPP_ID, PO_SITE_ID) VALUES (100, 100, 100);
INSERT INTO S_PURCHASE_ORDERLINE (POL_NUMBER, POL_PO_ID, POL_P_ID, POL_QTY, POL_BALANCE, POL_DELDATE, POL_MESSAGE) VALUES (121,987 ,'snowsnowsnow',11 , 999, date('2003-1-01'),'wow, it really snowed last night isnt it wonderful last calvin and hobbes');
INSERT INTO C_CUSTOMER (C_ID, C_SINCE, C_BALANCE, C_CREDIT, C_CREDIT_LIMIT, C_YTD_PAYMENT) VALUES (11, date('2000-10-01'), 1000, 'ab', 10000,1000.20);
-- Cleanup : Drop all the tables created as part of this test
DROP TABLE C_customer;
DROP TABLE C_supplier;
DROP TABLE C_site;
DROP TABLE C_parts;
DROP TABLE C_rule;
DROP TABLE C_discount;
DROP TABLE M_parts;
DROP TABLE M_bom;
DROP TABLE M_workorder;
DROP TABLE M_largeorder;
DROP TABLE M_inventory;
DROP TABLE O_customer;
DROP TABLE O_orders;
DROP TABLE O_orderline;
DROP TABLE O_item;
DROP TABLE S_component;
DROP TABLE S_supp_component;
DROP TABLE S_supplier;
DROP TABLE S_site;
DROP TABLE S_purchase_order;
DROP TABLE S_purchase_orderline;
DROP TABLE U_sequences;
|