:: krowemoh

Friday | 27 JUN 2025
Posts Links Other About Now

previous

TPC-H Schema

2025-06-18
tpch

Below is the program I'm using to create the tables in Pick. It's a bit easier use my CLI tools and to make it a BASIC program. This way I can delete and recreate things on demand.

I've renamed all the tables and also changed the attribute names. Ideally it matches exactly but I'd rather aim for the essence of the test rather than trying to be an exact match.

The program can then be run by doing:

BASIC BP TPCH.SCHEMA
RUN BP TPCH.SCHEMA

TPCH.SCHEMA:

*
   EXECUTE 'CREATE-FILE COUNTRY-TABLE'
*
   EXECUTE 'ADD-DICT -F COUNTRY-TABLE -A 1 -N NAME'
   EXECUTE 'ADD-DICT -F COUNTRY-TABLE -A 2 -N REGION'
   EXECUTE 'ADD-DICT -F COUNTRY-TABLE -A 3 -N COMMENTS'
*
   PRINT
*
   EXECUTE 'CREATE-FILE REGION-TABLE'
*
   EXECUTE 'ADD-DICT -F REGION-TABLE -A 1 -N NAME'
   EXECUTE 'ADD-DICT -F REGION-TABLE -A 2 -N COMMENTS'
*
   PRINT
*
   EXECUTE 'CREATE-FILE INVENTORY-FILE'
*
   EXECUTE 'ADD-DICT -F INVENTORY-FILE -A 1 -N NAME'
   EXECUTE 'ADD-DICT -F INVENTORY-FILE -A 2 -N MANUFACTURER'
   EXECUTE 'ADD-DICT -F INVENTORY-FILE -A 3 -N BRAND'
   EXECUTE 'ADD-DICT -F INVENTORY-FILE -A 4 -N TYPE'
   EXECUTE 'ADD-DICT -F INVENTORY-FILE -A 5 -N SIZE'
   EXECUTE 'ADD-DICT -F INVENTORY-FILE -A 6 -N CONTAINER'
   EXECUTE 'ADD-DICT -F INVENTORY-FILE -A 7 -N RETAIL.PRICE -J R'
   EXECUTE 'ADD-DICT -F INVENTORY-FILE -A 8 -N COMMENTS'
*
   EXECUTE 'ADD-DICT -F INVENTORY-FILE -A 9 -N SUPPLIER'
   EXECUTE 'ADD-DICT -F INVENTORY-FILE -A 10 -N QUANTITY -J R'
   EXECUTE 'ADD-DICT -F INVENTORY-FILE -A 11 -N SUPPLY.COST -J R'
   EXECUTE 'ADD-DICT -F INVENTORY-FILE -A 12 -N SUPPLIER.COMMENTS'
*
   PRINT
*
   EXECUTE 'CREATE-FILE SUPPLIER-FILE'
*
   EXECUTE 'ADD-DICT -F SUPPLIER-FILE -A 1 -N NAME'
   EXECUTE 'ADD-DICT -F SUPPLIER-FILE -A 2 -N ADDRESS'
   EXECUTE 'ADD-DICT -F SUPPLIER-FILE -A 3 -N COUNTRY'
   EXECUTE 'ADD-DICT -F SUPPLIER-FILE -A 4 -N PHONE'
   EXECUTE 'ADD-DICT -F SUPPLIER-FILE -A 5 -N ACCOUNT.BALANCE'
   EXECUTE 'ADD-DICT -F SUPPLIER-FILE -A 6 -N COMMENTS'
*
   EXECUTE 'CREATE-FILE CUSTOMER-FILE'
*
   EXECUTE 'ADD-DICT -F CUSTOMER-FILE -A 1 -N NAME'
   EXECUTE 'ADD-DICT -F CUSTOMER-FILE -A 2 -N ADDRESS'
   EXECUTE 'ADD-DICT -F CUSTOMER-FILE -A 3 -N COUNTRY'
   EXECUTE 'ADD-DICT -F CUSTOMER-FILE -A 4 -N PHONE'
   EXECUTE 'ADD-DICT -F CUSTOMER-FILE -A 5 -N ACCOUNT.BALANCE'
   EXECUTE 'ADD-DICT -F CUSTOMER-FILE -A 6 -N MARKET.SEGMENT'
   EXECUTE 'ADD-DICT -F CUSTOMER-FILE -A 7 -N COMMENTS'
*
   EXECUTE 'CREATE-FILE ORDER-FILE'
*
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 1 -N CUSTOMER'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 2 -N STATUS'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 3 -N TOTAL.PRICE'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 4 -N DATE'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 5 -N PRIORITY'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 6 -N CLERK'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 7 -N SHIP.PRIORITY'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 8 -N COMMENTS'
*
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 9 -N PRODUCT'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 10 -N SUPPLIER'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 11 -N QUANTITY'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 12 -N EXTENDED.PRICE'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 13 -N DISCOUNT'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 14 -N TAX'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 15 -N RETURN.FLAG'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 16 -N LINE.STATUS'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 17 -N SHIP.DATE'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 18 -N COMMIT.DATE'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 19 -N RECEIPT.DATE'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 20 -N SHIPPING.INSTRUCTIONS'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 21 -N SHIP.VIA'
   EXECUTE 'ADD-DICT -F ORDER-FILE -A 22 -N COMMENTS'
*
   STOP
*
* END OF PROGRAM
*
   END
*