1#include <iostream>
2#include <iomanip>
3
4#include <Parsers/ParserCreateQuery.h>
5#include <Parsers/formatAST.h>
6#include <Parsers/parseQuery.h>
7
8#include <Databases/DatabaseOrdinary.h>
9
10#include <Interpreters/Context.h>
11#include <Interpreters/InterpreterCreateQuery.h>
12
13
14using namespace DB;
15
16int main(int, char **)
17try
18{
19 std::string input = "CREATE TABLE IF NOT EXISTS hits (\n"
20 "WatchID UInt64,\n"
21 "JavaEnable UInt8,\n"
22 "Title String,\n"
23 "EventTime DateTime,\n"
24 "CounterID UInt32,\n"
25 "ClientIP UInt32,\n"
26 "RegionID UInt32,\n"
27 "UniqID UInt64,\n"
28 "CounterClass UInt8,\n"
29 "OS UInt8,\n"
30 "UserAgent UInt8,\n"
31 "URL String,\n"
32 "Referer String,\n"
33 "ResolutionWidth UInt16,\n"
34 "ResolutionHeight UInt16,\n"
35 "ResolutionDepth UInt8,\n"
36 "FlashMajor UInt8,\n"
37 "FlashMinor UInt8,\n"
38 "FlashMinor2 String,\n"
39 "NetMajor UInt8,\n"
40 "NetMinor UInt8,\n"
41 "UserAgentMajor UInt16,\n"
42 "UserAgentMinor FixedString(2),\n"
43 "CookieEnable UInt8,\n"
44 "JavascriptEnable UInt8,\n"
45 "IsMobile UInt8,\n"
46 "MobilePhone UInt8,\n"
47 "MobilePhoneModel String,\n"
48 "Params String,\n"
49 "IPNetworkID UInt32,\n"
50 "TraficSourceID Int8,\n"
51 "SearchEngineID UInt16,\n"
52 "SearchPhrase String,\n"
53 "AdvEngineID UInt8,\n"
54 "IsArtifical UInt8,\n"
55 "WindowClientWidth UInt16,\n"
56 "WindowClientHeight UInt16,\n"
57 "ClientTimeZone Int16,\n"
58 "ClientEventTime DateTime,\n"
59 "SilverlightVersion1 UInt8,\n"
60 "SilverlightVersion2 UInt8,\n"
61 "SilverlightVersion3 UInt32,\n"
62 "SilverlightVersion4 UInt16,\n"
63 "PageCharset String,\n"
64 "CodeVersion UInt32,\n"
65 "IsLink UInt8,\n"
66 "IsDownload UInt8,\n"
67 "IsNotBounce UInt8,\n"
68 "FUniqID UInt64,\n"
69 "OriginalURL String,\n"
70 "HID UInt32,\n"
71 "IsOldCounter UInt8,\n"
72 "IsEvent UInt8,\n"
73 "IsParameter UInt8,\n"
74 "DontCountHits UInt8,\n"
75 "WithHash UInt8\n"
76 ") ENGINE = Log";
77
78 ParserCreateQuery parser;
79 ASTPtr ast = parseQuery(parser, input.data(), input.data() + input.size(), "", 0);
80
81 Context context = Context::createGlobal();
82 context.makeGlobalContext();
83
84 context.setPath("./");
85 auto database = std::make_shared<DatabaseOrdinary>("test", "./metadata/test/", context);
86 context.addDatabase("test", database);
87 database->loadStoredObjects(context, false);
88 context.setCurrentDatabase("test");
89
90 InterpreterCreateQuery interpreter(ast, context);
91 interpreter.execute();
92
93 return 0;
94}
95catch (const Exception & e)
96{
97 std::cerr << e.what() << ", " << e.displayText() << std::endl
98 << std::endl
99 << "Stack trace:" << std::endl
100 << e.getStackTrace().toString();
101 return 1;
102}
103