-
Notifications
You must be signed in to change notification settings - Fork 123
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
[CUBVEC-12] Add VECTOR to Lexer and Parser #5693
[CUBVEC-12] Add VECTOR to Lexer and Parser #5693
Conversation
opt_vector_args | ||
: /* empty */ | ||
{{ DBG_TRACE_GRAMMAR(opt_vector_args, : ); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
NULL VECTOR를 의미한 걸까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
리뷰 감사합니다.
아무 옵션 없이 단순히 "VECTOR" 토큰만으로 테이블의 컬럼 attribute 타입을 지정한다면
기본적으로 float 원소를 담는 2000차원의 벡터를 생성하는 것이 현재 임시 스펙으로 알고 있습니다.
그러나 이번 마일스톤에서는 다루지 않기로 했기에, syntax error만을 방지하고, 구현 내용은 비워두었습니다.
src/parser/csql_grammar.y
Outdated
| '(' unsigned_integer ',' primitive_type ')' | ||
{{ DBG_TRACE_GRAMMAR(opt_vector_args, | '(' unsigned_integer ',' primitive_type ')' ); | ||
|
||
// TODO |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- 이슈에서 기술된 구현 범위는 VECTOR(dim, type) 까지로, TODO 부분으로 예상되는 상위로 정보 전달($$ = ctn;) 작업 역시 포함되어야 할 것으로 기대됩니다.
- 포괄적인 primitive_type 보다는 FLOAT_ 으로 한정한 후 추후 필요에 따라 확장해 가는게 좋을것 같습니다.
- TODO 주석 - 추후 수행해야할 작업에 대해 기술해 두지 않는다면, 불필요한 주석으로 생각됩니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fcf67f6
to
f839479
Compare
{{ DBG_TRACE_GRAMMAR(data_type, | vector_type); | ||
|
||
container_2 ctn; | ||
SET_CONTAINER_2 (ctn, FROM_NUMBER (PT_TYPE_VECTOR), NULL); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
$2에 대한 처리를 수행하지 않아도 되나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(참고) 위 질문에 대한 질의응답을 오늘 오후 5시에 구두로 진행했으며, 이번 마일스톤에서 처리를 하지 않아도 괜찮을 것이라는 결론에 함께 도달했습니다. 다만 $2에 대한 처리가 수행되지 않은 이유에 대해 TODO 주석을 추가했습니다.
Co-authored-by: joonmin83 <[email protected]>
8db4c4a
into
CUBRID:cubvec/cubvec-create-table
http://jira.cubrid.org/browse/CUBVEC-12 * feat(parser): add VECTOR token and PT_TYPE_VECTOR to parser Create Table succeeds * feat(csql_grammar.y): can create vector table with arguments * fix(csql_grammar.y): remove unnecessary container initialization for readability * fix(csql_grammar): get rid of obscure TODO and pass vector options to parent rule * Update src/parser/csql_grammar.y Co-authored-by: joonmin83 <[email protected]> * docs(csql_grammar): todo: dim and type validation later --------- Co-authored-by: joonmin83 <[email protected]>
http://jira.cubrid.org/browse/CUBVEC-12 * feat(parser): add VECTOR token and PT_TYPE_VECTOR to parser Create Table succeeds * feat(csql_grammar.y): can create vector table with arguments * fix(csql_grammar.y): remove unnecessary container initialization for readability * fix(csql_grammar): get rid of obscure TODO and pass vector options to parent rule * Update src/parser/csql_grammar.y Co-authored-by: joonmin83 <[email protected]> * docs(csql_grammar): todo: dim and type validation later --------- Co-authored-by: joonmin83 <[email protected]>
http://jira.cubrid.org/browse/CUBVEC-12 * feat(parser): add VECTOR token and PT_TYPE_VECTOR to parser Create Table succeeds * feat(csql_grammar.y): can create vector table with arguments * fix(csql_grammar.y): remove unnecessary container initialization for readability * fix(csql_grammar): get rid of obscure TODO and pass vector options to parent rule * Update src/parser/csql_grammar.y Co-authored-by: joonmin83 <[email protected]> * docs(csql_grammar): todo: dim and type validation later --------- Co-authored-by: joonmin83 <[email protected]>
http://jira.cubrid.org/browse/CUBVEC-12
Purpose
파서에서
VECTOR
데이터 타입을 지원하도록 추가하여, 향후 벡터 처리와 관련된 기능을 구현할 수 있는 기반을 마련합니다.Implementation
1. VECTOR 타입 토큰 추가
src/parser/csql_lexer.l
2. VECTOR 토큰 정의
src/parser/csql_grammar.y
3. VECTOR 타입 문법 추가
src/parser/csql_grammar.y
VECTOR
타입을data_type
문법에 추가했습니다.VECTOR
키워드 뒤에opt_vector_args
(선택적 인자)를 처리할 수 있도록 구현했습니다.container_2
구조체로 설정되며, 타입은PT_TYPE_VECTOR
로 지정됩니다.4. VECTOR 선택적 인자 처리
src/parser/csql_grammar.y
VECTOR
뒤에 올 수 있는 선택적 인자를 처리하는 문법 규칙입니다./* empty */
).(unsigned_integer)
).(unsigned_integer, primitive_type)
).primitive_type
처리가 아직 구현되지 않았습니다.5. 구문 트리 타입 추가
src/parser/parse_tree.h
PT_TYPE_VECTOR,
PT_TYPE_VECTOR
가 구문 트리의 타입(enum)에 추가되었습니다.코드 실행 흐름
VECTOR
키워드를 인식하면VECTOR
토큰이 반환data_type
규칙에서VECTOR opt_vector_args
를 인식opt_vector_args
는 선택적 인자를 처리PT_TYPE_VECTOR
로 설정