blob: b868f92589d8c6053626b4c67a37e5077fe491be [file] [log] [blame]
--
-- 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;