|
34 | 34 |
|
35 | 35 | ## SQL Support
|
36 | 36 |
|
37 |
| -- [x] Projection |
38 |
| -- [x] Filter (WHERE) |
39 |
| -- [x] Filter post-aggregate (HAVING) |
40 |
| -- [x] Limit |
41 |
| -- [x] Aggregate |
42 |
| -- [x] Common math functions |
43 |
| -- [x] cast |
44 |
| -- [x] try_cast |
| 37 | +- [x] Projection (`SELECT`) |
| 38 | +- [x] Filter (`WHERE`) |
| 39 | +- [x] Filter post-aggregate (`HAVING`) |
| 40 | +- [x] Sorting (`ORDER BY`) |
| 41 | +- [x] Limit (`LIMIT` |
| 42 | +- [x] Aggregate (`GROUP BY`) |
| 43 | +- [x] cast /try_cast |
45 | 44 | - [x] [`VALUES` lists](https://www.postgresql.org/docs/current/queries-values.html)
|
46 |
| -- Postgres compatible String functions |
47 |
| - - [x] ascii |
48 |
| - - [x] bit_length |
49 |
| - - [x] btrim |
50 |
| - - [x] char_length |
51 |
| - - [x] character_length |
52 |
| - - [x] chr |
53 |
| - - [x] concat |
54 |
| - - [x] concat_ws |
55 |
| - - [x] initcap |
56 |
| - - [x] left |
57 |
| - - [x] length |
58 |
| - - [x] lpad |
59 |
| - - [x] ltrim |
60 |
| - - [x] octet_length |
61 |
| - - [x] regexp_replace |
62 |
| - - [x] repeat |
63 |
| - - [x] replace |
64 |
| - - [x] reverse |
65 |
| - - [x] right |
66 |
| - - [x] rpad |
67 |
| - - [x] rtrim |
68 |
| - - [x] split_part |
69 |
| - - [x] starts_with |
70 |
| - - [x] strpos |
71 |
| - - [x] substr |
72 |
| - - [x] to_hex |
73 |
| - - [x] translate |
74 |
| - - [x] trim |
75 |
| -- Conditional functions |
76 |
| - - [x] nullif |
77 |
| - - [x] case |
78 |
| - - [x] coalesce |
79 |
| -- Approximation functions |
80 |
| - - [x] approx_distinct |
81 |
| - - [x] approx_median |
82 |
| - - [x] approx_percentile_cont |
83 |
| - - [x] approx_percentile_cont_with_weight |
84 |
| -- Common date/time functions |
85 |
| - - [ ] Basic date functions |
86 |
| - - [ ] Basic time functions |
87 |
| - - [x] Basic timestamp functions |
88 |
| - - [x] [to_timestamp](./scalar_functions.md#to_timestamp) |
89 |
| - - [x] [to_timestamp_millis](./scalar_functions.md#to_timestamp_millis) |
90 |
| - - [x] [to_timestamp_micros](./scalar_functions.md#to_timestamp_micros) |
91 |
| - - [x] [to_timestamp_seconds](./scalar_functions.md#to_timestamp_seconds) |
92 |
| - - [x] [extract](./scalar_functions.md#extract) |
93 |
| - - [x] [date_part](./scalar_functions.md#date_part) |
94 |
| -- nested functions |
95 |
| - - [x] Array of columns |
| 45 | +- [x] [String Functions](./scalar_functions.md#string-functions) |
| 46 | +- [x] [Conditional Functions](./scalar_functions.md#conditional-functions) |
| 47 | +- [x] [Time and Date Functions](./scalar_functions.md#time-and-date-functions) |
| 48 | +- [x] [Math Functions](./scalar_functions.md#math-functions) |
| 49 | +- [x] [Aggregate Functions](./aggregate_functions.md) (`SUM`, `MEDIAN`, and many more) |
96 | 50 | - [x] Schema Queries
|
97 |
| - - [x] SHOW TABLES |
98 |
| - - [x] SHOW COLUMNS FROM <table/view> |
99 |
| - - [x] SHOW CREATE TABLE <view> |
100 |
| - - [x] information_schema.{tables, columns, views} |
101 |
| - - [ ] information_schema other views |
102 |
| -- [x] Sorting |
103 |
| -- [ ] Nested types |
104 |
| -- [ ] Lists |
| 51 | + - [x] `SHOW TABLES` |
| 52 | + - [x] `SHOW COLUMNS FROM <table/view>` |
| 53 | + - [x] `SHOW CREATE TABLE <view>` |
| 54 | + - [x] Basic SQL [Information Schema](./information_schema.md) (`TABLES`, `VIEWS`, `COLUMNS`) |
| 55 | + - [ ] Full SQL [Information Schema](./information_schema.md) support |
| 56 | +- [x] Support for nested types (`ARRAY`/`LIST` and `STRUCT`)- see [Array Functions](./scalar_functions.md#array-functions) |
| 57 | +- [x] Nested types (`ARRAY`/`LIST` and `STRUCT`)- see [Array Functions](./scalar_functions.md#array-functions) |
105 | 58 | - [x] Subqueries
|
106 |
| -- [x] Common table expressions |
107 |
| -- [x] Set Operations |
108 |
| - - [x] UNION ALL |
109 |
| - - [x] UNION |
110 |
| - - [x] INTERSECT |
111 |
| - - [x] INTERSECT ALL |
112 |
| - - [x] EXCEPT |
113 |
| - - [x] EXCEPT ALL |
114 |
| -- [x] Joins |
115 |
| - - [x] INNER JOIN |
116 |
| - - [x] LEFT JOIN |
117 |
| - - [x] RIGHT JOIN |
118 |
| - - [x] FULL JOIN |
119 |
| - - [x] CROSS JOIN |
120 |
| -- [ ] Window |
121 |
| - - [x] Empty window |
122 |
| - - [x] Common window functions |
123 |
| - - [x] Window with PARTITION BY clause |
124 |
| - - [x] Window with ORDER BY clause |
125 |
| - - [ ] Window with FILTER clause |
126 |
| - - [ ] [Window with custom WINDOW FRAME](https://github.com/apache/arrow-datafusion/issues/361) |
127 |
| - - [ ] UDF and UDAF for window functions |
| 59 | +- [x] Common Table Expressions (CTE) |
| 60 | +- [x] Set Operations (`UNION [ALL]`, `INTERSECT [ALL]`, `EXCEPT[ALL]`) |
| 61 | +- [x] Joins (`INNER`, `LEFT`, `RIGHT`, `FULL`, `CROSS`) |
| 62 | +- [x] Window Functions |
| 63 | + - [x] Empty (`OVER()`) |
| 64 | + - [x] Partitioning and ordering: (`OVER(PARTITION BY <..> ORDER BY <..>)`) |
| 65 | + - [x] Custom Window (`ORDER BY time ROWS BETWEEN 2 PRECEDING AND 0 FOLLOWING)`) |
| 66 | + - [x] User Defined Window and Aggregate Functions |
| 67 | + |
| 68 | +## Runtime |
| 69 | + |
| 70 | +- [x] Streaming Grouping |
| 71 | +- [x] Streaming Window Evaluation |
| 72 | +- [x] Memory limits enforced |
| 73 | +- [x] Spilling (to disk) Sort |
| 74 | +- [ ] Spilling (to disk) Grouping |
| 75 | +- [ ] Spilling (to disk) Joins |
128 | 76 |
|
129 | 77 | ## Data Sources
|
130 | 78 |
|
131 | 79 | In addition to allowing arbitrary datasources via the `TableProvider`
|
132 | 80 | trait, DataFusion includes built in support for the following formats:
|
133 | 81 |
|
134 | 82 | - [x] CSV
|
135 |
| -- [x] Parquet primitive types |
136 |
| -- [x] Parquet nested types |
| 83 | +- [x] Parquet (for all primitive and nested types) |
137 | 84 | - [x] JSON
|
138 | 85 | - [x] Avro
|
139 | 86 | - [x] Arrow
|
0 commit comments