should be it
This commit is contained in:
148
external/duckdb/extension/tpch/dbgen/include/dbgen/config.h
vendored
Normal file
148
external/duckdb/extension/tpch/dbgen/include/dbgen/config.h
vendored
Normal file
@@ -0,0 +1,148 @@
|
||||
/*
|
||||
* Copyright owned by the Transaction Processing Performance Council.
|
||||
*
|
||||
* A copy of the license is included under extension/tpch/dbgen/LICENSE
|
||||
* in this repository.
|
||||
*
|
||||
* You may not use this file except in compliance with the License.
|
||||
*
|
||||
* THE TPC SOFTWARE IS AVAILABLE WITHOUT CHARGE FROM TPC.
|
||||
*/
|
||||
/*
|
||||
* this file allows the compilation of DBGEN to be tailored to specific
|
||||
* architectures and operating systems. Some options are grouped
|
||||
* together to allow easier compilation on a given vendor's hardware.
|
||||
*
|
||||
* The following #defines will effect the code:
|
||||
* SEPARATOR -- character used to separate fields in flat files
|
||||
* STDLIB_HAS_GETOPT -- to prevent confilcts with gloabal getopt()
|
||||
* MDY_DATE -- generate dates as MM-DD-YY
|
||||
* WIN32 -- support for WindowsNT
|
||||
* DSS_HUGE -- 64 bit data type
|
||||
* HUGE_FORMAT -- printf string for 64 bit data type
|
||||
* EOL_HANDLING -- flat files don't need final column separator
|
||||
*
|
||||
* Certain defines must be provided in the makefile:
|
||||
* MACHINE defines
|
||||
* ==========
|
||||
* ATT -- getopt() handling
|
||||
* HP -- posix source inclusion differences
|
||||
* IBM -- posix source inclusion differences
|
||||
* SGI -- getopt() handling
|
||||
* SUN -- getopt() handling
|
||||
* LINUX
|
||||
* WIN32 -- for WINDOWS
|
||||
*
|
||||
* DATABASE defines
|
||||
* ================
|
||||
* DB2 -- use DB2 dialect in QGEN
|
||||
* INFORMIX -- use Informix dialect in QGEN
|
||||
* SQLSERVER -- use SQLSERVER dialect in QGEN
|
||||
* SYBASE -- use Sybase dialect in QGEN
|
||||
* TDAT -- use Teradata dialect in QGEN
|
||||
*
|
||||
* WORKLOAD defines
|
||||
* ================
|
||||
* TPCH -- make will create TPCH (set in makefile)
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef DBNAME
|
||||
#define DBNAME "dss"
|
||||
#endif
|
||||
|
||||
#ifndef MAC
|
||||
#define MAC
|
||||
#endif
|
||||
|
||||
#ifndef ORACLE
|
||||
#define ORACLE
|
||||
#endif
|
||||
|
||||
#ifndef TPCH
|
||||
#define TPCH
|
||||
#endif
|
||||
|
||||
#ifdef ATT
|
||||
#define STDLIB_HAS_GETOPT
|
||||
#ifdef SQLSERVER
|
||||
#define WIN32
|
||||
#else
|
||||
#define DSS_HUGE long long
|
||||
#define RNG_A 6364136223846793005ull
|
||||
#define RNG_C 1ull
|
||||
#define HUGE_FORMAT "%LLd"
|
||||
#define HUGE_DATE_FORMAT "%02LLd"
|
||||
#endif /* SQLSERVER or MP/RAS */
|
||||
#endif /* ATT */
|
||||
|
||||
#ifdef HP
|
||||
#define _INCLUDE_POSIX_SOURCE
|
||||
#define STDLIB_HAS_GETOPT
|
||||
#define DSS_HUGE long
|
||||
#define HUGE_COUNT 2
|
||||
#define HUGE_FORMAT "%ld"
|
||||
#define HUGE_DATE_FORMAT "%02lld"
|
||||
#define RNG_C 1ull
|
||||
#define RNG_A 6364136223846793005ull
|
||||
#endif /* HP */
|
||||
|
||||
#ifdef IBM
|
||||
#define STDLIB_HAS_GETOPT
|
||||
#define DSS_HUGE long long
|
||||
#define HUGE_FORMAT "%lld"
|
||||
#define HUGE_DATE_FORMAT "%02lld"
|
||||
#define RNG_A 6364136223846793005ull
|
||||
#define RNG_C 1ull
|
||||
#endif /* IBM */
|
||||
|
||||
#ifdef LINUX
|
||||
#define STDLIB_HAS_GETOPT
|
||||
#define DSS_HUGE long long int
|
||||
#define HUGE_FORMAT "%lld"
|
||||
#define HUGE_DATE_FORMAT "%02lld"
|
||||
#define RNG_A 6364136223846793005ull
|
||||
#define RNG_C 1ull
|
||||
#endif /* LINUX */
|
||||
|
||||
#ifdef MAC
|
||||
//#define _POSIX_C_SOURCE 200112L
|
||||
//#define _POSIX_SOURCE
|
||||
#define STDLIB_HAS_GETOPT
|
||||
#define SUPPORT_64BITS
|
||||
#define DSS_HUGE long long
|
||||
#define HUGE_FORMAT "%ld"
|
||||
#define HUGE_DATE_FORMAT "%02ld"
|
||||
#define RNG_A 6364136223846793005ull
|
||||
#define RNG_C 1ull
|
||||
#endif /* MAC */
|
||||
|
||||
#ifdef SUN
|
||||
#define STDLIB_HAS_GETOPT
|
||||
#define RNG_A 6364136223846793005ull
|
||||
#define RNG_C 1ull
|
||||
#define DSS_HUGE long long
|
||||
#define HUGE_FORMAT "%lld"
|
||||
#define HUGE_DATE_FORMAT "%02lld"
|
||||
#endif /* SUN */
|
||||
|
||||
#ifdef SGI
|
||||
#define STDLIB_HAS_GETOPT
|
||||
#define DSS_HUGE __int64_t
|
||||
#endif /* SGI */
|
||||
|
||||
#if (defined(WIN32) && !defined(_POSIX_))
|
||||
#define PATH_SEP '\\'
|
||||
#define DSS_HUGE __int64
|
||||
#define RNG_A 6364136223846793005uI64
|
||||
#define RNG_C 1uI64
|
||||
#define HUGE_FORMAT "%I64d"
|
||||
#define HUGE_DATE_FORMAT "%02I64d"
|
||||
/* requried by move to Visual Studio 2005 */
|
||||
#define strdup(x) _strdup(x)
|
||||
#endif /* WIN32 */
|
||||
|
||||
#ifndef PATH_SEP
|
||||
#define PATH_SEP '/'
|
||||
#endif /* PATH_SEP */
|
||||
36
external/duckdb/extension/tpch/dbgen/include/dbgen/dbgen.hpp
vendored
Normal file
36
external/duckdb/extension/tpch/dbgen/include/dbgen/dbgen.hpp
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// DuckDB
|
||||
//
|
||||
// dbgen.hpp
|
||||
//
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "duckdb.hpp"
|
||||
#include "duckdb/catalog/catalog.hpp"
|
||||
#include "duckdb/common/types/data_chunk.hpp"
|
||||
|
||||
namespace duckdb {
|
||||
class ClientContext;
|
||||
}
|
||||
|
||||
namespace tpch {
|
||||
|
||||
struct DBGenWrapper {
|
||||
//! Create the TPC-H tables in the given catalog / schema with the given suffix
|
||||
static void CreateTPCHSchema(duckdb::ClientContext &context, std::string catalog, std::string schema,
|
||||
std::string suffix);
|
||||
//! Load the TPC-H data of the given scale factor
|
||||
static void LoadTPCHData(duckdb::ClientContext &context, double sf, std::string catalog, std::string schema,
|
||||
std::string suffix, int children, int step);
|
||||
|
||||
//! Gets the specified TPC-H Query number as a string
|
||||
static std::string GetQuery(int query);
|
||||
//! Returns the CSV answer of a TPC-H query
|
||||
static std::string GetAnswer(double sf, int query);
|
||||
};
|
||||
|
||||
} // namespace tpch
|
||||
16
external/duckdb/extension/tpch/dbgen/include/dbgen/dbgen_gunk.hpp
vendored
Normal file
16
external/duckdb/extension/tpch/dbgen/include/dbgen/dbgen_gunk.hpp
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright owned by the Transaction Processing Performance Council.
|
||||
*
|
||||
* A copy of the license is included under extension/tpch/dbgen/LICENSE
|
||||
* in this repository.
|
||||
*
|
||||
* You may not use this file except in compliance with the License.
|
||||
*
|
||||
* THE TPC SOFTWARE IS AVAILABLE WITHOUT CHARGE FROM TPC.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
struct DBGenContext;
|
||||
|
||||
void load_dists(long textBufferSize, DBGenContext *ctx);
|
||||
void cleanup_dists(void);
|
||||
850
external/duckdb/extension/tpch/dbgen/include/dbgen/dists_dss.h
vendored
Normal file
850
external/duckdb/extension/tpch/dbgen/include/dbgen/dists_dss.h
vendored
Normal file
@@ -0,0 +1,850 @@
|
||||
/*
|
||||
* Copyright owned by the Transaction Processing Performance Council.
|
||||
*
|
||||
* A copy of the license is included under extension/tpch/dbgen/LICENSE
|
||||
* in this repository.
|
||||
*
|
||||
* You may not use this file except in compliance with the License.
|
||||
*
|
||||
* THE TPC SOFTWARE IS AVAILABLE WITHOUT CHARGE FROM TPC.
|
||||
*/
|
||||
const char *dists_dss = "#\n"
|
||||
"# $Id: dists.dss,v 1.2 2005/01/03 20:08:58 jms Exp $\n"
|
||||
"#\n"
|
||||
"# Revision History\n"
|
||||
"# ===================\n"
|
||||
"# $Log: dists.dss,v $\n"
|
||||
"# Revision 1.2 2005/01/03 20:08:58 jms\n"
|
||||
"# change line terminations\n"
|
||||
"#\n"
|
||||
"# Revision 1.1.1.1 2004/11/24 23:31:46 jms\n"
|
||||
"# re-establish external server\n"
|
||||
"#\n"
|
||||
"# Revision 1.1.1.1 2003/04/03 18:54:21 jms\n"
|
||||
"# recreation after CVS crash\n"
|
||||
"#\n"
|
||||
"# Revision 1.1.1.1 2003/04/03 18:54:21 jms\n"
|
||||
"# initial checkin\n"
|
||||
"#\n"
|
||||
"#\n"
|
||||
"#\n"
|
||||
"#\n"
|
||||
"# distributions have the following format:\n"
|
||||
"#\n"
|
||||
"# <token> | <weight> # comment\n"
|
||||
"#\n"
|
||||
"# Distributions are used to bias the selection of a token \n"
|
||||
"# based on its associated weight. The list of tokens and values \n"
|
||||
"# between the keywords BEGIN and END define the distribution named after\n"
|
||||
"# the BEGIN. A uniformly random value from [0, sum(weights)]\n"
|
||||
"# will be chosen and the first token whose cumulative weight is greater "
|
||||
"than\n"
|
||||
"# or equal to the result will be returned. In essence, the weights for "
|
||||
"each\n"
|
||||
"# token represent its relative weight within a distribution.\n"
|
||||
"#\n"
|
||||
"# one special token is defined: count (number of data points in the \n"
|
||||
"# distribution). It MUST be defined for each named distribution.\n"
|
||||
"#-----------------------------------------------------------------------\n"
|
||||
"# currently defined distributions and their use:\n"
|
||||
"# NAME FIELD/NOTES\n"
|
||||
"# ======== ==============\n"
|
||||
"# category parts.category\n"
|
||||
"# container parts.container\n"
|
||||
"# instruct shipping instructions\n"
|
||||
"# msegmnt market segment\n"
|
||||
"# names parts.name\n"
|
||||
"# nations must be ordered along with regions\n"
|
||||
"# nations2 stand alone nations set for use with qgen\n"
|
||||
"# o_prio order priority\n"
|
||||
"# regions must be ordered along with nations\n"
|
||||
"# rflag lineitems.returnflag\n"
|
||||
"# types parts.type\n"
|
||||
"# colors embedded string creation; CANNOT BE USED FOR pick_str(), "
|
||||
"agg_str() perturbs order\n"
|
||||
"# articles comment generation \n"
|
||||
"# nouns \n"
|
||||
"# verbs \n"
|
||||
"# adverbs \n"
|
||||
"# auxillaries \n"
|
||||
"# prepositions\n"
|
||||
"# terminators\n"
|
||||
"# grammar sentence formation\n"
|
||||
"# np\n"
|
||||
"# vp\n"
|
||||
"###\n"
|
||||
"# category\n"
|
||||
"###\n"
|
||||
"BEGIN category\n"
|
||||
"COUNT|5\n"
|
||||
"FURNITURE|1\n"
|
||||
"STORAGE EQUIP|1\n"
|
||||
"TOOLS|1\n"
|
||||
"MACHINE TOOLS|1\n"
|
||||
"OTHER|1\n"
|
||||
"END category\n"
|
||||
"###\n"
|
||||
"# container\n"
|
||||
"###\n"
|
||||
"begin p_cntr\n"
|
||||
"count|40\n"
|
||||
"SM CASE|1\n"
|
||||
"SM BOX|1\n"
|
||||
"SM BAG|1\n"
|
||||
"SM JAR|1\n"
|
||||
"SM PACK|1\n"
|
||||
"SM PKG|1\n"
|
||||
"SM CAN|1\n"
|
||||
"SM DRUM|1\n"
|
||||
"LG CASE|1\n"
|
||||
"LG BOX|1\n"
|
||||
"LG BAG|1\n"
|
||||
"LG JAR|1\n"
|
||||
"LG PACK|1\n"
|
||||
"LG PKG|1\n"
|
||||
"LG CAN|1\n"
|
||||
"LG DRUM|1\n"
|
||||
"MED CASE|1\n"
|
||||
"MED BOX|1\n"
|
||||
"MED BAG|1\n"
|
||||
"MED JAR|1\n"
|
||||
"MED PACK|1\n"
|
||||
"MED PKG|1\n"
|
||||
"MED CAN|1\n"
|
||||
"MED DRUM|1\n"
|
||||
"JUMBO CASE|1\n"
|
||||
"JUMBO BOX|1\n"
|
||||
"JUMBO BAG|1\n"
|
||||
"JUMBO JAR|1\n"
|
||||
"JUMBO PACK|1\n"
|
||||
"JUMBO PKG|1\n"
|
||||
"JUMBO CAN|1\n"
|
||||
"JUMBO DRUM|1\n"
|
||||
"WRAP CASE|1\n"
|
||||
"WRAP BOX|1\n"
|
||||
"WRAP BAG|1\n"
|
||||
"WRAP JAR|1\n"
|
||||
"WRAP PACK|1\n"
|
||||
"WRAP PKG|1\n"
|
||||
"WRAP CAN|1\n"
|
||||
"WRAP DRUM|1\n"
|
||||
"end p_cntr\n"
|
||||
"###\n"
|
||||
"# instruct\n"
|
||||
"###\n"
|
||||
"begin instruct\n"
|
||||
"count|4\n"
|
||||
"DELIVER IN PERSON|1\n"
|
||||
"COLLECT COD|1\n"
|
||||
"TAKE BACK RETURN|1\n"
|
||||
"NONE|1\n"
|
||||
"end instruct\n"
|
||||
"###\n"
|
||||
"# msegmnt\n"
|
||||
"###\n"
|
||||
"begin msegmnt\n"
|
||||
"count|5\n"
|
||||
"AUTOMOBILE|1\n"
|
||||
"BUILDING|1\n"
|
||||
"FURNITURE|1\n"
|
||||
"HOUSEHOLD|1\n"
|
||||
"MACHINERY|1\n"
|
||||
"end msegmnt\n"
|
||||
"###\n"
|
||||
"# names\n"
|
||||
"###\n"
|
||||
"begin p_names\n"
|
||||
"COUNT|4\n"
|
||||
"CLEANER|1\n"
|
||||
"SOAP|1\n"
|
||||
"DETERGENT|1\n"
|
||||
"EXTRA|1\n"
|
||||
"end p_names\n"
|
||||
"###\n"
|
||||
"# nations\n"
|
||||
"# NOTE: this is a special case; the weights here are adjustments to\n"
|
||||
"# map correctly into the regions table, and are *NOT* cummulative\n"
|
||||
"# values to mimic a distribution\n"
|
||||
"###\n"
|
||||
"begin nations\n"
|
||||
"count|25\n"
|
||||
"ALGERIA|0\n"
|
||||
"ARGENTINA|1\n"
|
||||
"BRAZIL|0\n"
|
||||
"CANADA|0\n"
|
||||
"EGYPT|3\n"
|
||||
"ETHIOPIA|-4\n"
|
||||
"FRANCE|3\n"
|
||||
"GERMANY|0\n"
|
||||
"INDIA|-1\n"
|
||||
"INDONESIA|0\n"
|
||||
"IRAN|2\n"
|
||||
"IRAQ|0\n"
|
||||
"JAPAN|-2\n"
|
||||
"JORDAN|2\n"
|
||||
"KENYA|-4\n"
|
||||
"MOROCCO|0\n"
|
||||
"MOZAMBIQUE|0\n"
|
||||
"PERU|1\n"
|
||||
"CHINA|1\n"
|
||||
"ROMANIA|1\n"
|
||||
"SAUDI ARABIA|1\n"
|
||||
"VIETNAM|-2\n"
|
||||
"RUSSIA|1\n"
|
||||
"UNITED KINGDOM|0\n"
|
||||
"UNITED STATES|-2\n"
|
||||
"end nations\n"
|
||||
"###\n"
|
||||
"# nations2\n"
|
||||
"###\n"
|
||||
"begin nations2\n"
|
||||
"count|25\n"
|
||||
"ALGERIA|1\n"
|
||||
"ARGENTINA|1\n"
|
||||
"BRAZIL|1\n"
|
||||
"CANADA|1\n"
|
||||
"EGYPT|1\n"
|
||||
"ETHIOPIA|1\n"
|
||||
"FRANCE|1\n"
|
||||
"GERMANY|1\n"
|
||||
"INDIA|1\n"
|
||||
"INDONESIA|1\n"
|
||||
"IRAN|1\n"
|
||||
"IRAQ|1\n"
|
||||
"JAPAN|1\n"
|
||||
"JORDAN|1\n"
|
||||
"KENYA|1\n"
|
||||
"MOROCCO|1\n"
|
||||
"MOZAMBIQUE|1\n"
|
||||
"PERU|1\n"
|
||||
"CHINA|1\n"
|
||||
"ROMANIA|1\n"
|
||||
"SAUDI ARABIA|1\n"
|
||||
"VIETNAM|1\n"
|
||||
"RUSSIA|1\n"
|
||||
"UNITED KINGDOM|1\n"
|
||||
"UNITED STATES|1\n"
|
||||
"end nations2\n"
|
||||
"###\n"
|
||||
"# regions\n"
|
||||
"###\n"
|
||||
"begin regions\n"
|
||||
"count|5\n"
|
||||
"AFRICA|1\n"
|
||||
"AMERICA|1\n"
|
||||
"ASIA|1\n"
|
||||
"EUROPE|1\n"
|
||||
"MIDDLE EAST|1\n"
|
||||
"end regions\n"
|
||||
"###\n"
|
||||
"# o_prio\n"
|
||||
"###\n"
|
||||
"begin o_oprio\n"
|
||||
"count|5\n"
|
||||
"1-URGENT|1\n"
|
||||
"2-HIGH|1\n"
|
||||
"3-MEDIUM|1\n"
|
||||
"4-NOT SPECIFIED|1\n"
|
||||
"5-LOW|1\n"
|
||||
"end o_oprio\n"
|
||||
"###\n"
|
||||
"# rflag\n"
|
||||
"###\n"
|
||||
"begin rflag\n"
|
||||
"count|2\n"
|
||||
"R|1\n"
|
||||
"A|1\n"
|
||||
"end rflag\n"
|
||||
"###\n"
|
||||
"# smode\n"
|
||||
"###\n"
|
||||
"begin smode\n"
|
||||
"count|7\n"
|
||||
"REG AIR|1\n"
|
||||
"AIR|1\n"
|
||||
"RAIL|1\n"
|
||||
"TRUCK|1\n"
|
||||
"MAIL|1\n"
|
||||
"FOB|1\n"
|
||||
"SHIP|1\n"
|
||||
"end smode\n"
|
||||
"###\n"
|
||||
"# types\n"
|
||||
"###\n"
|
||||
"begin p_types\n"
|
||||
"COUNT|150\n"
|
||||
"STANDARD ANODIZED TIN|1\n"
|
||||
"STANDARD ANODIZED NICKEL|1\n"
|
||||
"STANDARD ANODIZED BRASS|1\n"
|
||||
"STANDARD ANODIZED STEEL|1\n"
|
||||
"STANDARD ANODIZED COPPER|1\n"
|
||||
"STANDARD BURNISHED TIN|1\n"
|
||||
"STANDARD BURNISHED NICKEL|1\n"
|
||||
"STANDARD BURNISHED BRASS|1\n"
|
||||
"STANDARD BURNISHED STEEL|1\n"
|
||||
"STANDARD BURNISHED COPPER|1\n"
|
||||
"STANDARD PLATED TIN|1\n"
|
||||
"STANDARD PLATED NICKEL|1\n"
|
||||
"STANDARD PLATED BRASS|1\n"
|
||||
"STANDARD PLATED STEEL|1\n"
|
||||
"STANDARD PLATED COPPER|1\n"
|
||||
"STANDARD POLISHED TIN|1\n"
|
||||
"STANDARD POLISHED NICKEL|1\n"
|
||||
"STANDARD POLISHED BRASS|1\n"
|
||||
"STANDARD POLISHED STEEL|1\n"
|
||||
"STANDARD POLISHED COPPER|1\n"
|
||||
"STANDARD BRUSHED TIN|1\n"
|
||||
"STANDARD BRUSHED NICKEL|1\n"
|
||||
"STANDARD BRUSHED BRASS|1\n"
|
||||
"STANDARD BRUSHED STEEL|1\n"
|
||||
"STANDARD BRUSHED COPPER|1\n"
|
||||
"SMALL ANODIZED TIN|1\n"
|
||||
"SMALL ANODIZED NICKEL|1\n"
|
||||
"SMALL ANODIZED BRASS|1\n"
|
||||
"SMALL ANODIZED STEEL|1\n"
|
||||
"SMALL ANODIZED COPPER|1\n"
|
||||
"SMALL BURNISHED TIN|1\n"
|
||||
"SMALL BURNISHED NICKEL|1\n"
|
||||
"SMALL BURNISHED BRASS|1\n"
|
||||
"SMALL BURNISHED STEEL|1\n"
|
||||
"SMALL BURNISHED COPPER|1\n"
|
||||
"SMALL PLATED TIN|1\n"
|
||||
"SMALL PLATED NICKEL|1\n"
|
||||
"SMALL PLATED BRASS|1\n"
|
||||
"SMALL PLATED STEEL|1\n"
|
||||
"SMALL PLATED COPPER|1\n"
|
||||
"SMALL POLISHED TIN|1\n"
|
||||
"SMALL POLISHED NICKEL|1\n"
|
||||
"SMALL POLISHED BRASS|1\n"
|
||||
"SMALL POLISHED STEEL|1\n"
|
||||
"SMALL POLISHED COPPER|1\n"
|
||||
"SMALL BRUSHED TIN|1\n"
|
||||
"SMALL BRUSHED NICKEL|1\n"
|
||||
"SMALL BRUSHED BRASS|1\n"
|
||||
"SMALL BRUSHED STEEL|1\n"
|
||||
"SMALL BRUSHED COPPER|1\n"
|
||||
"MEDIUM ANODIZED TIN|1\n"
|
||||
"MEDIUM ANODIZED NICKEL|1\n"
|
||||
"MEDIUM ANODIZED BRASS|1\n"
|
||||
"MEDIUM ANODIZED STEEL|1\n"
|
||||
"MEDIUM ANODIZED COPPER|1\n"
|
||||
"MEDIUM BURNISHED TIN|1\n"
|
||||
"MEDIUM BURNISHED NICKEL|1\n"
|
||||
"MEDIUM BURNISHED BRASS|1\n"
|
||||
"MEDIUM BURNISHED STEEL|1\n"
|
||||
"MEDIUM BURNISHED COPPER|1\n"
|
||||
"MEDIUM PLATED TIN|1\n"
|
||||
"MEDIUM PLATED NICKEL|1\n"
|
||||
"MEDIUM PLATED BRASS|1\n"
|
||||
"MEDIUM PLATED STEEL|1\n"
|
||||
"MEDIUM PLATED COPPER|1\n"
|
||||
"MEDIUM POLISHED TIN|1\n"
|
||||
"MEDIUM POLISHED NICKEL|1\n"
|
||||
"MEDIUM POLISHED BRASS|1\n"
|
||||
"MEDIUM POLISHED STEEL|1\n"
|
||||
"MEDIUM POLISHED COPPER|1\n"
|
||||
"MEDIUM BRUSHED TIN|1\n"
|
||||
"MEDIUM BRUSHED NICKEL|1\n"
|
||||
"MEDIUM BRUSHED BRASS|1\n"
|
||||
"MEDIUM BRUSHED STEEL|1\n"
|
||||
"MEDIUM BRUSHED COPPER|1\n"
|
||||
"LARGE ANODIZED TIN|1\n"
|
||||
"LARGE ANODIZED NICKEL|1\n"
|
||||
"LARGE ANODIZED BRASS|1\n"
|
||||
"LARGE ANODIZED STEEL|1\n"
|
||||
"LARGE ANODIZED COPPER|1\n"
|
||||
"LARGE BURNISHED TIN|1\n"
|
||||
"LARGE BURNISHED NICKEL|1\n"
|
||||
"LARGE BURNISHED BRASS|1\n"
|
||||
"LARGE BURNISHED STEEL|1\n"
|
||||
"LARGE BURNISHED COPPER|1\n"
|
||||
"LARGE PLATED TIN|1\n"
|
||||
"LARGE PLATED NICKEL|1\n"
|
||||
"LARGE PLATED BRASS|1\n"
|
||||
"LARGE PLATED STEEL|1\n"
|
||||
"LARGE PLATED COPPER|1\n"
|
||||
"LARGE POLISHED TIN|1\n"
|
||||
"LARGE POLISHED NICKEL|1\n"
|
||||
"LARGE POLISHED BRASS|1\n"
|
||||
"LARGE POLISHED STEEL|1\n"
|
||||
"LARGE POLISHED COPPER|1\n"
|
||||
"LARGE BRUSHED TIN|1\n"
|
||||
"LARGE BRUSHED NICKEL|1\n"
|
||||
"LARGE BRUSHED BRASS|1\n"
|
||||
"LARGE BRUSHED STEEL|1\n"
|
||||
"LARGE BRUSHED COPPER|1\n"
|
||||
"ECONOMY ANODIZED TIN|1\n"
|
||||
"ECONOMY ANODIZED NICKEL|1\n"
|
||||
"ECONOMY ANODIZED BRASS|1\n"
|
||||
"ECONOMY ANODIZED STEEL|1\n"
|
||||
"ECONOMY ANODIZED COPPER|1\n"
|
||||
"ECONOMY BURNISHED TIN|1\n"
|
||||
"ECONOMY BURNISHED NICKEL|1\n"
|
||||
"ECONOMY BURNISHED BRASS|1\n"
|
||||
"ECONOMY BURNISHED STEEL|1\n"
|
||||
"ECONOMY BURNISHED COPPER|1\n"
|
||||
"ECONOMY PLATED TIN|1\n"
|
||||
"ECONOMY PLATED NICKEL|1\n"
|
||||
"ECONOMY PLATED BRASS|1\n"
|
||||
"ECONOMY PLATED STEEL|1\n"
|
||||
"ECONOMY PLATED COPPER|1\n"
|
||||
"ECONOMY POLISHED TIN|1\n"
|
||||
"ECONOMY POLISHED NICKEL|1\n"
|
||||
"ECONOMY POLISHED BRASS|1\n"
|
||||
"ECONOMY POLISHED STEEL|1\n"
|
||||
"ECONOMY POLISHED COPPER|1\n"
|
||||
"ECONOMY BRUSHED TIN|1\n"
|
||||
"ECONOMY BRUSHED NICKEL|1\n"
|
||||
"ECONOMY BRUSHED BRASS|1\n"
|
||||
"ECONOMY BRUSHED STEEL|1\n"
|
||||
"ECONOMY BRUSHED COPPER|1\n"
|
||||
"PROMO ANODIZED TIN|1\n"
|
||||
"PROMO ANODIZED NICKEL|1\n"
|
||||
"PROMO ANODIZED BRASS|1\n"
|
||||
"PROMO ANODIZED STEEL|1\n"
|
||||
"PROMO ANODIZED COPPER|1\n"
|
||||
"PROMO BURNISHED TIN|1\n"
|
||||
"PROMO BURNISHED NICKEL|1\n"
|
||||
"PROMO BURNISHED BRASS|1\n"
|
||||
"PROMO BURNISHED STEEL|1\n"
|
||||
"PROMO BURNISHED COPPER|1\n"
|
||||
"PROMO PLATED TIN|1\n"
|
||||
"PROMO PLATED NICKEL|1\n"
|
||||
"PROMO PLATED BRASS|1\n"
|
||||
"PROMO PLATED STEEL|1\n"
|
||||
"PROMO PLATED COPPER|1\n"
|
||||
"PROMO POLISHED TIN|1\n"
|
||||
"PROMO POLISHED NICKEL|1\n"
|
||||
"PROMO POLISHED BRASS|1\n"
|
||||
"PROMO POLISHED STEEL|1\n"
|
||||
"PROMO POLISHED COPPER|1\n"
|
||||
"PROMO BRUSHED TIN|1\n"
|
||||
"PROMO BRUSHED NICKEL|1\n"
|
||||
"PROMO BRUSHED BRASS|1\n"
|
||||
"PROMO BRUSHED STEEL|1\n"
|
||||
"PROMO BRUSHED COPPER|1\n"
|
||||
"end p_types\n"
|
||||
"###\n"
|
||||
"# colors\n"
|
||||
"# NOTE: This distribution CANNOT be used by pick_str(), since agg_str() "
|
||||
"perturbs its order\n"
|
||||
"###\n"
|
||||
"begin colors\n"
|
||||
"COUNT|92\n"
|
||||
"almond|1\n"
|
||||
"antique|1\n"
|
||||
"aquamarine|1\n"
|
||||
"azure|1\n"
|
||||
"beige|1\n"
|
||||
"bisque|1\n"
|
||||
"black|1\n"
|
||||
"blanched|1\n"
|
||||
"blue|1\n"
|
||||
"blush|1\n"
|
||||
"brown|1\n"
|
||||
"burlywood|1\n"
|
||||
"burnished|1\n"
|
||||
"chartreuse|1\n"
|
||||
"chiffon|1\n"
|
||||
"chocolate|1\n"
|
||||
"coral|1\n"
|
||||
"cornflower|1\n"
|
||||
"cornsilk|1\n"
|
||||
"cream|1\n"
|
||||
"cyan|1\n"
|
||||
"dark|1\n"
|
||||
"deep|1\n"
|
||||
"dim|1\n"
|
||||
"dodger|1\n"
|
||||
"drab|1\n"
|
||||
"firebrick|1\n"
|
||||
"floral|1\n"
|
||||
"forest|1\n"
|
||||
"frosted|1\n"
|
||||
"gainsboro|1\n"
|
||||
"ghost|1\n"
|
||||
"goldenrod|1\n"
|
||||
"green|1\n"
|
||||
"grey|1\n"
|
||||
"honeydew|1\n"
|
||||
"hot|1\n"
|
||||
"indian|1\n"
|
||||
"ivory|1\n"
|
||||
"khaki|1\n"
|
||||
"lace|1\n"
|
||||
"lavender|1\n"
|
||||
"lawn|1\n"
|
||||
"lemon|1\n"
|
||||
"light|1\n"
|
||||
"lime|1\n"
|
||||
"linen|1\n"
|
||||
"magenta|1\n"
|
||||
"maroon|1\n"
|
||||
"medium|1\n"
|
||||
"metallic|1\n"
|
||||
"midnight|1\n"
|
||||
"mint|1\n"
|
||||
"misty|1\n"
|
||||
"moccasin|1\n"
|
||||
"navajo|1\n"
|
||||
"navy|1\n"
|
||||
"olive|1\n"
|
||||
"orange|1\n"
|
||||
"orchid|1\n"
|
||||
"pale|1\n"
|
||||
"papaya|1\n"
|
||||
"peach|1\n"
|
||||
"peru|1\n"
|
||||
"pink|1\n"
|
||||
"plum|1\n"
|
||||
"powder|1\n"
|
||||
"puff|1\n"
|
||||
"purple|1\n"
|
||||
"red|1\n"
|
||||
"rose|1\n"
|
||||
"rosy|1\n"
|
||||
"royal|1\n"
|
||||
"saddle|1\n"
|
||||
"salmon|1\n"
|
||||
"sandy|1\n"
|
||||
"seashell|1\n"
|
||||
"sienna|1\n"
|
||||
"sky|1\n"
|
||||
"slate|1\n"
|
||||
"smoke|1\n"
|
||||
"snow|1\n"
|
||||
"spring|1\n"
|
||||
"steel|1\n"
|
||||
"tan|1\n"
|
||||
"thistle|1\n"
|
||||
"tomato|1\n"
|
||||
"turquoise|1\n"
|
||||
"violet|1\n"
|
||||
"wheat|1\n"
|
||||
"white|1\n"
|
||||
"yellow|1\n"
|
||||
"end colors\n"
|
||||
"################\n"
|
||||
"################\n"
|
||||
"## psuedo text distributions\n"
|
||||
"################\n"
|
||||
"################\n"
|
||||
"###\n"
|
||||
"# nouns\n"
|
||||
"###\n"
|
||||
"BEGIN nouns\n"
|
||||
"COUNT|45\n"
|
||||
"packages|40\n"
|
||||
"requests|40\n"
|
||||
"accounts|40\n"
|
||||
"deposits|40\n"
|
||||
"foxes|20\n"
|
||||
"ideas|20\n"
|
||||
"theodolites|20\n"
|
||||
"pinto beans|20\n"
|
||||
"instructions|20\n"
|
||||
"dependencies|10\n"
|
||||
"excuses|10\n"
|
||||
"platelets|10\n"
|
||||
"asymptotes|10\n"
|
||||
"courts|5\n"
|
||||
"dolphins|5\n"
|
||||
"multipliers|1\n"
|
||||
"sauternes|1\n"
|
||||
"warthogs|1\n"
|
||||
"frets|1\n"
|
||||
"dinos|1\n"
|
||||
"attainments|1\n"
|
||||
"somas|1\n"
|
||||
"Tiresias|1\n"
|
||||
"patterns|1\n"
|
||||
"forges|1\n"
|
||||
"braids|1\n"
|
||||
"frays|1\n"
|
||||
"warhorses|1\n"
|
||||
"dugouts|1\n"
|
||||
"notornis|1\n"
|
||||
"epitaphs|1\n"
|
||||
"pearls|1\n"
|
||||
"tithes|1\n"
|
||||
"waters|1\n"
|
||||
"orbits|1\n"
|
||||
"gifts|1\n"
|
||||
"sheaves|1\n"
|
||||
"depths|1\n"
|
||||
"sentiments|1\n"
|
||||
"decoys|1\n"
|
||||
"realms|1\n"
|
||||
"pains|1\n"
|
||||
"grouches|1\n"
|
||||
"escapades|1\n"
|
||||
"hockey players|1\n"
|
||||
"END nouns\n"
|
||||
"###\n"
|
||||
"# verbs\n"
|
||||
"###\n"
|
||||
"BEGIN verbs\n"
|
||||
"COUNT|40\n"
|
||||
"sleep|20\n"
|
||||
"wake|20\n"
|
||||
"are|20\n"
|
||||
"cajole|20\n"
|
||||
"haggle|20\n"
|
||||
"nag|10\n"
|
||||
"use|10\n"
|
||||
"boost|10\n"
|
||||
"affix|5\n"
|
||||
"detect|5\n"
|
||||
"integrate|5\n"
|
||||
"maintain|1\n"
|
||||
"nod|1\n"
|
||||
"was|1\n"
|
||||
"lose|1\n"
|
||||
"sublate|1\n"
|
||||
"solve|1\n"
|
||||
"thrash|1\n"
|
||||
"promise|1\n"
|
||||
"engage|1\n"
|
||||
"hinder|1\n"
|
||||
"print|1\n"
|
||||
"x-ray|1\n"
|
||||
"breach|1\n"
|
||||
"eat|1\n"
|
||||
"grow|1\n"
|
||||
"impress|1\n"
|
||||
"mold|1\n"
|
||||
"poach|1\n"
|
||||
"serve|1\n"
|
||||
"run|1\n"
|
||||
"dazzle|1\n"
|
||||
"snooze|1\n"
|
||||
"doze|1\n"
|
||||
"unwind|1\n"
|
||||
"kindle|1\n"
|
||||
"play|1\n"
|
||||
"hang|1\n"
|
||||
"believe|1\n"
|
||||
"doubt|1\n"
|
||||
"END verbs\n"
|
||||
"###\n"
|
||||
"# adverbs\n"
|
||||
"##\n"
|
||||
"BEGIN adverbs\n"
|
||||
"COUNT|28\n"
|
||||
"sometimes|1\n"
|
||||
"always|1\n"
|
||||
"never|1\n"
|
||||
"furiously|50\n"
|
||||
"slyly|50\n"
|
||||
"carefully|50\n"
|
||||
"blithely|40\n"
|
||||
"quickly|30\n"
|
||||
"fluffily|20\n"
|
||||
"slowly|1\n"
|
||||
"quietly|1\n"
|
||||
"ruthlessly|1\n"
|
||||
"thinly|1\n"
|
||||
"closely|1\n"
|
||||
"doggedly|1\n"
|
||||
"daringly|1\n"
|
||||
"bravely|1\n"
|
||||
"stealthily|1\n"
|
||||
"permanently|1\n"
|
||||
"enticingly|1\n"
|
||||
"idly|1\n"
|
||||
"busily|1\n"
|
||||
"regularly|1\n"
|
||||
"finally|1\n"
|
||||
"ironically|1\n"
|
||||
"evenly|1\n"
|
||||
"boldly|1\n"
|
||||
"silently|1\n"
|
||||
"END adverbs\n"
|
||||
"###\n"
|
||||
"# articles\n"
|
||||
"##\n"
|
||||
"BEGIN articles\n"
|
||||
"COUNT|3\n"
|
||||
"the|50\n"
|
||||
"a|20\n"
|
||||
"an|5\n"
|
||||
"END articles\n"
|
||||
"###\n"
|
||||
"# prepositions\n"
|
||||
"##\n"
|
||||
"BEGIN prepositions\n"
|
||||
"COUNT|47\n"
|
||||
"about|50\n"
|
||||
"above|50\n"
|
||||
"according to|50\n"
|
||||
"across|50\n"
|
||||
"after|50\n"
|
||||
"against|40\n"
|
||||
"along|40\n"
|
||||
"alongside of|30\n"
|
||||
"among|30\n"
|
||||
"around|20\n"
|
||||
"at|10\n"
|
||||
"atop|1\n"
|
||||
"before|1\n"
|
||||
"behind|1\n"
|
||||
"beneath|1\n"
|
||||
"beside|1\n"
|
||||
"besides|1\n"
|
||||
"between|1\n"
|
||||
"beyond|1\n"
|
||||
"by|1\n"
|
||||
"despite|1\n"
|
||||
"during|1\n"
|
||||
"except|1\n"
|
||||
"for|1\n"
|
||||
"from|1\n"
|
||||
"in place of|1\n"
|
||||
"inside|1\n"
|
||||
"instead of|1\n"
|
||||
"into|1\n"
|
||||
"near|1\n"
|
||||
"of|1\n"
|
||||
"on|1\n"
|
||||
"outside|1\n"
|
||||
"over|1 \n"
|
||||
"past|1\n"
|
||||
"since|1\n"
|
||||
"through|1\n"
|
||||
"throughout|1\n"
|
||||
"to|1\n"
|
||||
"toward|1\n"
|
||||
"under|1\n"
|
||||
"until|1\n"
|
||||
"up|1 \n"
|
||||
"upon|1\n"
|
||||
"whithout|1\n"
|
||||
"with|1\n"
|
||||
"within|1\n"
|
||||
"END prepositions\n"
|
||||
"###\n"
|
||||
"# auxillaries\n"
|
||||
"##\n"
|
||||
"BEGIN auxillaries\n"
|
||||
"COUNT|18\n"
|
||||
"do|1\n"
|
||||
"may|1\n"
|
||||
"might|1\n"
|
||||
"shall|1\n"
|
||||
"will|1\n"
|
||||
"would|1\n"
|
||||
"can|1\n"
|
||||
"could|1\n"
|
||||
"should|1\n"
|
||||
"ought to|1\n"
|
||||
"must|1\n"
|
||||
"will have to|1\n"
|
||||
"shall have to|1\n"
|
||||
"could have to|1\n"
|
||||
"should have to|1\n"
|
||||
"must have to|1\n"
|
||||
"need to|1\n"
|
||||
"try to|1\n"
|
||||
"END auxiallaries\n"
|
||||
"###\n"
|
||||
"# terminators\n"
|
||||
"##\n"
|
||||
"BEGIN terminators\n"
|
||||
"COUNT|6\n"
|
||||
".|50\n"
|
||||
";|1\n"
|
||||
":|1\n"
|
||||
"?|1\n"
|
||||
"!|1\n"
|
||||
"--|1\n"
|
||||
"END terminators\n"
|
||||
"###\n"
|
||||
"# adjectives\n"
|
||||
"##\n"
|
||||
"BEGIN adjectives\n"
|
||||
"COUNT|29\n"
|
||||
"special|20\n"
|
||||
"pending|20\n"
|
||||
"unusual|20\n"
|
||||
"express|20\n"
|
||||
"furious|1\n"
|
||||
"sly|1\n"
|
||||
"careful|1\n"
|
||||
"blithe|1\n"
|
||||
"quick|1\n"
|
||||
"fluffy|1\n"
|
||||
"slow|1\n"
|
||||
"quiet|1\n"
|
||||
"ruthless|1\n"
|
||||
"thin|1\n"
|
||||
"close|1\n"
|
||||
"dogged|1\n"
|
||||
"daring|1\n"
|
||||
"brave|1\n"
|
||||
"stealthy|1\n"
|
||||
"permanent|1\n"
|
||||
"enticing|1\n"
|
||||
"idle|1\n"
|
||||
"busy|1\n"
|
||||
"regular|50\n"
|
||||
"final|40\n"
|
||||
"ironic|40\n"
|
||||
"even|30\n"
|
||||
"bold|20\n"
|
||||
"silent|10\n"
|
||||
"END adjectives\n"
|
||||
"###\n"
|
||||
"# grammar\n"
|
||||
"# first level grammar. N=noun phrase, V=verb phrase,\n"
|
||||
"# P=prepositional phrase, T=setence termination\n"
|
||||
"##\n"
|
||||
"BEGIN grammar\n"
|
||||
"COUNT|5\n"
|
||||
"N V T|3\n"
|
||||
"N V P T|3\n"
|
||||
"N V N T|3\n"
|
||||
"N P V N T|1\n"
|
||||
"N P V P T|1\n"
|
||||
"END grammar\n"
|
||||
"###\n"
|
||||
"# NP\n"
|
||||
"# second level grammar. Noun phrases. N=noun, A=article, \n"
|
||||
"# J=adjective, D=adverb\n"
|
||||
"##\n"
|
||||
"BEGIN np\n"
|
||||
"COUNT|4\n"
|
||||
"N|10\n"
|
||||
"J N|20\n"
|
||||
"J, J N|10\n"
|
||||
"D J N|50\n"
|
||||
"END np\n"
|
||||
"###\n"
|
||||
"# VP\n"
|
||||
"# second level grammar. Verb phrases. V=verb, X=auxiallary, \n"
|
||||
"# D=adverb\n"
|
||||
"##\n"
|
||||
"BEGIN vp\n"
|
||||
"COUNT|4\n"
|
||||
"V|30\n"
|
||||
"X V|1\n"
|
||||
"V D|40\n"
|
||||
"X V D|1\n"
|
||||
"END vp\n"
|
||||
"###\n"
|
||||
"# Q13\n"
|
||||
"# Substitution parameters for Q13 \n"
|
||||
"##\n"
|
||||
"BEGIN Q13a\n"
|
||||
"COUNT|4\n"
|
||||
"special|20\n"
|
||||
"pending|20\n"
|
||||
"unusual|20\n"
|
||||
"express|20\n"
|
||||
"END Q13a\n"
|
||||
"BEGIN Q13b\n"
|
||||
"COUNT|4\n"
|
||||
"packages|40\n"
|
||||
"requests|40\n"
|
||||
"accounts|40\n"
|
||||
"deposits|40\n"
|
||||
"END Q13b";
|
||||
559
external/duckdb/extension/tpch/dbgen/include/dbgen/dss.h
vendored
Normal file
559
external/duckdb/extension/tpch/dbgen/include/dbgen/dss.h
vendored
Normal file
@@ -0,0 +1,559 @@
|
||||
/*
|
||||
* Copyright owned by the Transaction Processing Performance Council.
|
||||
*
|
||||
* A copy of the license is included under extension/tpch/dbgen/LICENSE
|
||||
* in this repository.
|
||||
*
|
||||
* You may not use this file except in compliance with the License.
|
||||
*
|
||||
* THE TPC SOFTWARE IS AVAILABLE WITHOUT CHARGE FROM TPC.
|
||||
*/
|
||||
/*
|
||||
* general definitions and control information for the DSS code
|
||||
* generator; if it controls the data set, it's here
|
||||
*/
|
||||
#ifndef DSS_H
|
||||
#define DSS_H
|
||||
|
||||
#include "dbgen/config.h"
|
||||
|
||||
#ifdef TPCH
|
||||
#define NAME "TPC-H"
|
||||
#endif
|
||||
#ifdef TPCR
|
||||
#define NAME "TPC-R"
|
||||
#endif
|
||||
#ifndef NAME
|
||||
#error Benchmark version must be defined in config.h
|
||||
#endif
|
||||
#define TPC "Transaction Processing Performance Council"
|
||||
#define C_DATES "1994 - 2010"
|
||||
|
||||
#include "dbgen/config.h"
|
||||
#include "dbgen/shared.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
// some defines to avoid r warnings
|
||||
#define exit(status)
|
||||
#define printf(...)
|
||||
#define fprintf(...)
|
||||
|
||||
#define NONE -1
|
||||
#define PART 0
|
||||
#define PSUPP 1
|
||||
#define SUPP 2
|
||||
#define CUST 3
|
||||
#define ORDER 4
|
||||
#define LINE 5
|
||||
#define ORDER_LINE 6
|
||||
#define PART_PSUPP 7
|
||||
#define NATION 8
|
||||
#define REGION 9
|
||||
#define UPDATE 10
|
||||
#define MAX_TABLE 11
|
||||
#define ONE_STREAM 1
|
||||
#define ADD_AT_END 2
|
||||
|
||||
#ifdef MAX
|
||||
#undef MAX
|
||||
#endif
|
||||
#ifdef MIN
|
||||
#undef MIN
|
||||
#endif
|
||||
#define MAX(a, b) ((a > b) ? a : b)
|
||||
#define MIN(A, B) ((A) < (B) ? (A) : (B))
|
||||
|
||||
#define INTERNAL_ERROR(p) // {fprintf(stderr,"%s", p);abort();}
|
||||
#define LN_CNT 4
|
||||
// static char lnoise[4] = {'|', '/', '-', '\\' };
|
||||
#define LIFENOISE(n, var) // if (verbose > 0) fprintf(stderr, "%c\b", lnoise[(var%LN_CNT)])
|
||||
|
||||
#define MALLOC_CHECK(var) \
|
||||
if ((var) == NULL) { \
|
||||
fprintf(stderr, "Malloc failed at %s:%d\n", __FILE__, __LINE__); \
|
||||
exit(1); \
|
||||
}
|
||||
#define OPEN_CHECK(var, path) \
|
||||
if ((var) == NULL) { \
|
||||
fprintf(stderr, "Open failed for %s at %s:%d\n", path, __FILE__, __LINE__); \
|
||||
exit(1); \
|
||||
}
|
||||
#ifndef MAX_CHILDREN
|
||||
#define MAX_CHILDREN 1000
|
||||
#endif
|
||||
|
||||
/*
|
||||
* macros that control sparse keys
|
||||
*
|
||||
* refer to Porting.Notes for a complete explanation
|
||||
*/
|
||||
#ifndef BITS_PER_LONG
|
||||
#define BITS_PER_LONG 32
|
||||
#define MAX_LONG 0x7FFFFFFF
|
||||
#endif /* BITS_PER_LONG */
|
||||
#define SPARSE_BITS 2
|
||||
#define SPARSE_KEEP 3
|
||||
#define MK_SPARSE(key, seq) (((((key >> 3) << 2) | (seq & 0x0003)) << 3) | (key & 0x0007))
|
||||
|
||||
#define RANDOM(tgt, lower, upper, seed) dss_random(&tgt, lower, upper, seed)
|
||||
#define RANDOM64(tgt, lower, upper, seed) dss_random64(&tgt, lower, upper, seed)
|
||||
|
||||
typedef struct {
|
||||
long weight;
|
||||
char *text;
|
||||
} set_member;
|
||||
|
||||
typedef struct {
|
||||
int count;
|
||||
int max;
|
||||
set_member *list;
|
||||
} distribution;
|
||||
/*
|
||||
* some handy access functions
|
||||
*/
|
||||
#define DIST_SIZE(d) d->count
|
||||
#define DIST_MEMBER(d, i) ((set_member *)((d)->list + i))->text
|
||||
|
||||
typedef struct {
|
||||
const char *name;
|
||||
const char *comment;
|
||||
DSS_HUGE base;
|
||||
int (*loader)();
|
||||
long (*gen_seed)(int, int);
|
||||
int child;
|
||||
DSS_HUGE vtotal;
|
||||
} tdef;
|
||||
|
||||
typedef struct SEED_T {
|
||||
long table;
|
||||
DSS_HUGE value;
|
||||
DSS_HUGE usage;
|
||||
DSS_HUGE boundary;
|
||||
#ifdef RNG_TEST
|
||||
DSS_HUGE nCalls;
|
||||
#endif
|
||||
} seed_t;
|
||||
|
||||
#define PROTO(s) s
|
||||
|
||||
struct DBGenContext;
|
||||
|
||||
/* bm_utils.c */
|
||||
const char *tpch_env_config PROTO((const char *var, const char *dflt));
|
||||
long yes_no PROTO((char *prompt));
|
||||
void tpch_a_rnd PROTO((int min, int max, seed_t *seed, char *dest));
|
||||
int tx_rnd PROTO((long min, long max, long column, char *tgt));
|
||||
long julian PROTO((long date));
|
||||
long unjulian PROTO((long date));
|
||||
long dssncasecmp PROTO((const char *s1, const char *s2, int n));
|
||||
long dsscasecmp PROTO((const char *s1, const char *s2));
|
||||
int pick_str PROTO((distribution * s, seed_t *seed, char *target));
|
||||
void agg_str PROTO((distribution * set, long count, seed_t *seed, char *dest, DBGenContext *ctx));
|
||||
void read_dist PROTO((const char *path, const char *name, distribution *target));
|
||||
void embed_str PROTO((distribution * d, int min, int max, int stream, char *dest));
|
||||
#ifndef STDLIB_HAS_GETOPT
|
||||
int getopt PROTO((int arg_cnt, char **arg_vect, char *oprions));
|
||||
#endif /* STDLIB_HAS_GETOPT */
|
||||
DSS_HUGE set_state PROTO((int t, long scale, long procs, long step, DSS_HUGE *e, DBGenContext *ctx));
|
||||
|
||||
/* rnd.c */
|
||||
DSS_HUGE NextRand PROTO((DSS_HUGE nSeed));
|
||||
DSS_HUGE UnifInt PROTO((DSS_HUGE nLow, DSS_HUGE nHigh, seed_t *seed));
|
||||
void dss_random(DSS_HUGE *tgt, DSS_HUGE min, DSS_HUGE max, seed_t *seed);
|
||||
void row_start(int t, DBGenContext *ctx);
|
||||
void row_stop_h(int t, DBGenContext *ctx);
|
||||
void dump_seeds_ds(int t, seed_t *seeds);
|
||||
|
||||
/* text.c */
|
||||
#define MAX_GRAMMAR_LEN 12 /* max length of grammar component */
|
||||
#define MAX_SENT_LEN 256 /* max length of populated sentence */
|
||||
#define RNG_PER_SENT 27 /* max number of RNG calls per sentence */
|
||||
|
||||
void init_text_pool PROTO((long bSize, DBGenContext *ctx));
|
||||
void free_text_pool PROTO(());
|
||||
|
||||
void dbg_text PROTO((char *t, int min, int max, seed_t *seed));
|
||||
|
||||
#ifdef DECLARER
|
||||
#define EXTERN
|
||||
#else
|
||||
#define EXTERN extern
|
||||
#endif /* DECLARER */
|
||||
|
||||
EXTERN distribution nations;
|
||||
EXTERN distribution nations2;
|
||||
EXTERN distribution regions;
|
||||
EXTERN distribution o_priority_set;
|
||||
EXTERN distribution l_instruct_set;
|
||||
EXTERN distribution l_smode_set;
|
||||
EXTERN distribution l_category_set;
|
||||
EXTERN distribution l_rflag_set;
|
||||
EXTERN distribution c_mseg_set;
|
||||
EXTERN distribution colors;
|
||||
EXTERN distribution p_types_set;
|
||||
EXTERN distribution p_cntr_set;
|
||||
|
||||
/* distributions that control text generation */
|
||||
EXTERN distribution articles;
|
||||
EXTERN distribution nouns;
|
||||
EXTERN distribution adjectives;
|
||||
EXTERN distribution adverbs;
|
||||
EXTERN distribution prepositions;
|
||||
EXTERN distribution verbs;
|
||||
EXTERN distribution terminators;
|
||||
EXTERN distribution auxillaries;
|
||||
EXTERN distribution np;
|
||||
EXTERN distribution vp;
|
||||
EXTERN distribution grammar;
|
||||
|
||||
EXTERN int refresh;
|
||||
EXTERN int resume;
|
||||
EXTERN long verbose;
|
||||
EXTERN long force;
|
||||
EXTERN long updates;
|
||||
EXTERN long table;
|
||||
EXTERN int set_seeds;
|
||||
EXTERN char *d_path;
|
||||
|
||||
/* added for segmented updates */
|
||||
EXTERN int insert_segments;
|
||||
EXTERN int delete_segments;
|
||||
EXTERN int insert_orders_segment;
|
||||
EXTERN int insert_lineitem_segment;
|
||||
EXTERN int delete_segment;
|
||||
|
||||
/*****************************************************************
|
||||
** table level defines use the following naming convention: t_ccc_xxx
|
||||
** with: t, a table identifier
|
||||
** ccc, a column identifier
|
||||
** xxx, a limit type
|
||||
****************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
* defines which control the parts table
|
||||
*/
|
||||
#define P_SIZE 126
|
||||
#define P_NAME_SCL 5
|
||||
#define P_MFG_TAG "Manufacturer#"
|
||||
#define P_MFG_FMT "%%s%%0%d%s"
|
||||
#define P_MFG_MIN 1
|
||||
#define P_MFG_MAX 5
|
||||
#define P_BRND_TAG "Brand#"
|
||||
#define P_BRND_FMT "%%s%%0%d%s"
|
||||
#define P_BRND_MIN 1
|
||||
#define P_BRND_MAX 5
|
||||
#define P_SIZE_MIN 1
|
||||
#define P_SIZE_MAX 50
|
||||
#define P_MCST_MIN 100
|
||||
#define P_MCST_MAX 99900
|
||||
#define P_MCST_SCL 100.0
|
||||
#define P_RCST_MIN 90000
|
||||
#define P_RCST_MAX 200000
|
||||
#define P_RCST_SCL 100.0
|
||||
/*
|
||||
* defines which control the suppliers table
|
||||
*/
|
||||
#define S_SIZE 145
|
||||
#define S_NAME_TAG "Supplier#"
|
||||
#define S_NAME_FMT "%%s%%0%d%s"
|
||||
#define S_ABAL_MIN -99999
|
||||
#define S_ABAL_MAX 999999
|
||||
#define S_CMNT_MAX 101
|
||||
#define S_CMNT_BBB 10 /* number of BBB comments/SF */
|
||||
#define BBB_DEADBEATS 50 /* % that are complaints */
|
||||
#define BBB_BASE "Customer "
|
||||
#define BBB_COMPLAIN "Complaints"
|
||||
#define BBB_COMMEND "Recommends"
|
||||
#define BBB_CMNT_LEN 19
|
||||
#define BBB_BASE_LEN 9
|
||||
#define BBB_TYPE_LEN 10
|
||||
|
||||
/*
|
||||
* defines which control the partsupp table
|
||||
*/
|
||||
#define PS_SIZE 145
|
||||
#define PS_SKEY_MIN 0
|
||||
#define PS_SKEY_MAX ((ctx->tdefs[SUPP].base - 1) * ctx->scale_factor)
|
||||
#define PS_SCST_MIN 100
|
||||
#define PS_SCST_MAX 100000
|
||||
#define PS_QTY_MIN 1
|
||||
#define PS_QTY_MAX 9999
|
||||
/*
|
||||
* defines which control the customers table
|
||||
*/
|
||||
#define C_SIZE 165
|
||||
#define C_NAME_TAG "Customer#"
|
||||
#define C_NAME_FMT "%%s%%0%d%s"
|
||||
#define C_MSEG_MAX 5
|
||||
#define C_ABAL_MIN -99999
|
||||
#define C_ABAL_MAX 999999
|
||||
/*
|
||||
* defines which control the order table
|
||||
*/
|
||||
#define O_SIZE 109
|
||||
#define O_CKEY_MIN 1
|
||||
#define O_CKEY_MAX (ctx->tdefs[CUST].base * ctx->scale_factor)
|
||||
#define O_ODATE_MIN STARTDATE
|
||||
#define O_ODATE_MAX (STARTDATE + TOTDATE - (L_SDTE_MAX + L_RDTE_MAX) - 1)
|
||||
#define O_CLRK_TAG "Clerk#"
|
||||
#define O_CLRK_FMT "%%s%%0%d%s"
|
||||
#define O_CLRK_SCL 1000
|
||||
#define O_LCNT_MIN 1
|
||||
#define O_LCNT_MAX 7
|
||||
|
||||
/*
|
||||
* defines which control the lineitem table
|
||||
*/
|
||||
#define L_SIZE 144L
|
||||
#define L_QTY_MIN 1
|
||||
#define L_QTY_MAX 50
|
||||
#define L_TAX_MIN 0
|
||||
#define L_TAX_MAX 8
|
||||
#define L_DCNT_MIN 0
|
||||
#define L_DCNT_MAX 10
|
||||
#define L_PKEY_MIN 1
|
||||
#define L_PKEY_MAX (ctx->tdefs[PART].base * ctx->scale_factor)
|
||||
#define L_SDTE_MIN 1
|
||||
#define L_SDTE_MAX 121
|
||||
#define L_CDTE_MIN 30
|
||||
#define L_CDTE_MAX 90
|
||||
#define L_RDTE_MIN 1
|
||||
#define L_RDTE_MAX 30
|
||||
/*
|
||||
* defines which control the time table
|
||||
*/
|
||||
#define T_SIZE 30
|
||||
#define T_START_DAY 3 /* wednesday ? */
|
||||
#define LEAP(y) ((!(y % 4) && (y % 100)) ? 1 : 0)
|
||||
|
||||
/*******************************************************************
|
||||
*******************************************************************
|
||||
***
|
||||
*** general or inter table defines
|
||||
***
|
||||
*******************************************************************
|
||||
*******************************************************************/
|
||||
#define SUPP_PER_PART 4
|
||||
#define ORDERS_PER_CUST 10 /* sync this with CUST_MORTALITY */
|
||||
#define CUST_MORTALITY 3 /* portion with have no orders */
|
||||
#define NATIONS_MAX 90 /* limited by country codes in phone numbers */
|
||||
#define PHONE_FMT "%02d-%03d-%03d-%04d"
|
||||
#define STARTDATE 92001
|
||||
#define CURRENTDATE 95168
|
||||
#define ENDDATE 98365
|
||||
#define TOTDATE 2557
|
||||
#define UPD_PCT 10
|
||||
#define MAX_STREAM 47
|
||||
#define V_STR_LOW 0.4
|
||||
#define PENNIES 100 /* for scaled int money arithmetic */
|
||||
#define Q11_FRACTION (double)0.0001
|
||||
/*
|
||||
* max and min SF in GB; Larger SF will require changes to the build routines
|
||||
*/
|
||||
#define MIN_SCALE 1.0
|
||||
#define MAX_SCALE 100000.0
|
||||
/*
|
||||
* beyond this point we need to allow for BCD calculations
|
||||
*/
|
||||
#define MAX_32B_SCALE 1000.0
|
||||
#define LONG2HUGE(src, dst) *dst = (DSS_HUGE)src
|
||||
#define HUGE2LONG(src, dst) *dst = (long)src
|
||||
#define HUGE_SET(src, dst) *dst = *src
|
||||
#define HUGE_MUL(op1, op2) *op1 *= op2
|
||||
#define HUGE_DIV(op1, op2) *op1 /= op2
|
||||
#define HUGE_ADD(op1, op2, dst) *dst = *op1 + op2
|
||||
#define HUGE_SUB(op1, op2, dst) *dst = *op1 - op2
|
||||
#define HUGE_MOD(op1, op2) *op1 % op2
|
||||
#define HUGE_CMP(op1, op2) (*op1 == *op2) ? 0 : (*op1 < *op2) - 1 : 1
|
||||
|
||||
/******** environmental variables and defaults ***************/
|
||||
#define DIST_TAG "DSS_DIST" /* environment var to override ... */
|
||||
#define DIST_DFLT "dists.dss" /* default file to hold distributions */
|
||||
#define PATH_TAG "DSS_PATH" /* environment var to override ... */
|
||||
#define PATH_DFLT "." /* default directory to hold tables */
|
||||
#define CONFIG_TAG "DSS_CONFIG" /* environment var to override ... */
|
||||
#define CONFIG_DFLT "." /* default directory to config files */
|
||||
#define ADHOC_TAG "DSS_ADHOC" /* environment var to override ... */
|
||||
#define ADHOC_DFLT "adhoc.dss" /* default file name for adhoc vars */
|
||||
|
||||
/******* output macros ********/
|
||||
#ifndef SEPARATOR
|
||||
#define SEPARATOR '|' /* field spearator for generated flat files */
|
||||
#endif
|
||||
/* Data type flags for a single print routine */
|
||||
#define DT_STR 0
|
||||
#ifndef MVS
|
||||
#define DT_VSTR DT_STR
|
||||
#else
|
||||
#define DT_VSTR 1
|
||||
#endif /* MVS */
|
||||
#define DT_INT 2
|
||||
#define DT_HUGE 3
|
||||
#define DT_KEY 4
|
||||
#define DT_MONEY 5
|
||||
#define DT_CHR 6
|
||||
|
||||
int dbg_print(int dt, FILE *tgt, void *data, int len, int eol);
|
||||
#define PR_STR(f, str, len) dbg_print(DT_STR, f, (void *)str, len, 1)
|
||||
#define PR_VSTR(f, str, len) dbg_print(DT_VSTR, f, (void *)str, len, 1)
|
||||
#define PR_VSTR_LAST(f, str, len) dbg_print(DT_VSTR, f, (void *)str, len, 0)
|
||||
#define PR_INT(f, str) dbg_print(DT_INT, f, (void *)str, 0, 1)
|
||||
#define PR_HUGE(f, str) dbg_print(DT_HUGE, f, (void *)str, 0, 1)
|
||||
#define PR_HUGE_LAST(f, str) dbg_print(DT_HUGE, f, (void *)str, 0, 0)
|
||||
#define PR_KEY(f, str) dbg_print(DT_KEY, f, (void *)str, 0, -1)
|
||||
#define PR_MONEY(f, str) dbg_print(DT_MONEY, f, (void *)str, 0, 1)
|
||||
#define PR_CHR(f, str) dbg_print(DT_CHR, f, (void *)str, 0, 1)
|
||||
#define PR_STRT(fp) /* any line prep for a record goes here */
|
||||
#define PR_END(fp) fprintf(fp, "\n") /* finish the record here */
|
||||
#ifdef MDY_DATE
|
||||
#define PR_DATE(tgt, yr, mn, dy) snprintf(tgt, 11, "%02d-%02d-19%02d", mn, dy, yr)
|
||||
#else
|
||||
#define PR_DATE(tgt, yr, mn, dy) snprintf(tgt, 11, "19%02ld-%02ld-%02ld", yr, mn, dy)
|
||||
#endif /* DATE_FORMAT */
|
||||
|
||||
/*
|
||||
* verification macros
|
||||
*/
|
||||
#define VRF_STR(t, d) \
|
||||
{ \
|
||||
char *xx = d; \
|
||||
while (*xx) \
|
||||
ctx->tdefs[t].vtotal += *xx++; \
|
||||
}
|
||||
#define VRF_INT(t, d) ctx->tdefs[t].vtotal += d
|
||||
#define VRF_HUGE(t, d) ctx->tdefs[t].vtotal = *((long *)&d) + *((long *)(&d + 1))
|
||||
/* assume float is a 64 bit quantity */
|
||||
#define VRF_MONEY(t, d) ctx->tdefs[t].vtotal = *((long *)&d) + *((long *)(&d + 1))
|
||||
#define VRF_CHR(t, d) ctx->tdefs[t].vtotal += d
|
||||
#define VRF_STRT(t)
|
||||
#define VRF_END(t)
|
||||
|
||||
/*********** distribuitons currently defined *************/
|
||||
#define UNIFORM 0
|
||||
|
||||
/*
|
||||
* seed indexes; used to separate the generation of individual columns
|
||||
*/
|
||||
#define P_MFG_SD 0
|
||||
#define P_BRND_SD 1
|
||||
#define P_TYPE_SD 2
|
||||
#define P_SIZE_SD 3
|
||||
#define P_CNTR_SD 4
|
||||
#define P_RCST_SD 5
|
||||
#define PS_QTY_SD 7
|
||||
#define PS_SCST_SD 8
|
||||
#define O_SUPP_SD 10
|
||||
#define O_CLRK_SD 11
|
||||
#define O_ODATE_SD 13
|
||||
#define L_QTY_SD 14
|
||||
#define L_DCNT_SD 15
|
||||
#define L_TAX_SD 16
|
||||
#define L_SHIP_SD 17
|
||||
#define L_SMODE_SD 18
|
||||
#define L_PKEY_SD 19
|
||||
#define L_SKEY_SD 20
|
||||
#define L_SDTE_SD 21
|
||||
#define L_CDTE_SD 22
|
||||
#define L_RDTE_SD 23
|
||||
#define L_RFLG_SD 24
|
||||
#define C_NTRG_SD 27
|
||||
#define C_PHNE_SD 28
|
||||
#define C_ABAL_SD 29
|
||||
#define C_MSEG_SD 30
|
||||
#define S_NTRG_SD 33
|
||||
#define S_PHNE_SD 34
|
||||
#define S_ABAL_SD 35
|
||||
#define P_NAME_SD 37
|
||||
#define O_PRIO_SD 38
|
||||
#define HVAR_SD 39
|
||||
#define O_CKEY_SD 40
|
||||
#define N_CMNT_SD 41
|
||||
#define R_CMNT_SD 42
|
||||
#define O_LCNT_SD 43
|
||||
#define BBB_JNK_SD 44
|
||||
#define BBB_TYPE_SD 45
|
||||
#define BBB_CMNT_SD 46
|
||||
#define BBB_OFFSET_SD 47
|
||||
|
||||
struct DBGenContext {
|
||||
~DBGenContext() {
|
||||
if (permute) {
|
||||
free(permute);
|
||||
permute = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
seed_t Seed[MAX_STREAM + 1] = {
|
||||
{PART, 1, 0, 1}, /* P_MFG_SD 0 */
|
||||
{PART, 46831694, 0, 1}, /* P_BRND_SD 1 */
|
||||
{PART, 1841581359, 0, 1}, /* P_TYPE_SD 2 */
|
||||
{PART, 1193163244, 0, 1}, /* P_SIZE_SD 3 */
|
||||
{PART, 727633698, 0, 1}, /* P_CNTR_SD 4 */
|
||||
{NONE, 933588178, 0, 1}, /* text pregeneration 5 */
|
||||
{PART, 804159733, 0, 2}, /* P_CMNT_SD 6 */
|
||||
{PSUPP, 1671059989, 0, SUPP_PER_PART}, /* PS_QTY_SD 7 */
|
||||
{PSUPP, 1051288424, 0, SUPP_PER_PART}, /* PS_SCST_SD 8 */
|
||||
{PSUPP, 1961692154, 0, SUPP_PER_PART * 2}, /* PS_CMNT_SD 9 */
|
||||
{ORDER, 1227283347, 0, 1}, /* O_SUPP_SD 10 */
|
||||
{ORDER, 1171034773, 0, 1}, /* O_CLRK_SD 11 */
|
||||
{ORDER, 276090261, 0, 2}, /* O_CMNT_SD 12 */
|
||||
{ORDER, 1066728069, 0, 1}, /* O_ODATE_SD 13 */
|
||||
{LINE, 209208115, 0, O_LCNT_MAX}, /* L_QTY_SD 14 */
|
||||
{LINE, 554590007, 0, O_LCNT_MAX}, /* L_DCNT_SD 15 */
|
||||
{LINE, 721958466, 0, O_LCNT_MAX}, /* L_TAX_SD 16 */
|
||||
{LINE, 1371272478, 0, O_LCNT_MAX}, /* L_SHIP_SD 17 */
|
||||
{LINE, 675466456, 0, O_LCNT_MAX}, /* L_SMODE_SD 18 */
|
||||
{LINE, 1808217256, 0, O_LCNT_MAX}, /* L_PKEY_SD 19 */
|
||||
{LINE, 2095021727, 0, O_LCNT_MAX}, /* L_SKEY_SD 20 */
|
||||
{LINE, 1769349045, 0, O_LCNT_MAX}, /* L_SDTE_SD 21 */
|
||||
{LINE, 904914315, 0, O_LCNT_MAX}, /* L_CDTE_SD 22 */
|
||||
{LINE, 373135028, 0, O_LCNT_MAX}, /* L_RDTE_SD 23 */
|
||||
{LINE, 717419739, 0, O_LCNT_MAX}, /* L_RFLG_SD 24 */
|
||||
{LINE, 1095462486, 0, O_LCNT_MAX * 2}, /* L_CMNT_SD 25 */
|
||||
{CUST, 881155353, 0, 9}, /* C_ADDR_SD 26 */
|
||||
{CUST, 1489529863, 0, 1}, /* C_NTRG_SD 27 */
|
||||
{CUST, 1521138112, 0, 3}, /* C_PHNE_SD 28 */
|
||||
{CUST, 298370230, 0, 1}, /* C_ABAL_SD 29 */
|
||||
{CUST, 1140279430, 0, 1}, /* C_MSEG_SD 30 */
|
||||
{CUST, 1335826707, 0, 2}, /* C_CMNT_SD 31 */
|
||||
{SUPP, 706178559, 0, 9}, /* S_ADDR_SD 32 */
|
||||
{SUPP, 110356601, 0, 1}, /* S_NTRG_SD 33 */
|
||||
{SUPP, 884434366, 0, 3}, /* S_PHNE_SD 34 */
|
||||
{SUPP, 962338209, 0, 1}, /* S_ABAL_SD 35 */
|
||||
{SUPP, 1341315363, 0, 2}, /* S_CMNT_SD 36 */
|
||||
{PART, 709314158, 0, 92}, /* P_NAME_SD 37 */
|
||||
{ORDER, 591449447, 0, 1}, /* O_PRIO_SD 38 */
|
||||
{LINE, 431918286, 0, 1}, /* HVAR_SD 39 */
|
||||
{ORDER, 851767375, 0, 1}, /* O_CKEY_SD 40 */
|
||||
{NATION, 606179079, 0, 2}, /* N_CMNT_SD 41 */
|
||||
{REGION, 1500869201, 0, 2}, /* R_CMNT_SD 42 */
|
||||
{ORDER, 1434868289, 0, 1}, /* O_LCNT_SD 43 */
|
||||
{SUPP, 263032577, 0, 1}, /* BBB offset 44 */
|
||||
{SUPP, 753643799, 0, 1}, /* BBB type 45 */
|
||||
{SUPP, 202794285, 0, 1}, /* BBB comment 46 */
|
||||
{SUPP, 715851524, 0, 1} /* BBB junk 47 */
|
||||
};
|
||||
|
||||
static constexpr double dM = 2147483647.0;
|
||||
|
||||
tdef tdefs[10] = {
|
||||
{"part.tbl", "part table", 200000, NULL, NULL, PSUPP, 0},
|
||||
{"partsupp.tbl", "partsupplier table", 200000, NULL, NULL, NONE, 0},
|
||||
{"supplier.tbl", "suppliers table", 10000, NULL, NULL, NONE, 0},
|
||||
{"customer.tbl", "customers table", 150000, NULL, NULL, NONE, 0},
|
||||
{"orders.tbl", "order table", 150000, NULL, NULL, LINE, 0},
|
||||
{"lineitem.tbl", "lineitem table", 150000, NULL, NULL, NONE, 0},
|
||||
{"orders.tbl", "orders/lineitem tables", 150000, NULL, NULL, LINE, 0},
|
||||
{"part.tbl", "part/partsupplier tables", 200000, NULL, NULL, PSUPP, 0},
|
||||
{"nation.tbl", "nation table", NATIONS_MAX, NULL, NULL, NONE, 0},
|
||||
{"region.tbl", "region table", NATIONS_MAX, NULL, NULL, NONE, 0},
|
||||
};
|
||||
|
||||
long scale_factor = 1;
|
||||
long *permute = NULL;
|
||||
};
|
||||
|
||||
#endif /* DSS_H */
|
||||
164
external/duckdb/extension/tpch/dbgen/include/dbgen/dsstypes.h
vendored
Normal file
164
external/duckdb/extension/tpch/dbgen/include/dbgen/dsstypes.h
vendored
Normal file
@@ -0,0 +1,164 @@
|
||||
/*
|
||||
* Copyright owned by the Transaction Processing Performance Council.
|
||||
*
|
||||
* A copy of the license is included under extension/tpch/dbgen/LICENSE
|
||||
* in this repository.
|
||||
*
|
||||
* You may not use this file except in compliance with the License.
|
||||
*
|
||||
* THE TPC SOFTWARE IS AVAILABLE WITHOUT CHARGE FROM TPC.
|
||||
*/
|
||||
/*
|
||||
* general definitions and control information for the DSS data types
|
||||
* and function prototypes
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/*
|
||||
* typedefs
|
||||
*/
|
||||
typedef struct {
|
||||
DSS_HUGE custkey;
|
||||
char name[C_NAME_LEN + 3];
|
||||
char address[C_ADDR_MAX + 1];
|
||||
int alen;
|
||||
DSS_HUGE nation_code;
|
||||
char phone[PHONE_LEN + 1];
|
||||
DSS_HUGE acctbal;
|
||||
char mktsegment[MAXAGG_LEN + 1];
|
||||
char comment[C_CMNT_MAX + 1];
|
||||
int clen;
|
||||
} customer_t;
|
||||
/* customers.c */
|
||||
long mk_cust PROTO((DSS_HUGE n_cust, customer_t *c, DBGenContext *ctx));
|
||||
int pr_cust PROTO((customer_t * c, int mode));
|
||||
int ld_cust PROTO((customer_t * c, int mode));
|
||||
|
||||
typedef struct {
|
||||
DSS_HUGE okey;
|
||||
DSS_HUGE partkey;
|
||||
DSS_HUGE suppkey;
|
||||
DSS_HUGE lcnt;
|
||||
DSS_HUGE quantity;
|
||||
DSS_HUGE eprice;
|
||||
DSS_HUGE discount;
|
||||
DSS_HUGE tax;
|
||||
char rflag[1];
|
||||
char lstatus[1];
|
||||
char cdate[DATE_LEN];
|
||||
char sdate[DATE_LEN];
|
||||
char rdate[DATE_LEN];
|
||||
char shipinstruct[MAXAGG_LEN + 1];
|
||||
char shipmode[MAXAGG_LEN + 1];
|
||||
char comment[L_CMNT_MAX + 1];
|
||||
int clen;
|
||||
} line_t;
|
||||
|
||||
typedef struct {
|
||||
DSS_HUGE okey;
|
||||
DSS_HUGE custkey;
|
||||
char orderstatus;
|
||||
DSS_HUGE totalprice;
|
||||
char odate[DATE_LEN];
|
||||
char opriority[MAXAGG_LEN + 1];
|
||||
char clerk[O_CLRK_LEN + 1];
|
||||
long spriority;
|
||||
DSS_HUGE lines;
|
||||
char comment[O_CMNT_MAX + 1];
|
||||
int clen;
|
||||
line_t l[O_LCNT_MAX];
|
||||
} order_t;
|
||||
|
||||
/* order.c */
|
||||
long mk_order PROTO((DSS_HUGE index, order_t *o, DBGenContext *ctx, long upd_num));
|
||||
int pr_order PROTO((order_t * o, int mode));
|
||||
int ld_order PROTO((order_t * o, int mode));
|
||||
void mk_sparse PROTO((DSS_HUGE index, DSS_HUGE *ok, long seq));
|
||||
|
||||
typedef struct {
|
||||
DSS_HUGE partkey;
|
||||
DSS_HUGE suppkey;
|
||||
DSS_HUGE qty;
|
||||
DSS_HUGE scost;
|
||||
char comment[PS_CMNT_MAX + 1];
|
||||
int clen;
|
||||
} partsupp_t;
|
||||
|
||||
typedef struct {
|
||||
DSS_HUGE partkey;
|
||||
char name[P_NAME_LEN + 1];
|
||||
int nlen;
|
||||
char mfgr[P_MFG_LEN + 1];
|
||||
char brand[P_BRND_LEN + 1];
|
||||
char type[P_TYPE_LEN + 1];
|
||||
int tlen;
|
||||
DSS_HUGE size;
|
||||
char container[P_CNTR_LEN + 1];
|
||||
DSS_HUGE retailprice;
|
||||
char comment[P_CMNT_MAX + 1];
|
||||
int clen;
|
||||
partsupp_t s[SUPP_PER_PART];
|
||||
} part_t;
|
||||
|
||||
/* parts.c */
|
||||
long mk_part PROTO((DSS_HUGE index, part_t *p, DBGenContext *ctx));
|
||||
int pr_part PROTO((part_t * part, int mode));
|
||||
int ld_part PROTO((part_t * part, int mode));
|
||||
|
||||
typedef struct {
|
||||
DSS_HUGE suppkey;
|
||||
char name[S_NAME_LEN + 1];
|
||||
char address[S_ADDR_MAX + 1];
|
||||
int alen;
|
||||
DSS_HUGE nation_code;
|
||||
char phone[PHONE_LEN + 1];
|
||||
DSS_HUGE acctbal;
|
||||
char comment[S_CMNT_MAX + 1];
|
||||
int clen;
|
||||
} supplier_t;
|
||||
/* supplier.c */
|
||||
long mk_supp PROTO((DSS_HUGE index, supplier_t *s, DBGenContext *ctx));
|
||||
int pr_supp PROTO((supplier_t * supp, int mode));
|
||||
int ld_supp PROTO((supplier_t * supp, int mode));
|
||||
|
||||
typedef struct {
|
||||
DSS_HUGE timekey;
|
||||
char alpha[DATE_LEN];
|
||||
long year;
|
||||
long month;
|
||||
long week;
|
||||
long day;
|
||||
} dss_time_t;
|
||||
|
||||
/* time.c */
|
||||
long mk_time PROTO((DSS_HUGE h, dss_time_t *t));
|
||||
|
||||
/*
|
||||
* this assumes that N_CMNT_LEN >= R_CMNT_LEN
|
||||
*/
|
||||
typedef struct {
|
||||
DSS_HUGE code;
|
||||
char *text;
|
||||
long join;
|
||||
char comment[N_CMNT_MAX + 1];
|
||||
int clen;
|
||||
} code_t;
|
||||
|
||||
/* code table */
|
||||
int mk_nation PROTO((DSS_HUGE i, code_t *c, DBGenContext *ctx));
|
||||
int pr_nation PROTO((code_t * c, int mode));
|
||||
int ld_nation PROTO((code_t * c, int mode));
|
||||
int mk_region PROTO((DSS_HUGE i, code_t *c, DBGenContext *ctx));
|
||||
int pr_region PROTO((code_t * c, int mode));
|
||||
int ld_region PROTO((code_t * c, int mode));
|
||||
|
||||
/* speed seed - advances seeds `skip_count` times */
|
||||
long sd_nation(int child, DSS_HUGE skip_count, DBGenContext *ctx);
|
||||
long sd_region(int child, DSS_HUGE skip_coun, DBGenContext *ctx);
|
||||
long sd_order(int child, DSS_HUGE skip_count, DBGenContext *ctx);
|
||||
long sd_line(int child, DSS_HUGE skip_count, DBGenContext *ctx);
|
||||
long sd_supp(int child, DSS_HUGE skip_count, DBGenContext *ctx);
|
||||
long sd_part(int child, DSS_HUGE skip_count, DBGenContext *ctx);
|
||||
long sd_psupp(int child, DSS_HUGE skip_count, DBGenContext *ctx);
|
||||
long sd_cust(int child, DSS_HUGE skip_count, DBGenContext *ctx);
|
||||
51
external/duckdb/extension/tpch/dbgen/include/dbgen/permute.h
vendored
Normal file
51
external/duckdb/extension/tpch/dbgen/include/dbgen/permute.h
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright owned by the Transaction Processing Performance Council.
|
||||
*
|
||||
* A copy of the license is included under extension/tpch/dbgen/LICENSE
|
||||
* in this repository.
|
||||
*
|
||||
* You may not use this file except in compliance with the License.
|
||||
*
|
||||
* THE TPC SOFTWARE IS AVAILABLE WITHOUT CHARGE FROM TPC.
|
||||
*/
|
||||
long permutation[41][22] = {{14, 2, 9, 20, 6, 17, 18, 8, 21, 13, 3, 22, 16, 4, 11, 15, 1, 10, 19, 5, 7, 12},
|
||||
{21, 3, 18, 5, 11, 7, 6, 20, 17, 12, 16, 15, 13, 10, 2, 8, 14, 19, 9, 22, 1, 4},
|
||||
{6, 17, 14, 16, 19, 10, 9, 2, 15, 8, 5, 22, 12, 7, 13, 18, 1, 4, 20, 3, 11, 21},
|
||||
{8, 5, 4, 6, 17, 7, 1, 18, 22, 14, 9, 10, 15, 11, 20, 2, 21, 19, 13, 16, 12, 3},
|
||||
{5, 21, 14, 19, 15, 17, 12, 6, 4, 9, 8, 16, 11, 2, 10, 18, 1, 13, 7, 22, 3, 20},
|
||||
{21, 15, 4, 6, 7, 16, 19, 18, 14, 22, 11, 13, 3, 1, 2, 5, 8, 20, 12, 17, 10, 9},
|
||||
{10, 3, 15, 13, 6, 8, 9, 7, 4, 11, 22, 18, 12, 1, 5, 16, 2, 14, 19, 20, 17, 21},
|
||||
{18, 8, 20, 21, 2, 4, 22, 17, 1, 11, 9, 19, 3, 13, 5, 7, 10, 16, 6, 14, 15, 12},
|
||||
{19, 1, 15, 17, 5, 8, 9, 12, 14, 7, 4, 3, 20, 16, 6, 22, 10, 13, 2, 21, 18, 11},
|
||||
{8, 13, 2, 20, 17, 3, 6, 21, 18, 11, 19, 10, 15, 4, 22, 1, 7, 12, 9, 14, 5, 16},
|
||||
{6, 15, 18, 17, 12, 1, 7, 2, 22, 13, 21, 10, 14, 9, 3, 16, 20, 19, 11, 4, 8, 5},
|
||||
{15, 14, 18, 17, 10, 20, 16, 11, 1, 8, 4, 22, 5, 12, 3, 9, 21, 2, 13, 6, 19, 7},
|
||||
{1, 7, 16, 17, 18, 22, 12, 6, 8, 9, 11, 4, 2, 5, 20, 21, 13, 10, 19, 3, 14, 15},
|
||||
{21, 17, 7, 3, 1, 10, 12, 22, 9, 16, 6, 11, 2, 4, 5, 14, 8, 20, 13, 18, 15, 19},
|
||||
{2, 9, 5, 4, 18, 1, 20, 15, 16, 17, 7, 21, 13, 14, 19, 8, 22, 11, 10, 3, 12, 6},
|
||||
{16, 9, 17, 8, 14, 11, 10, 12, 6, 21, 7, 3, 15, 5, 22, 20, 1, 13, 19, 2, 4, 18},
|
||||
{1, 3, 6, 5, 2, 16, 14, 22, 17, 20, 4, 9, 10, 11, 15, 8, 12, 19, 18, 13, 7, 21},
|
||||
{3, 16, 5, 11, 21, 9, 2, 15, 10, 18, 17, 7, 8, 19, 14, 13, 1, 4, 22, 20, 6, 12},
|
||||
{14, 4, 13, 5, 21, 11, 8, 6, 3, 17, 2, 20, 1, 19, 10, 9, 12, 18, 15, 7, 22, 16},
|
||||
{4, 12, 22, 14, 5, 15, 16, 2, 8, 10, 17, 9, 21, 7, 3, 6, 13, 18, 11, 20, 19, 1},
|
||||
{16, 15, 14, 13, 4, 22, 18, 19, 7, 1, 12, 17, 5, 10, 20, 3, 9, 21, 11, 2, 6, 8},
|
||||
{20, 14, 21, 12, 15, 17, 4, 19, 13, 10, 11, 1, 16, 5, 18, 7, 8, 22, 9, 6, 3, 2},
|
||||
{16, 14, 13, 2, 21, 10, 11, 4, 1, 22, 18, 12, 19, 5, 7, 8, 6, 3, 15, 20, 9, 17},
|
||||
{18, 15, 9, 14, 12, 2, 8, 11, 22, 21, 16, 1, 6, 17, 5, 10, 19, 4, 20, 13, 3, 7},
|
||||
{7, 3, 10, 14, 13, 21, 18, 6, 20, 4, 9, 8, 22, 15, 2, 1, 5, 12, 19, 17, 11, 16},
|
||||
{18, 1, 13, 7, 16, 10, 14, 2, 19, 5, 21, 11, 22, 15, 8, 17, 20, 3, 4, 12, 6, 9},
|
||||
{13, 2, 22, 5, 11, 21, 20, 14, 7, 10, 4, 9, 19, 18, 6, 3, 1, 8, 15, 12, 17, 16},
|
||||
{14, 17, 21, 8, 2, 9, 6, 4, 5, 13, 22, 7, 15, 3, 1, 18, 16, 11, 10, 12, 20, 19},
|
||||
{10, 22, 1, 12, 13, 18, 21, 20, 2, 14, 16, 7, 15, 3, 4, 17, 5, 19, 6, 8, 9, 11},
|
||||
{10, 8, 9, 18, 12, 6, 1, 5, 20, 11, 17, 22, 16, 3, 13, 2, 15, 21, 14, 19, 7, 4},
|
||||
{7, 17, 22, 5, 3, 10, 13, 18, 9, 1, 14, 15, 21, 19, 16, 12, 8, 6, 11, 20, 4, 2},
|
||||
{2, 9, 21, 3, 4, 7, 1, 11, 16, 5, 20, 19, 18, 8, 17, 13, 10, 12, 15, 6, 14, 22},
|
||||
{15, 12, 8, 4, 22, 13, 16, 17, 18, 3, 7, 5, 6, 1, 9, 11, 21, 10, 14, 20, 19, 2},
|
||||
{15, 16, 2, 11, 17, 7, 5, 14, 20, 4, 21, 3, 10, 9, 12, 8, 13, 6, 18, 19, 22, 1},
|
||||
{1, 13, 11, 3, 4, 21, 6, 14, 15, 22, 18, 9, 7, 5, 10, 20, 12, 16, 17, 8, 19, 2},
|
||||
{14, 17, 22, 20, 8, 16, 5, 10, 1, 13, 2, 21, 12, 9, 4, 18, 3, 7, 6, 19, 15, 11},
|
||||
{9, 17, 7, 4, 5, 13, 21, 18, 11, 3, 22, 1, 6, 16, 20, 14, 15, 10, 8, 2, 12, 19},
|
||||
{13, 14, 5, 22, 19, 11, 9, 6, 18, 15, 8, 10, 7, 4, 17, 16, 3, 1, 12, 2, 21, 20},
|
||||
{20, 5, 4, 14, 11, 1, 6, 16, 8, 22, 7, 3, 2, 12, 21, 19, 17, 13, 10, 15, 18, 9},
|
||||
{3, 7, 14, 15, 6, 5, 21, 20, 18, 10, 4, 16, 19, 1, 13, 9, 8, 17, 11, 12, 22, 2},
|
||||
{13, 15, 17, 1, 22, 11, 3, 4, 7, 20, 14, 21, 9, 8, 2, 18, 16, 6, 10, 12, 5, 19}};
|
||||
17
external/duckdb/extension/tpch/dbgen/include/dbgen/release.h
vendored
Normal file
17
external/duckdb/extension/tpch/dbgen/include/dbgen/release.h
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* Copyright owned by the Transaction Processing Performance Council.
|
||||
*
|
||||
* A copy of the license is included under extension/tpch/dbgen/LICENSE
|
||||
* in this repository.
|
||||
*
|
||||
* You may not use this file except in compliance with the License.
|
||||
*
|
||||
* THE TPC SOFTWARE IS AVAILABLE WITHOUT CHARGE FROM TPC.
|
||||
*/
|
||||
/*
|
||||
* release.h
|
||||
*/
|
||||
#define VERSION 2
|
||||
#define RELEASE 17
|
||||
#define PATCH 3
|
||||
#define BUILD 0
|
||||
30
external/duckdb/extension/tpch/dbgen/include/dbgen/rnd.h
vendored
Normal file
30
external/duckdb/extension/tpch/dbgen/include/dbgen/rnd.h
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Copyright owned by the Transaction Processing Performance Council.
|
||||
*
|
||||
* A copy of the license is included under extension/tpch/dbgen/LICENSE
|
||||
* in this repository.
|
||||
*
|
||||
* You may not use this file except in compliance with the License.
|
||||
*
|
||||
* THE TPC SOFTWARE IS AVAILABLE WITHOUT CHARGE FROM TPC.
|
||||
*/
|
||||
/*
|
||||
* rnd.h -- header file for use withthe portable random number generator
|
||||
* provided by Frank Stephens of Unisys
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/* function protypes */
|
||||
DSS_HUGE NextRand PROTO((DSS_HUGE));
|
||||
DSS_HUGE UnifInt PROTO((DSS_HUGE, DSS_HUGE, long));
|
||||
|
||||
/*
|
||||
* macros to control RNG and assure reproducible multi-stream
|
||||
* runs without the need for seed files. Keep track of invocations of RNG
|
||||
* and always round-up to a known per-row boundary.
|
||||
*/
|
||||
/*
|
||||
* preferred solution, but not initializing correctly
|
||||
*/
|
||||
#define VSTR_MAX(len) (long)(len / 5 + (len % 5 == 0) ? 0 : 1 + 1)
|
||||
18
external/duckdb/extension/tpch/dbgen/include/dbgen/rng64.h
vendored
Normal file
18
external/duckdb/extension/tpch/dbgen/include/dbgen/rng64.h
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
* Copyright owned by the Transaction Processing Performance Council.
|
||||
*
|
||||
* A copy of the license is included under extension/tpch/dbgen/LICENSE
|
||||
* in this repository.
|
||||
*
|
||||
* You may not use this file except in compliance with the License.
|
||||
*
|
||||
* THE TPC SOFTWARE IS AVAILABLE WITHOUT CHARGE FROM TPC.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "dbgen/config.h"
|
||||
#include "dbgen/dss.h"
|
||||
|
||||
DSS_HUGE AdvanceRand64(DSS_HUGE nSeed, DSS_HUGE nCount);
|
||||
void dss_random64(DSS_HUGE *tgt, DSS_HUGE nLow, DSS_HUGE nHigh, seed_t *seed);
|
||||
DSS_HUGE NextRand64(DSS_HUGE nSeed);
|
||||
58
external/duckdb/extension/tpch/dbgen/include/dbgen/shared.h
vendored
Normal file
58
external/duckdb/extension/tpch/dbgen/include/dbgen/shared.h
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Copyright owned by the Transaction Processing Performance Council.
|
||||
*
|
||||
* A copy of the license is included under extension/tpch/dbgen/LICENSE
|
||||
* in this repository.
|
||||
*
|
||||
* You may not use this file except in compliance with the License.
|
||||
*
|
||||
* THE TPC SOFTWARE IS AVAILABLE WITHOUT CHARGE FROM TPC.
|
||||
*/
|
||||
#define N_CMNT_LEN 72
|
||||
#define N_CMNT_MAX 152
|
||||
#define R_CMNT_LEN 72
|
||||
#define R_CMNT_MAX 152
|
||||
#define MONEY_SCL 0.01
|
||||
#define V_STR_HGH 1.6
|
||||
#define P_NAME_LEN 55
|
||||
#define P_MFG_LEN 25
|
||||
#define P_BRND_LEN 10
|
||||
#define P_TYPE_LEN 25
|
||||
#define P_CNTR_LEN 10
|
||||
#define P_CMNT_LEN 14
|
||||
#define P_CMNT_MAX 23
|
||||
#define S_NAME_LEN 25
|
||||
#define S_ADDR_LEN 25
|
||||
#define S_ADDR_MAX 40
|
||||
#define S_CMNT_LEN 63
|
||||
#define S_CMNT_MAX 101
|
||||
#define PS_CMNT_LEN 124
|
||||
#define PS_CMNT_MAX 199
|
||||
#define C_NAME_LEN 18
|
||||
#define C_ADDR_LEN 25
|
||||
#define C_ADDR_MAX 40
|
||||
#define C_MSEG_LEN 10
|
||||
#define C_CMNT_LEN 73
|
||||
#define C_CMNT_MAX 117
|
||||
#define O_OPRIO_LEN 15
|
||||
#define O_CLRK_LEN 15
|
||||
#define O_CMNT_LEN 49
|
||||
#define O_CMNT_MAX 79
|
||||
#define L_CMNT_LEN 27
|
||||
#define L_CMNT_MAX 44
|
||||
#define L_INST_LEN 25
|
||||
#define L_SMODE_LEN 10
|
||||
#define T_ALPHA_LEN 10
|
||||
#define DATE_LEN 13 /* long enough to hold either date format */
|
||||
#define NATION_LEN 25
|
||||
#define REGION_LEN 25
|
||||
#define PHONE_LEN 15
|
||||
#define MAXAGG_LEN 20 /* max component length for a agg str */
|
||||
#define P_CMNT_SD 6
|
||||
#define PS_CMNT_SD 9
|
||||
#define O_CMNT_SD 12
|
||||
#define C_ADDR_SD 26
|
||||
#define C_CMNT_SD 31
|
||||
#define S_ADDR_SD 32
|
||||
#define S_CMNT_SD 36
|
||||
#define L_CMNT_SD 25
|
||||
189
external/duckdb/extension/tpch/dbgen/include/tpch_constants.hpp
vendored
Normal file
189
external/duckdb/extension/tpch/dbgen/include/tpch_constants.hpp
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user