https://drive.google.com/drive/folders/1Kp0WQnuLxfCKPfvxvYLO27yjkDyE2Wda?usp=sharing
gluesql
, sqlparser-rs
project 기여컨트리뷰션 기간 : 2021. 8. 7. - 2021. 10. 12. (평가 기준 컨트리뷰션 인정 기간)
정식 활동 기간: 2021. 8. 7. - 2021. 11. 19.
Challenges
2021. 8. 7. - 2021. 8. 31.
Masters
2021. 9. 6. - 2021. 11. 19.
▶️ 프로젝트명: GlueSql
▶️ 기여 프로젝트 설명
gluesql
: rust 이용, DBMS를 구축하는데 드는 cost를 낮추기 위한 목적으로 쉽게 만들어 사용할 수 있도록 지원하는 rust library입니다. 내장형 db, web db등을 crate import로 간단히 가져와 만들 수 있습니다.
sqlparser-rs
: 주어진 sql문을 parsing 후 tokenize하여 구조화된 결과를 반환하도록 rust로 만들어진 lexer, parser입니다. GlueSql에서 해당 crate를 import해 parser로 사용하고 있습니다.
▶️ 프로젝트 활동 내용
Challenges
2021. 8. 7. - 2021. 8. 31.
Masters
2021. 9. 6. - 2021. 11. 19.
기능추가
#265
Sql function REVERSE
기능 추가 (2021.08.07 ~ 2021.08.26)
rust의 문법을 rust book을 통해 배우며 동시에 project의 code를 읽었습니다. 문법은 기존에 배우고 5년간 사용했었던 c++언어와 흡사한 점이 있어 전체적인 구조와 줄기를 빠르게 훑어볼 수 있었습니다. Project의 경우 체계적으로 정리되어 있고 구현되어 있었던 folder, file을 통해 REVERSE
함수를 간단하게 추가해 볼 수 있었습니다. 하지만 전체적인 sql문들을 처리하는 방식이 현재로써는 table과 column이 만들어진 상태에 대해서만 동작하기 때문에 column명을 함수의 parameter로 넘겨 문자열을 뒤집어 반환하는 제한적인 기능만을 만들게 되었습니다. 기능 구현 후 검증을 위해 integration test를 작성해 추가했습니다.
XOR를 parser에 추가 후 구현 : https://github.com/gluesql/gluesql/issues/354
Rust function PartialEq
, PartialOrd
test 작성 및 bug 수정 (2021.08.26 ~ 2021.08.30)
rust를 공부하는 한편 rust에서 지원하는 내장함수인 PartialEq
, PartialOrd
를 customizing해놓은 부분을 검증하기 위한 unit test를 추가했습니다. 추가하는 과정에서 bug를 발견하게 되었습니다. PartialEq
함수가 sql문을 parsing한 후 나온 문자열을 여러 data들(Boolean, Number, Text, Interval, Null)로 분류한 후 두 data가 같은지를 비교하는 기능인데 정수 12와 12.0을 다르게 판단하는 오류를 발견해 수정한 후 unit test code를 추가했습니다. 또한 PartialOrd
함수는 마찬가지로 분류된 두 data값에 대해 같은지, 큰지, 작은지를 비교해 Option<ordering> 형태로 반환해주는 함수이며 이에 대해 unit test code를 추가했습니다.
기능추가
#357
Logical XOR
를 parser에 추가 (2021.08.30 ~ 2021.09.17)
bitwise operator인 ^
는 구현되어 있으나 논리적으로 XOR
하는 부분은 parser로 구현되어 있지 않아 추가한 뒤 제대로 parsing이 되는지 test code를 작성했습니다.