Skip to content

Commit 57c763a

Browse files
authored
Make COPY statement options compliant to Postgres (#247)
Add brackets around the options to make the `COPY` statement compliant to Postgres again and add the encoding as another option.
1 parent 9a67d24 commit 57c763a

14 files changed

Lines changed: 4728 additions & 4521 deletions

Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ relaxed_build ?= "off"
4242
ifeq ($(relaxed_build), on)
4343
$(warning $(NAME) will be built with most compiler warnings deactivated. This is fine if you want to test $(NAME) but will become an issue when you want to contribute code.)
4444
else
45-
LIB_CLFAGS += -Wall -Werror
45+
LIB_CFLAGS += -Wall -Werror
4646
endif
4747

4848
static ?= no
@@ -66,8 +66,11 @@ library: $(LIB_BUILD)
6666
$(LIB_BUILD): $(LIB_OBJ)
6767
$(LIBLINKER) $(LIB_LFLAGS) $(LIB_BUILD) $(LIB_OBJ)
6868

69+
# The auto-generated code from bison and flex contains some parts the compiler complains about with -Wall.
6970
$(SRCPARSER)/flex_lexer.o: $(SRCPARSER)/flex_lexer.cpp $(SRCPARSER)/bison_parser.cpp
7071
$(CXX) $(LIB_CFLAGS) -c -o $@ $< -Wno-sign-compare -Wno-unneeded-internal-declaration -Wno-register
72+
$(SRCPARSER)/bison_parser.o: $(SRCPARSER)/bison_parser.cpp
73+
$(CXX) $(LIB_CFLAGS) -c -o $@ $< -Wno-unused-but-set-variable
7174

7275
%.o: %.cpp $(PARSER_CPP) $(LIB_H)
7376
$(CXX) $(LIB_CFLAGS) -c -o $@ $<

src/parser/bison_parser.cpp

Lines changed: 2051 additions & 1959 deletions
Large diffs are not rendered by default.

src/parser/bison_parser.h

Lines changed: 159 additions & 156 deletions
Original file line numberDiff line numberDiff line change
@@ -108,161 +108,162 @@ extern int hsql_debug;
108108
SQL_DEFAULT = 276, /* DEFAULT */
109109
SQL_EXECUTE = 277, /* EXECUTE */
110110
SQL_EXPLAIN = 278, /* EXPLAIN */
111-
SQL_INTEGER = 279, /* INTEGER */
112-
SQL_NATURAL = 280, /* NATURAL */
113-
SQL_PREPARE = 281, /* PREPARE */
114-
SQL_PRIMARY = 282, /* PRIMARY */
115-
SQL_SCHEMAS = 283, /* SCHEMAS */
116-
SQL_CHARACTER_VARYING = 284, /* CHARACTER_VARYING */
117-
SQL_REAL = 285, /* REAL */
118-
SQL_DECIMAL = 286, /* DECIMAL */
119-
SQL_SMALLINT = 287, /* SMALLINT */
120-
SQL_BIGINT = 288, /* BIGINT */
121-
SQL_SPATIAL = 289, /* SPATIAL */
122-
SQL_VARCHAR = 290, /* VARCHAR */
123-
SQL_VIRTUAL = 291, /* VIRTUAL */
124-
SQL_DESCRIBE = 292, /* DESCRIBE */
125-
SQL_BEFORE = 293, /* BEFORE */
126-
SQL_COLUMN = 294, /* COLUMN */
127-
SQL_CREATE = 295, /* CREATE */
128-
SQL_DELETE = 296, /* DELETE */
129-
SQL_DIRECT = 297, /* DIRECT */
130-
SQL_DOUBLE = 298, /* DOUBLE */
131-
SQL_ESCAPE = 299, /* ESCAPE */
132-
SQL_EXCEPT = 300, /* EXCEPT */
133-
SQL_EXISTS = 301, /* EXISTS */
134-
SQL_EXTRACT = 302, /* EXTRACT */
135-
SQL_CAST = 303, /* CAST */
136-
SQL_FORMAT = 304, /* FORMAT */
137-
SQL_GLOBAL = 305, /* GLOBAL */
138-
SQL_HAVING = 306, /* HAVING */
139-
SQL_IMPORT = 307, /* IMPORT */
140-
SQL_INSERT = 308, /* INSERT */
141-
SQL_ISNULL = 309, /* ISNULL */
142-
SQL_OFFSET = 310, /* OFFSET */
143-
SQL_RENAME = 311, /* RENAME */
144-
SQL_SCHEMA = 312, /* SCHEMA */
145-
SQL_SELECT = 313, /* SELECT */
146-
SQL_SORTED = 314, /* SORTED */
147-
SQL_TABLES = 315, /* TABLES */
148-
SQL_UNIQUE = 316, /* UNIQUE */
149-
SQL_UNLOAD = 317, /* UNLOAD */
150-
SQL_UPDATE = 318, /* UPDATE */
151-
SQL_VALUES = 319, /* VALUES */
152-
SQL_AFTER = 320, /* AFTER */
153-
SQL_ALTER = 321, /* ALTER */
154-
SQL_CROSS = 322, /* CROSS */
155-
SQL_DELTA = 323, /* DELTA */
156-
SQL_FLOAT = 324, /* FLOAT */
157-
SQL_GROUP = 325, /* GROUP */
158-
SQL_INDEX = 326, /* INDEX */
159-
SQL_INNER = 327, /* INNER */
160-
SQL_LIMIT = 328, /* LIMIT */
161-
SQL_LOCAL = 329, /* LOCAL */
162-
SQL_MERGE = 330, /* MERGE */
163-
SQL_MINUS = 331, /* MINUS */
164-
SQL_ORDER = 332, /* ORDER */
165-
SQL_OVER = 333, /* OVER */
166-
SQL_OUTER = 334, /* OUTER */
167-
SQL_RIGHT = 335, /* RIGHT */
168-
SQL_TABLE = 336, /* TABLE */
169-
SQL_UNION = 337, /* UNION */
170-
SQL_USING = 338, /* USING */
171-
SQL_WHERE = 339, /* WHERE */
172-
SQL_CALL = 340, /* CALL */
173-
SQL_CASE = 341, /* CASE */
174-
SQL_CHAR = 342, /* CHAR */
175-
SQL_COPY = 343, /* COPY */
176-
SQL_DATE = 344, /* DATE */
177-
SQL_DATETIME = 345, /* DATETIME */
178-
SQL_DESC = 346, /* DESC */
179-
SQL_DROP = 347, /* DROP */
180-
SQL_ELSE = 348, /* ELSE */
181-
SQL_FILE = 349, /* FILE */
182-
SQL_FROM = 350, /* FROM */
183-
SQL_FULL = 351, /* FULL */
184-
SQL_HASH = 352, /* HASH */
185-
SQL_HINT = 353, /* HINT */
186-
SQL_INTO = 354, /* INTO */
187-
SQL_JOIN = 355, /* JOIN */
188-
SQL_LEFT = 356, /* LEFT */
189-
SQL_LIKE = 357, /* LIKE */
190-
SQL_LOAD = 358, /* LOAD */
191-
SQL_LONG = 359, /* LONG */
192-
SQL_NULL = 360, /* NULL */
193-
SQL_PARTITION = 361, /* PARTITION */
194-
SQL_PLAN = 362, /* PLAN */
195-
SQL_SHOW = 363, /* SHOW */
196-
SQL_TEXT = 364, /* TEXT */
197-
SQL_THEN = 365, /* THEN */
198-
SQL_TIME = 366, /* TIME */
199-
SQL_VIEW = 367, /* VIEW */
200-
SQL_WHEN = 368, /* WHEN */
201-
SQL_WITH = 369, /* WITH */
202-
SQL_ADD = 370, /* ADD */
203-
SQL_ALL = 371, /* ALL */
204-
SQL_AND = 372, /* AND */
205-
SQL_ASC = 373, /* ASC */
206-
SQL_END = 374, /* END */
207-
SQL_FOR = 375, /* FOR */
208-
SQL_INT = 376, /* INT */
209-
SQL_KEY = 377, /* KEY */
210-
SQL_NOT = 378, /* NOT */
211-
SQL_OFF = 379, /* OFF */
212-
SQL_SET = 380, /* SET */
213-
SQL_TOP = 381, /* TOP */
214-
SQL_AS = 382, /* AS */
215-
SQL_BY = 383, /* BY */
216-
SQL_IF = 384, /* IF */
217-
SQL_IN = 385, /* IN */
218-
SQL_IS = 386, /* IS */
219-
SQL_OF = 387, /* OF */
220-
SQL_ON = 388, /* ON */
221-
SQL_OR = 389, /* OR */
222-
SQL_TO = 390, /* TO */
223-
SQL_NO = 391, /* NO */
224-
SQL_ARRAY = 392, /* ARRAY */
225-
SQL_CONCAT = 393, /* CONCAT */
226-
SQL_ILIKE = 394, /* ILIKE */
227-
SQL_SECOND = 395, /* SECOND */
228-
SQL_MINUTE = 396, /* MINUTE */
229-
SQL_HOUR = 397, /* HOUR */
230-
SQL_DAY = 398, /* DAY */
231-
SQL_MONTH = 399, /* MONTH */
232-
SQL_YEAR = 400, /* YEAR */
233-
SQL_SECONDS = 401, /* SECONDS */
234-
SQL_MINUTES = 402, /* MINUTES */
235-
SQL_HOURS = 403, /* HOURS */
236-
SQL_DAYS = 404, /* DAYS */
237-
SQL_MONTHS = 405, /* MONTHS */
238-
SQL_YEARS = 406, /* YEARS */
239-
SQL_INTERVAL = 407, /* INTERVAL */
240-
SQL_TRUE = 408, /* TRUE */
241-
SQL_FALSE = 409, /* FALSE */
242-
SQL_BOOLEAN = 410, /* BOOLEAN */
243-
SQL_TRANSACTION = 411, /* TRANSACTION */
244-
SQL_BEGIN = 412, /* BEGIN */
245-
SQL_COMMIT = 413, /* COMMIT */
246-
SQL_ROLLBACK = 414, /* ROLLBACK */
247-
SQL_NOWAIT = 415, /* NOWAIT */
248-
SQL_SKIP = 416, /* SKIP */
249-
SQL_LOCKED = 417, /* LOCKED */
250-
SQL_SHARE = 418, /* SHARE */
251-
SQL_RANGE = 419, /* RANGE */
252-
SQL_ROWS = 420, /* ROWS */
253-
SQL_GROUPS = 421, /* GROUPS */
254-
SQL_UNBOUNDED = 422, /* UNBOUNDED */
255-
SQL_FOLLOWING = 423, /* FOLLOWING */
256-
SQL_PRECEDING = 424, /* PRECEDING */
257-
SQL_CURRENT_ROW = 425, /* CURRENT_ROW */
258-
SQL_EQUALS = 426, /* EQUALS */
259-
SQL_NOTEQUALS = 427, /* NOTEQUALS */
260-
SQL_LESS = 428, /* LESS */
261-
SQL_GREATER = 429, /* GREATER */
262-
SQL_LESSEQ = 430, /* LESSEQ */
263-
SQL_GREATEREQ = 431, /* GREATEREQ */
264-
SQL_NOTNULL = 432, /* NOTNULL */
265-
SQL_UMINUS = 433 /* UMINUS */
111+
SQL_ENCODING = 279, /* ENCODING */
112+
SQL_INTEGER = 280, /* INTEGER */
113+
SQL_NATURAL = 281, /* NATURAL */
114+
SQL_PREPARE = 282, /* PREPARE */
115+
SQL_PRIMARY = 283, /* PRIMARY */
116+
SQL_SCHEMAS = 284, /* SCHEMAS */
117+
SQL_CHARACTER_VARYING = 285, /* CHARACTER_VARYING */
118+
SQL_REAL = 286, /* REAL */
119+
SQL_DECIMAL = 287, /* DECIMAL */
120+
SQL_SMALLINT = 288, /* SMALLINT */
121+
SQL_BIGINT = 289, /* BIGINT */
122+
SQL_SPATIAL = 290, /* SPATIAL */
123+
SQL_VARCHAR = 291, /* VARCHAR */
124+
SQL_VIRTUAL = 292, /* VIRTUAL */
125+
SQL_DESCRIBE = 293, /* DESCRIBE */
126+
SQL_BEFORE = 294, /* BEFORE */
127+
SQL_COLUMN = 295, /* COLUMN */
128+
SQL_CREATE = 296, /* CREATE */
129+
SQL_DELETE = 297, /* DELETE */
130+
SQL_DIRECT = 298, /* DIRECT */
131+
SQL_DOUBLE = 299, /* DOUBLE */
132+
SQL_ESCAPE = 300, /* ESCAPE */
133+
SQL_EXCEPT = 301, /* EXCEPT */
134+
SQL_EXISTS = 302, /* EXISTS */
135+
SQL_EXTRACT = 303, /* EXTRACT */
136+
SQL_CAST = 304, /* CAST */
137+
SQL_FORMAT = 305, /* FORMAT */
138+
SQL_GLOBAL = 306, /* GLOBAL */
139+
SQL_HAVING = 307, /* HAVING */
140+
SQL_IMPORT = 308, /* IMPORT */
141+
SQL_INSERT = 309, /* INSERT */
142+
SQL_ISNULL = 310, /* ISNULL */
143+
SQL_OFFSET = 311, /* OFFSET */
144+
SQL_RENAME = 312, /* RENAME */
145+
SQL_SCHEMA = 313, /* SCHEMA */
146+
SQL_SELECT = 314, /* SELECT */
147+
SQL_SORTED = 315, /* SORTED */
148+
SQL_TABLES = 316, /* TABLES */
149+
SQL_UNIQUE = 317, /* UNIQUE */
150+
SQL_UNLOAD = 318, /* UNLOAD */
151+
SQL_UPDATE = 319, /* UPDATE */
152+
SQL_VALUES = 320, /* VALUES */
153+
SQL_AFTER = 321, /* AFTER */
154+
SQL_ALTER = 322, /* ALTER */
155+
SQL_CROSS = 323, /* CROSS */
156+
SQL_DELTA = 324, /* DELTA */
157+
SQL_FLOAT = 325, /* FLOAT */
158+
SQL_GROUP = 326, /* GROUP */
159+
SQL_INDEX = 327, /* INDEX */
160+
SQL_INNER = 328, /* INNER */
161+
SQL_LIMIT = 329, /* LIMIT */
162+
SQL_LOCAL = 330, /* LOCAL */
163+
SQL_MERGE = 331, /* MERGE */
164+
SQL_MINUS = 332, /* MINUS */
165+
SQL_ORDER = 333, /* ORDER */
166+
SQL_OVER = 334, /* OVER */
167+
SQL_OUTER = 335, /* OUTER */
168+
SQL_RIGHT = 336, /* RIGHT */
169+
SQL_TABLE = 337, /* TABLE */
170+
SQL_UNION = 338, /* UNION */
171+
SQL_USING = 339, /* USING */
172+
SQL_WHERE = 340, /* WHERE */
173+
SQL_CALL = 341, /* CALL */
174+
SQL_CASE = 342, /* CASE */
175+
SQL_CHAR = 343, /* CHAR */
176+
SQL_COPY = 344, /* COPY */
177+
SQL_DATE = 345, /* DATE */
178+
SQL_DATETIME = 346, /* DATETIME */
179+
SQL_DESC = 347, /* DESC */
180+
SQL_DROP = 348, /* DROP */
181+
SQL_ELSE = 349, /* ELSE */
182+
SQL_FILE = 350, /* FILE */
183+
SQL_FROM = 351, /* FROM */
184+
SQL_FULL = 352, /* FULL */
185+
SQL_HASH = 353, /* HASH */
186+
SQL_HINT = 354, /* HINT */
187+
SQL_INTO = 355, /* INTO */
188+
SQL_JOIN = 356, /* JOIN */
189+
SQL_LEFT = 357, /* LEFT */
190+
SQL_LIKE = 358, /* LIKE */
191+
SQL_LOAD = 359, /* LOAD */
192+
SQL_LONG = 360, /* LONG */
193+
SQL_NULL = 361, /* NULL */
194+
SQL_PARTITION = 362, /* PARTITION */
195+
SQL_PLAN = 363, /* PLAN */
196+
SQL_SHOW = 364, /* SHOW */
197+
SQL_TEXT = 365, /* TEXT */
198+
SQL_THEN = 366, /* THEN */
199+
SQL_TIME = 367, /* TIME */
200+
SQL_VIEW = 368, /* VIEW */
201+
SQL_WHEN = 369, /* WHEN */
202+
SQL_WITH = 370, /* WITH */
203+
SQL_ADD = 371, /* ADD */
204+
SQL_ALL = 372, /* ALL */
205+
SQL_AND = 373, /* AND */
206+
SQL_ASC = 374, /* ASC */
207+
SQL_END = 375, /* END */
208+
SQL_FOR = 376, /* FOR */
209+
SQL_INT = 377, /* INT */
210+
SQL_KEY = 378, /* KEY */
211+
SQL_NOT = 379, /* NOT */
212+
SQL_OFF = 380, /* OFF */
213+
SQL_SET = 381, /* SET */
214+
SQL_TOP = 382, /* TOP */
215+
SQL_AS = 383, /* AS */
216+
SQL_BY = 384, /* BY */
217+
SQL_IF = 385, /* IF */
218+
SQL_IN = 386, /* IN */
219+
SQL_IS = 387, /* IS */
220+
SQL_OF = 388, /* OF */
221+
SQL_ON = 389, /* ON */
222+
SQL_OR = 390, /* OR */
223+
SQL_TO = 391, /* TO */
224+
SQL_NO = 392, /* NO */
225+
SQL_ARRAY = 393, /* ARRAY */
226+
SQL_CONCAT = 394, /* CONCAT */
227+
SQL_ILIKE = 395, /* ILIKE */
228+
SQL_SECOND = 396, /* SECOND */
229+
SQL_MINUTE = 397, /* MINUTE */
230+
SQL_HOUR = 398, /* HOUR */
231+
SQL_DAY = 399, /* DAY */
232+
SQL_MONTH = 400, /* MONTH */
233+
SQL_YEAR = 401, /* YEAR */
234+
SQL_SECONDS = 402, /* SECONDS */
235+
SQL_MINUTES = 403, /* MINUTES */
236+
SQL_HOURS = 404, /* HOURS */
237+
SQL_DAYS = 405, /* DAYS */
238+
SQL_MONTHS = 406, /* MONTHS */
239+
SQL_YEARS = 407, /* YEARS */
240+
SQL_INTERVAL = 408, /* INTERVAL */
241+
SQL_TRUE = 409, /* TRUE */
242+
SQL_FALSE = 410, /* FALSE */
243+
SQL_BOOLEAN = 411, /* BOOLEAN */
244+
SQL_TRANSACTION = 412, /* TRANSACTION */
245+
SQL_BEGIN = 413, /* BEGIN */
246+
SQL_COMMIT = 414, /* COMMIT */
247+
SQL_ROLLBACK = 415, /* ROLLBACK */
248+
SQL_NOWAIT = 416, /* NOWAIT */
249+
SQL_SKIP = 417, /* SKIP */
250+
SQL_LOCKED = 418, /* LOCKED */
251+
SQL_SHARE = 419, /* SHARE */
252+
SQL_RANGE = 420, /* RANGE */
253+
SQL_ROWS = 421, /* ROWS */
254+
SQL_GROUPS = 422, /* GROUPS */
255+
SQL_UNBOUNDED = 423, /* UNBOUNDED */
256+
SQL_FOLLOWING = 424, /* FOLLOWING */
257+
SQL_PRECEDING = 425, /* PRECEDING */
258+
SQL_CURRENT_ROW = 426, /* CURRENT_ROW */
259+
SQL_EQUALS = 427, /* EQUALS */
260+
SQL_NOTEQUALS = 428, /* NOTEQUALS */
261+
SQL_LESS = 429, /* LESS */
262+
SQL_GREATER = 430, /* GREATER */
263+
SQL_LESSEQ = 431, /* LESSEQ */
264+
SQL_GREATEREQ = 432, /* GREATEREQ */
265+
SQL_NOTNULL = 433, /* NOTNULL */
266+
SQL_UMINUS = 434 /* UMINUS */
266267
};
267268
typedef enum hsql_tokentype hsql_token_kind_t;
268269
#endif
@@ -339,9 +340,11 @@ union HSQL_STYPE
339340
hsql::RowLockMode lock_mode_t;
340341
hsql::RowLockWaitPolicy lock_wait_policy_t;
341342

343+
hsql::ImportExportOptions* import_export_option_t;
344+
342345
// clang-format off
343346

344-
#line 345 "bison_parser.h"
347+
#line 348 "bison_parser.h"
345348

346349
};
347350
typedef union HSQL_STYPE HSQL_STYPE;

0 commit comments

Comments
 (0)