Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[#142] select query 테스트코드 작성 및 리팩토링 #143

Merged
merged 15 commits into from
Jul 30, 2024
Merged

Conversation

myyrakle
Copy link
Owner

@myyrakle myyrakle commented Jul 27, 2024

resolves: #142

설명

테스트 코드 작성
image

@myyrakle myyrakle self-assigned this Jul 27, 2024
@myyrakle myyrakle linked an issue Jul 27, 2024 that may be closed by this pull request
Copy link

Pull reviewers stats

Stats of the last 14 days for rrdb:

User Total reviews Time to review Total comments
DPS0340
🥇
5
▀▀▀▀▀▀
15h 32m
▀▀▀▀
0
wHoIsDReAmer
🥈
2
▀▀▀
8h 59m
▀▀
0
boxqkrtm
🥉
1
17h 2m
▀▀▀▀
0

⚡️ Pull request stats

@myyrakle
Copy link
Owner Author

Total Coverage: 47.46%
🔗 Coverage View (최대 몇분 정도의 지연시간이 발생할 수 있습니다.)

@myyrakle myyrakle force-pushed the test/#142 branch 2 times, most recently from 1e152e2 to 2f5969c Compare July 28, 2024 04:56
@myyrakle
Copy link
Owner Author

myyrakle commented Jul 28, 2024

Total Coverage: 47.15%
🔗 Coverage View (최대 몇분 정도의 지연시간이 발생할 수 있습니다.)

@myyrakle
Copy link
Owner Author

Total Coverage: 47.15%
🔗 Coverage View (최대 몇분 정도의 지연시간이 발생할 수 있습니다.)

@myyrakle
Copy link
Owner Author

Total Coverage: 47.35%
🔗 Coverage View (최대 몇분 정도의 지연시간이 발생할 수 있습니다.)

@myyrakle
Copy link
Owner Author

Total Coverage: 47.35%
🔗 Coverage View (최대 몇분 정도의 지연시간이 발생할 수 있습니다.)

@myyrakle
Copy link
Owner Author

Total Coverage: 47.38%
🔗 Coverage View (최대 몇분 정도의 지연시간이 발생할 수 있습니다.)

@myyrakle
Copy link
Owner Author

Total Coverage: 47.84%
🔗 Coverage View (최대 몇분 정도의 지연시간이 발생할 수 있습니다.)

@myyrakle
Copy link
Owner Author

Total Coverage: 47.86%
🔗 Coverage View (최대 몇분 정도의 지연시간이 발생할 수 있습니다.)

@myyrakle
Copy link
Owner Author

Total Coverage: 47.96%
🔗 Coverage View (최대 몇분 정도의 지연시간이 발생할 수 있습니다.)

@myyrakle
Copy link
Owner Author

Total Coverage: 48.05%
🔗 Coverage View (최대 몇분 정도의 지연시간이 발생할 수 있습니다.)

@myyrakle
Copy link
Owner Author

Total Coverage: 48.07%
🔗 Coverage View (최대 몇분 정도의 지연시간이 발생할 수 있습니다.)

@myyrakle
Copy link
Owner Author

Total Coverage: 48.10%
🔗 Coverage View (최대 몇분 정도의 지연시간이 발생할 수 있습니다.)

@myyrakle
Copy link
Owner Author

Total Coverage: 48.20%
🔗 Coverage View (최대 몇분 정도의 지연시간이 발생할 수 있습니다.)

@myyrakle
Copy link
Owner Author

Total Coverage: 48.23%
🔗 Coverage View (최대 몇분 정도의 지연시간이 발생할 수 있습니다.)

@myyrakle
Copy link
Owner Author

Total Coverage: 48.25%
🔗 Coverage View (최대 몇분 정도의 지연시간이 발생할 수 있습니다.)

@myyrakle
Copy link
Owner Author

Total Coverage: 48.48%
🔗 Coverage View (최대 몇분 정도의 지연시간이 발생할 수 있습니다.)

@myyrakle
Copy link
Owner Author

Total Coverage: 48.57%
🔗 Coverage View (최대 몇분 정도의 지연시간이 발생할 수 있습니다.)

@myyrakle myyrakle changed the title [#142] select query 테스트코드 리팩토링 [#142] select query 테스트코드 작성 및 리팩토링 Jul 29, 2024
@@ -45,7 +45,7 @@ jobs:

- name: Set coverage env variable
run: |
echo "COVERAGE=$(cat coverage_total_percent.txt)" >> $GITHUB_ENV
echo "COVERAGE=$(head -n 1 coverage_total_percent.txt)" >> $GITHUB_ENV
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여러줄인경우 가끔 나와서 자름

self.unget_next_token(current_token);
// 현재 select_item은 종료된 것으로 판단.
Ok(select_item.build())
}
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

버그

src/parser/implements/dml/select.rs Show resolved Hide resolved
Copy link
Collaborator

@boxqkrtm boxqkrtm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이거 추가하죠

1. 잘못된 토큰 시퀀스

  • 불완전한 문장 끝
    • SELECT 1 FROM
    • SELECT * FROM foo. (테이블 이름이 끝나지 않음)
  • 중복된 키워드
    • SELECT SELECT 1 FROM foo
    • FROM foo FROM bar

2. 누락된 필수 키워드 및 구문

  • 누락된 FROM 절
    • SELECT 1
  • WHERE 절의 누락
    • SELECT 1 WHERE
    • SELECT 1 FROM foo WHERE

3. 잘못된 토큰 타입

  • 숫자가 아닌 인덱스
    • SELECT * FROM foo OFFSET 'test'
  • 비정상적인 문자
    • SELECT * FROM foo WHERE id = @

4. 유효하지 않은 토큰 조합

  • 잘못된 연산자 사용
    • SELECT 1 WHERE 1 =
    • SELECT * FROM foo WHERE id = != 1
  • GROUP BY와 호환되지 않는 집계 함수
    • SELECT COUNT(id), name FROM foo GROUP BY id
    • SELECT COUNT(id), name FROM foo GROUP BY name

5. 하위 쿼리의 비정상적 구성

  • 누락된 하위 쿼리 키워드
    • SELECT 1 FROM (SELECT 1)
  • 하위 쿼리의 잘못된 사용
    • SELECT (SELECT 1 FROM foo)

6. 잘못된 GROUP BY, HAVING, ORDER BY 항목

  • GROUP BY 항목 제한
    • SELECT COUNT(id), name FROM foo GROUP BY id
  • HAVING 절의 잘못된 조건
    • SELECT COUNT(id) FROM foo HAVING
    • SELECT COUNT(id) FROM foo HAVING COUNT(id)
  • ORDER BY 항목 제한
    • SELECT * FROM foo ORDER BY

7. 여러 SQL 문장

  • 비정상적인 두 SQL 문장 연결
    • SELECT * FROM foo; SELECT * FROM
    • SELECT *; SELECT * FROM

8. 잘못된 함수 호출

  • 인자로 함수를 받는 경우
    • SELECT COUNT FROM foo
    • SELECT COUNT(* FROM foo)

9. 잘못된 JOIN 사용

  • JOIN의 잘못된 사용
    • SELECT * FROM foo LEFT JOIN
    • SELECT * FROM foo JOIN bar ON

Copy link
Collaborator

@boxqkrtm boxqkrtm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

테스트 나중에 다 넣죠

@myyrakle myyrakle merged commit 5cd2c6f into master Jul 30, 2024
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[test] parse::dml::select 테스트 작성
2 participants