정보통신산업진흥원장상

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.


  1. 기능추가 #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

  2. 테스트 추가 버그수정 #329 #353

    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를 추가했습니다.

  3. 기능추가 #357 Logical XOR를 parser에 추가 (2021.08.30 ~ 2021.09.17)

    bitwise operator인 ^는 구현되어 있으나 논리적으로 XOR하는 부분은 parser로 구현되어 있지 않아 추가한 뒤 제대로 parsing이 되는지 test code를 작성했습니다.