1 | #include <Columns/Collator.h> |
2 | #include <Parsers/ASTOrderByElement.h> |
3 | |
4 | |
5 | namespace DB |
6 | { |
7 | |
8 | void ASTOrderByElement::formatImpl(const FormatSettings & settings, FormatState & state, FormatStateStacked frame) const |
9 | { |
10 | children.front()->formatImpl(settings, state, frame); |
11 | settings.ostr << (settings.hilite ? hilite_keyword : "" ) |
12 | << (direction == -1 ? " DESC" : " ASC" ) |
13 | << (settings.hilite ? hilite_none : "" ); |
14 | |
15 | if (nulls_direction_was_explicitly_specified) |
16 | { |
17 | settings.ostr << (settings.hilite ? hilite_keyword : "" ) |
18 | << " NULLS " |
19 | << (nulls_direction == direction ? "LAST" : "FIRST" ) |
20 | << (settings.hilite ? hilite_none : "" ); |
21 | } |
22 | |
23 | if (collation) |
24 | { |
25 | settings.ostr << (settings.hilite ? hilite_keyword : "" ) << " COLLATE " << (settings.hilite ? hilite_none : "" ); |
26 | collation->formatImpl(settings, state, frame); |
27 | } |
28 | |
29 | if (with_fill) |
30 | { |
31 | settings.ostr << (settings.hilite ? hilite_keyword : "" ) << " WITH FILL" << (settings.hilite ? hilite_none : "" ); |
32 | if (fill_from) |
33 | { |
34 | settings.ostr << (settings.hilite ? hilite_keyword : "" ) << " FROM " << (settings.hilite ? hilite_none : "" ); |
35 | fill_from->formatImpl(settings, state, frame); |
36 | } |
37 | if (fill_to) |
38 | { |
39 | settings.ostr << (settings.hilite ? hilite_keyword : "" ) << " TO " << (settings.hilite ? hilite_none : "" ); |
40 | fill_to->formatImpl(settings, state, frame); |
41 | } |
42 | if (fill_step) |
43 | { |
44 | settings.ostr << (settings.hilite ? hilite_keyword : "" ) << " STEP " << (settings.hilite ? hilite_none : "" ); |
45 | fill_step->formatImpl(settings, state, frame); |
46 | } |
47 | } |
48 | } |
49 | |
50 | } |
51 | |