-
Notifications
You must be signed in to change notification settings - Fork 7
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
base: main
Are you sure you want to change the base?
Conversation
@@ -144,6 +144,41 @@ func WithPredicate(val *api_service_protos.TPredicate) ValidateTableOption { | |||
} | |||
} | |||
|
|||
func (b *Base[ID, IDBUILDER]) ValidateTableMetadata( |
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.
Это можно будет убрать после реализации ReadSplit (для других источников сейчас, кажется, нет тестов, которые проверяют только DescribeTable)
case primitive.A: | ||
if len(v) > 0 { | ||
if innerType, err := typeMap(v[0], logger); err != nil { | ||
return nil, err |
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.
сейчас весь массив остается сериализованным, если внутренний тип не распарсился, но можно переделать на массив строк
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 { |
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.
типы сравниваются по их строчному представлению
я пока не нашла как это сделать лучше, если не проверять явно все возможные типы по-отдельности - могу переделать так
|
||
defer conn.Disconnect(ctx) | ||
|
||
if !mongoDbOptions.DoParse { |
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.
тут ранее подключаемся к бд, даже когда не нужно читать данные из нее
можно убрать, но так есть проверка, что данные для подключения корректные
@@ -1,5 +1,5 @@ | |||
package utils | |||
|
|||
type TableIDTypes interface { | |||
int32 | int64 | |||
int32 | int64 | string |
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.
вообще тут должен быть массив байт для 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)}, |
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.
nb: единственные два случая в MongoDB, где используется не optional тип - _id и json, соответствующий всему документу из коллекции
No description provided.