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

[CUBVEC-14] CREATE TABLE: 2. Show 'VECTOR' column type when 'desc' #5724

Open
wants to merge 6 commits into
base: cubvec/cubvec-create-table
Choose a base branch
from

Conversation

vimkim
Copy link
Contributor

@vimkim vimkim commented Dec 16, 2024

http://jira.cubrid.org/browse/CUBVEC-14

Purpose

현재 desc 명령을 실행할 때 VECTOR 데이터 타입이 OBJECT로 잘못 출력되는 문제를 해결합니다.
이 변경 사항은 VECTOR 타입을 데이터베이스 시스템 전반에 걸쳐 올바르게 정의하고 출력하도록 수정합니다.


Implementation

  1. VECTOR 타입 매핑 및 처리 로직 추가

    • pt_type_enum_to_db() 함수에 PT_TYPE_VECTORDB_TYPE_VECTOR로 변환하는 로직을 추가했습니다.
    • pt_type_enum_to_db_domain() 함수에 DB_TYPE_VECTOR 처리를 추가하여 도메인 매핑이 제대로 이루어지도록 했습니다.
  2. VECTOR 타입 이름 반환

    • qexec_schema_get_type_name_from_id() 함수에 DB_TYPE_VECTOR 핸들링을 추가하여 desc 명령에서 "VECTOR" 문자열이 반환되도록 수정했습니다.
  3. VECTOR 타입 시스템 등록

    • tp_Type_id_map 배열에 tp_Vector를 추가하여 데이터 타입 매핑 과정에서 누락되지 않도록 했습니다.
    • tp_Vector 정의를 추가하여 VECTOR 타입이 시스템에 올바르게 등록되도록 처리했습니다.

관련 코드 변경 사항

dbtype_def.h

+    DB_TYPE_VECTOR = 41,
-    DB_TYPE_LAST = DB_TYPE_JSON
+    DB_TYPE_LAST = DB_TYPE_VECTOR

object_primitive.c

+  &tp_Vector,

parse_dbi.c

+    case PT_TYPE_VECTOR:
+      db_type = DB_TYPE_VECTOR;
+      break;

query_executor.c

+    case DB_TYPE_VECTOR:
+      return "VECTOR";

Remarks

  • 해당 수정은 시스템의 다른 기능에 영향을 주지 않으며, VECTOR 타입에 대한 정확한 처리만을 추가합니다.
  • 변경 사항이 적용된 후 csql -u dba testdb -S -c 'desc vt;' 명령을 실행하면 VECTOR 필드가 VECTOR로 정확하게 출력됩니다.

Testing

  • desc 명령 테스트: VECTOR 타입이 VECTOR로 출력되는지 확인했습니다.

@vimkim vimkim changed the title Cubvec/14 desc table [CUBVEC-14] CREATE TABLE: 2. Show 'VECTOR' column type when 'desc' Dec 17, 2024
Comment on lines 17122 to 17142
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
};

Copy link
Contributor Author

Choose a reason for hiding this comment

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

해당 함수 포인터를 NULL로 초기화해도 desc에는 문제 없습니다.
추후 PR에서 추가하는 것이 바람직하다고 판단했습니다.

@vimkim vimkim requested review from a team, hgryoo, hornetmj, mhoh3963 and YeunjunLee and removed request for a team December 17, 2024 04:30
@vimkim vimkim marked this pull request as ready for review December 17, 2024 04:31
@hornetmj
Copy link
Contributor

@beyondykk9, @shparkcubrid 벡터DB 과제 관련 PR로 리뷰 진행하지 않으셔도 됩니다. CODEOWNERS 파일 수정 전 코드를 기반으로 한 수정이라 두분에게 리뷰 요청되었으며, CODEOWNERS는 변경되었습니다. 추후에는 리뷰 요청되지 않을 것입니다.

@mhoh3963
Copy link
Contributor

mhoh3963 commented Dec 18, 2024

@vimkim
catalog의 data type에 vector를 추가하지 않아도 desc 시 vector type이 보이나요 ?
object/schema_system_catalog_install.cpp의 catcls_add_data_type()에서 JSON뒤에 "VECTOR" 를 추가해야 할 것 같네요.
또한, object/object_printer.cpp의 object_printer::describe_domain()에 DB_TYPE_VECTOR 가 포함되어야 할 것 같습니다.

@vimkim
Copy link
Contributor Author

vimkim commented Dec 18, 2024

@vimkim catalog의 data type에 vector를 추가하지 않아도 desc 시 vector type이 보이나요 ? object/schema_system_catalog_install.cpp의 catcls_add_data_type()에서 JSON뒤에 "VECTOR" 를 추가해야 할 것 같네요. 또한, object/object_printer.cpp의 object_printer::describe_domain()에 DB_TYPE_VECTOR 가 포함되어야 할 것 같습니다.


피드백 주셔서 감사합니다.

말씀 주신 사항에 대해 검토해 본 결과, catalog의 데이터 타입에 VECTOR를 추가하지 않더라도 DESC 명령어를 통해 VECTOR 타입이 정상적으로 인식되는 것을 확인하였습니다.

catcls_add_data_typeloaddb에서 사용되는 것으로 보이며,
object_printerDESC 명령어가 아닌 ;sc 세션 명령어에서 출력을 위한 코드로 파악됩니다.
따라서, 세션 명령어와 loaddb는 각자 독립적인 출력 형식을 따르는 것으로 보입니다.

필요 시 말씀 주신 대로 추가 작업을 진행하도록 하겠습니다.

감사합니다.

Copy link
Contributor

@mhoh3963 mhoh3963 left a comment

Choose a reason for hiding this comment

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

제가 언급한 두개의 함수 수정은 show create table시 domain type을 표현할때 필요할 것입ㄴ다. 다음 PR에 고려해서 작업하시면 됩니다.

src/object/object_primitive.c Outdated Show resolved Hide resolved
@@ -1602,6 +1602,7 @@ pt_type_enum_to_db_domain (const PT_TYPE_ENUM t)
case DB_TYPE_OBJECT:
case DB_TYPE_SET:
case DB_TYPE_MULTISET:
case DB_TYPE_VECTOR:
Copy link
Contributor

Choose a reason for hiding this comment

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

NIT:

JSON 다음에 추가

Copy link
Contributor Author

Choose a reason for hiding this comment

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

DB_TYPE_SEQUENCE 다음에 추가하는 방식으로 통일하는 것을 제안드립니다.
많은 switch-case문에서 DB_TYPE_SEQUENCE를 특수 처리하는 패턴을 그대로 따르기 때문에, 리뷰 과정에서 코드의 의도를 파악하기가 더 용이할 것으로 생각됩니다.

Copy link
Contributor

Choose a reason for hiding this comment

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

L

NIT 의견이기 때문에 @vimkim님이 선택하시면 되겠습니다. 일부는 JSON 뒤에 일부는 MULTISET 뒤에 정렬되어 있어서 일관성 있게 정리되었으면 하는 바람으로 드린 의견입니다. 추후 VECTOR 타입 구현이 달라질 수도 있구요.

@@ -25042,6 +25042,9 @@ qexec_schema_get_type_name_from_id (DB_TYPE id)
case DB_TYPE_SEQUENCE:
return "SEQUENCE";

case DB_TYPE_VECTOR:
Copy link
Contributor

Choose a reason for hiding this comment

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

NIT:

JSON 다음에 추가

Copy link
Contributor Author

Choose a reason for hiding this comment

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

위와 동일

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants