File: cast.cpp

package info (click to toggle)
duckdb 1.5.1-3
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 299,196 kB
  • sloc: cpp: 865,414; ansic: 57,292; python: 18,871; sql: 12,663; lisp: 11,751; yacc: 7,412; lex: 1,682; sh: 747; makefile: 564
file content (92 lines) | stat: -rw-r--r-- 2,745 bytes parent folder | download | duplicates (4)
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
#include "benchmark_runner.hpp"
#include "duckdb_benchmark_macro.hpp"
#include "duckdb/main/appender.hpp"

#include <random>

using namespace duckdb;

#define CAST_COUNT 10000000

DUCKDB_BENCHMARK(CastDateToString, "[cast]")
void Load(DuckDBBenchmarkState *state) override {
	std::uniform_int_distribution<> year_dist(1990, 2010), day_dist(1, 28), month_dist(1, 12);
	std::mt19937 gen;
	gen.seed(42);

	state->conn.Query("CREATE TABLE dates(d DATE);");
	Appender appender(state->conn, "dates");
	// insert the elements into the database
	for (int i = 0; i < CAST_COUNT; i++) {
		appender.AppendRow(Value::DATE(year_dist(gen), month_dist(gen), day_dist(gen)));
	}
}
string GetQuery() override {
	return "SELECT CAST(d AS VARCHAR) FROM dates";
}
string VerifyResult(QueryResult *result) override {
	if (result->HasError()) {
		return result->GetError();
	}
	return string();
}
string BenchmarkInfo() override {
	return "Cast date to string";
}
FINISH_BENCHMARK(CastDateToString)

DUCKDB_BENCHMARK(CastTimeToString, "[cast]")
void Load(DuckDBBenchmarkState *state) override {
	std::uniform_int_distribution<> hour_dist(0, 23), min_dist(0, 59);
	std::mt19937 gen;
	gen.seed(42);

	state->conn.Query("CREATE TABLE times(d TIME);");
	Appender appender(state->conn, "times");
	// insert the elements into the database
	for (int i = 0; i < CAST_COUNT; i++) {
		appender.AppendRow(Value::TIME(hour_dist(gen), min_dist(gen), min_dist(gen), 0));
	}
}
string GetQuery() override {
	return "SELECT CAST(d AS VARCHAR) FROM times";
}
string VerifyResult(QueryResult *result) override {
	if (result->HasError()) {
		return result->GetError();
	}
	return string();
}
string BenchmarkInfo() override {
	return "Cast time to string";
}
FINISH_BENCHMARK(CastTimeToString)

DUCKDB_BENCHMARK(CastTimestampToString, "[cast]")
void Load(DuckDBBenchmarkState *state) override {
	std::uniform_int_distribution<> year_dist(1990, 2010), day_dist(1, 28), month_dist(1, 12);
	std::uniform_int_distribution<> hour_dist(0, 23), min_dist(0, 59);
	std::mt19937 gen;
	gen.seed(42);

	state->conn.Query("CREATE TABLE timestamps(d TIMESTAMP);");
	Appender appender(state->conn, "timestamps");
	// insert the elements into the database
	for (int i = 0; i < CAST_COUNT; i++) {
		appender.AppendRow(Value::TIMESTAMP(year_dist(gen), month_dist(gen), day_dist(gen), hour_dist(gen),
		                                    min_dist(gen), min_dist(gen), 0));
	}
}
string GetQuery() override {
	return "SELECT CAST(d AS VARCHAR) FROM timestamps";
}
string VerifyResult(QueryResult *result) override {
	if (result->HasError()) {
		return result->GetError();
	}
	return string();
}
string BenchmarkInfo() override {
	return "Cast timestamp to string";
}
FINISH_BENCHMARK(CastTimestampToString)