https://docs.google.com/presentation/d/14jt84NOFgBZlR41AIjbc6N2LNWzkgYNjIRbhk2sGWdc/edit#slide=id.g1421bd87c53_2_22
<aside> <img src="/icons/checkmark_lightgray.svg" alt="/icons/checkmark_lightgray.svg" width="40px" /> ๊ธฐ๊ฐ
Challenges
2022. 07. 09. - 2022. 07. 30.
Masters
2022. 8. 11. - 2022. 10. 14.
</aside>
โถ๏ธ ํ๋ก์ ํธ ํ๋ ๋ด์ฉ
[AST Builder] Add Agggregate functions
๊ธฐ๋ฅ์ถ๊ฐ
#635
๊ธฐ์กด sum, max๋ง ๊ตฌํ๋์ด ์์๋ ast_builder/aggregate.rs์์ min, avg, variance๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ExprNode๊ฐ ์์ ๋กญ๊ฒ ํ์ฅ๋ ์ ์๋ ํํ์๊ธฐ์ ๊ฐํธํ ์ถ๊ฐํ ์ ์์์ต๋๋ค. ํ์ง๋ง count์ ๊ฒฝ์ฐ ExprNode๊ฐ ๊ฐ์ง๊ณ ์์ง ์์ wildcard๋ก ๋ณํ์ ํด์ผํ๋ CountArgExpr enumํํ์ฌ์ ๋ค๋ฅด๊ธฐ์ ์ด ๋ถ๋ถ๋ง ๋๋ ๋ฐ๋ก PR์ ํ๊ฒ ๋์์ต๋๋ค.
[AST Builder] Implement Agggregate function COUNT
๊ธฐ๋ฅ๊ฐ์
#656
count๋ฅผ ์ ์ธํ ๋๋จธ์ง ํจ์๋ค์ AggregateNode -> ExprNode -> Expr๋ฅผ fromํจ์๋ก ์์ ๋กญ๊ฒ ํ๋ณํ์ด ๊ฐ๋ฅํ์ต๋๋ค. ํ์ง๋ง count์ ๊ฒฝ์ฐ Count(CountArgExpr)ํํ์๊ธฐ์ย AggregateNode -> CountArgExpr -> Expr๋๋ Wildcard๋ก ๋ณํ ์ ํด์ผํ๋ ์ํฉ์ด์์ต๋๋ค. ๊ตฌํ๋ ๊ตฌ์กฐ ์ค๊ฐ์ ๋ค๋ฅธ ํํ๋ก ํ ๋ณํ์ ๊ฑฐ์ณ์ผ ๋๋ ๊ตฌ์กฐ ์์ ๋ฌธ์ ์์ต๋๋ค. ์๋ก์ด enum์ธ CountArgExprNode๋ฅผย select_item_list.rs๋ฅผ ์ฐธ๊ณ ํด ํด๊ฒฐํ์ต๋๋ค. ๊ฒฐ๋ก ์ ์ผ๋กย AggregateNode -> CountArgExprNode -> CountArgExprํํ๊ฐ ๋์์ต๋๋ค. ย CountArgExprNode๋ Text ๋๋ Expr๋ก ๊ตฌ์ฑ๋์ด ์์ด sql๋ฌธ์์ "*"์ธ ๊ฒฝ์ฐ Text๋ฅผ ํตํด ๋ฐ๋กย CountArgExpr::Wildcard ํ๋ณํ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค. Expr์ธ ๊ฒฝ์ฐ ๋ฌธ์์ด์ ๋ฐ๋ก parsingํ ์ ์๋ sqlparser ๋ด์ฅํจ์์ธ parse_expr๋ก Expr๋ฅผ ์ป์ ํ GlueSQL์ด ์ง์ํ๋ ํํ์ Expr๋ก ์นํํ๋ translate_exprํจ์๋ฅผ ์ํํ๊ฒ ๋๋ฉฐ ์ด๋ก์จ CountArgExpr::Expr(Expr)ํํ๋ก ๋ณํ๋ฉ๋๋ค.
[Data] Add functionย sqrt for enum Value
๊ธฐ๋ฅ์ถ๊ฐ
#675
enum Value ์ฌ์ด sprtํจ์ ์ง์์ด ๊ตฌํ๋์ด ์์ง์์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ต๋๋ค. ๋ํ f64์ด์ธ I8, I16: I32, I64์ ๋ํด sqrt๋ฅผ ๊ตฌํํ ๊ฒฝ์ฐ error๋ฅผ ๋ฐ์์ํค๋๋ฐ ์ด๋ฅผ ๋ชจ๋ f64๋ก casting ํ sqrtํจ์์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ๋ ํจ์๋ฅผ ๊ตฌํ์ ์ถ๊ฐํ์ต๋๋ค. ์ดํ string์ด๋ object, list, timestamp์ ๋ํด sqrtํจ์๋ฅผ ์ ์ฉํ ๊ฒฝ์ฐ error ์ฒ๋ฆฌ๋ฅผ unit test๋ก ๊ตฌํํ์ผ๋ฉฐ ์ด๋ค type์ธ์ง ์ถ๋ ฅํ๋๋ก Error๋ฅผ ์ ์ํ์ต๋๋ค. ๊ธฐ์กด์ Function๋ถ๋ถ์์ ์ฌ์ฉํ๋ sqrtํจ์๊ฐ ๋ณ๋๋ก ์ ์๋์ด ์์๋๋ฐ ์ด๋ Function์์ parsingํ value type์ด f64์ธ๊ฒ์ ๋ํด์๋ง ์ง์ํ์์ต๋๋ค. ์๋กญ๊ฒ ๊ตฌํ๋ sqrtํจ์๋ก ์ ์ํ๋ ๋ฐ์ ์ ์๋๋ก ๊ธฐ๋ฅ์ด ๊ฐ์ ๋๊ฒ ๋์์ต๋๋ค.
Add STDEV aggregate function
๊ธฐ๋ฅ์ถ๊ฐ
#684
ํ์คํธ์ฐจ๋ฅผ ์๋กญ๊ฒ ๊ตฌํํ์ต๋๋ค. ๋ถ์ฐ์ ์ ๊ณฑ๊ทผ์ด ํ์คํธ์ฐจ์ด๋ฏ๋ก ๋ง๋ sqrtํจ์๋ฅผ ์ด์ฉํด ์ถ๊ฐํ ์ ์์์ต๋๋ค.
Update aggregate function
๊ธฐ๋ฅ๊ฐ์
#698
๊ธฐ์กด AggregateNode -> Expr๋ก ๋ฐ๋ก type๋ณํ์ ํ๋ ๊ตฌ์กฐ์์ ์ค๊ฐ type์ธ Aggregate๋ฅผ ๊ฑด๋๋ฐ์ด castingํ๋ ํํ๋ผ ์ด๋ฅผ ์์ ํ์ต๋๋ค. AggregateNode- > Aggregate -> Expr๋ก ๋ณํ์ด ๋์์ต๋๋ค.
[AST Builder] Update FunctionNode structure
๊ธฐ๋ฅ๊ฐ์
#723
๋ง์ฐฌ๊ฐ์ง๋ก ast builder๋ด type ๋ณํ์ ํต์ผ์ฑ์ ์ํด ๊ตฌ์กฐ๋ฅผ ์์ ํ์ต๋๋ค. ๊ธฐ์กด FunctionNode -> Expr์์ FunctionNode -> Function -> Exprํํ๋ก type ๋ณํ์ด ์ด๋ฃจ์ด์ง๊ฒ ๋์์ต๋๋ค.
Update aggregate functions to support Expr
๊ธฐ๋ฅ๊ฐ์
#749
aggregate ํจ์์ ๋ค์ด์ฌ ์ ์๋ ์ธ์๊ฐ 3์ข ๋ฅ ๋ฟ์ด์๋๋ฐ ์ด๋ฅผ expr๋ก ๋์ฒดํจ์ผ๋ก์จ ๋ชจ๋ ์์์ด ๋ค์ด๊ฐ ์ ์๊ฒ ๋์์ต๋๋ค.
์ด๋ฅผ ์ํด์๋ evaluateํจ์๋ฅผ ์ด์ฉํ์ด์ผ ํ๋๋ฐ ์ด ํจ์๋ ์ธ์๋ก stroage๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ์ด๋ I/O๊ฐ ๋ฐ์ํ๋ฏ๋ก async await ํจ์์๋๋ฐ ๋๋ฌธ์ ํธ์ถํ๋ ์์ ํจ์๋ค๋ ํด๋น ๊ตฌ๋ฌธ์ด ํ์ํ๊ฒ ๋์์ต๋๋ค. ๋๋ฌธ์ lifetime์ด ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ฒ ๋์ด ๊ตฌํ์ ์ด๋ ค์์ด ์์๋ issue์์ต๋๋ค. ํด๊ฒฐํ ๊ฒฐ๊ณผ ๋ถ๋์ดํ๊ฒ indentation depth๊ฐ ๋์ด๋๊ฒ ๋์๊ณ ํด์ํ๊ธฐ ํ๋ code๋ก ๊ตฌ์ฑ๋์ด ์๋๋ฐ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๊ณ ๋ฏผ์ด ํ์ํด ๋ณด์ ๋๋ค. ์ดํ refactoring๊ณผ์ ์ ๊ฑฐ์น๋ฉด์ blend์ filter context๋ฅผ ๋ฒ๊ฐ์ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ ์ด๋ฅผ ํ๋๋ก ํฉ์น๋ ์์ ์ ์ํํ๊ณ group by having ์ ์ ๊ฒ์ฌํด ๊ณ์ฐํ๋ ๋ถ๋ถ์ ํจ์๋ก ๋นผ๋ ๋๋ค.
[Test Suite] Refacting tests
๊ธฐ๋ฅ๊ฐ์
#782
์ฌ๋ฌ ๊ธฐ๋ฅ๋ค์ด ์ถ๊ฐ๋จ์ ๋ฐ๋ผ test code์ ํ์๊ณผ ์ฌ์ฉ ํจ์๋ค์ ๋ํ ์ ๋ฆฌ๊ฐ ํ์ํด์ก์ต๋๋ค. ๊ฐ test ํจ์์ ์ธ์ ์์์ ํต์ผ๊ณผ file ์ ๋ฆฌ๋ฅผ ์งํํ์ต๋๋ค.
[Data] add data type u8
๊ธฐ๋ฅ์ถ๊ฐ
#838
unsigned int type์ ๋ํด์ ์ถ๊ฐํ๊ฒ ๋์์ต๋๋ค. ์ดํ numeric ๊ด๋ จ casting ๋ฐ ์ ์๋ผ๋ฆฌ์ ์ํธ์์ฉ ๊ด๋ จํ ํจ์์ ๋ํด unit test ๋ฐ integration test๋ฅผ ์์ฑํ์ต๋๋ค.