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

MongoDB: DescribeTable draft #229

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

ninaiad
Copy link
Contributor

@ninaiad ninaiad commented Jan 12, 2025

No description provided.

@@ -144,6 +144,41 @@ func WithPredicate(val *api_service_protos.TPredicate) ValidateTableOption {
}
}

func (b *Base[ID, IDBUILDER]) ValidateTableMetadata(
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Это можно будет убрать после реализации ReadSplit (для других источников сейчас, кажется, нет тестов, которые проверяют только DescribeTable)

case primitive.A:
if len(v) > 0 {
if innerType, err := typeMap(v[0], logger); err != nil {
return nil, err
Copy link
Contributor Author

Choose a reason for hiding this comment

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

сейчас весь массив остается сериализованным, если внутренний тип не распарсился, но можно переделать на массив строк

columnNames = append(columnNames, v.Key)
deducedTypes[v.Key] = t
logger.Debug(fmt.Sprintf("BsonToYqlColumn: new column %v %v", v.Key, tString))
} else if prevTypeString != tString {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

типы сравниваются по их строчному представлению
я пока не нашла как это сделать лучше, если не проверять явно все возможные типы по-отдельности - могу переделать так


defer conn.Disconnect(ctx)

if !mongoDbOptions.DoParse {
Copy link
Contributor Author

@ninaiad ninaiad Jan 12, 2025

Choose a reason for hiding this comment

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

тут ранее подключаемся к бд, даже когда не нужно читать данные из нее
можно убрать, но так есть проверка, что данные для подключения корректные

@@ -1,5 +1,5 @@
package utils

type TableIDTypes interface {
int32 | int64
int32 | int64 | string
Copy link
Contributor Author

Choose a reason for hiding this comment

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

вообще тут должен быть массив байт для ObjectId из монго, но в рамках тестов будет удобнее работать со строками, поэтому я предлагаю попробовать так


func getUnparsedDocSchema(tableName string) *api_service_protos.TSchema {
return &api_service_protos.TSchema{Columns: []*Ydb.Column{
{Name: idColumn, Type: common.MakePrimitiveType(Ydb.Type_STRING)},
Copy link
Contributor Author

Choose a reason for hiding this comment

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

nb: единственные два случая в MongoDB, где используется не optional тип - _id и json, соответствующий всему документу из коллекции

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.

1 participant