Skip to content
This repository was archived by the owner on Nov 7, 2025. It is now read-only.

Commit 87dcf67

Browse files
committed
WIP
1 parent 38b6652 commit 87dcf67

File tree

3 files changed

+19
-6
lines changed

3 files changed

+19
-6
lines changed

platform/config/config.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ type QuesmaConfiguration struct {
5959
MapFieldsDiscoveringEnabled bool
6060
IndexNameRewriteRules []IndexNameRewriteRule // rules for rewriting index names, e.g. "index_name" -> "index_name_v2"
6161
DefaultStringColumnType string
62+
63+
DefaultSchemaOverrides *SchemaConfiguration
6264
}
6365

6466
func NewQuesmaConfigurationIndexConfigOnly(indexConfig map[string]IndexConfiguration) QuesmaConfiguration {

platform/config/config_v2_util.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,11 @@ func (c *QuesmaConfiguration) translateAndAddSinglePipeline(confNew *QuesmaNewCo
5555
c.CreateCommonTable = true
5656
c.UseCommonTableForWildcard = true
5757
}
58+
5859
if defaultConfig.SchemaOverrides != nil {
59-
errAcc = multierror.Append(errAcc, fmt.Errorf("schema overrides of default index ('%s') are not currently supported (only supported in configuration of a specific index)", DefaultWildcardIndexName))
60+
c.DefaultSchemaOverrides = defaultConfig.SchemaOverrides
6061
}
62+
6163
if len(defaultConfig.QueryTarget) > 1 {
6264
errAcc = multierror.Append(errAcc, fmt.Errorf("the target configuration of default index ('%s') of query processor is not currently supported", DefaultWildcardIndexName))
6365
}
@@ -192,9 +194,11 @@ func (c *QuesmaConfiguration) translateAndAddDualPipeline(confNew *QuesmaNewConf
192194
c.UseCommonTableForWildcard = queryProcessor.Config.UseCommonTable
193195
}
194196
}
197+
195198
if defaultConfig.SchemaOverrides != nil {
196-
errAcc = multierror.Append(errAcc, fmt.Errorf("schema overrides of default index ('%s') are not currently supported (only supported in configuration of a specific index)", DefaultWildcardIndexName))
199+
c.DefaultSchemaOverrides = defaultConfig.SchemaOverrides
197200
}
201+
198202
if defaultConfig.UseCommonTable {
199203
// We set both flags to true here
200204
// as creating common table depends on the first one

platform/schema/registry.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ type (
3939

4040
// index configuration overrides always take precedence
4141
indexConfiguration *map[string]config.IndexConfiguration
42+
defaultSchemaOverrides *config.SchemaConfiguration
4243
dataSourceTableProvider TableProvider
4344
dataSourceTypeAdapter typeAdapter
4445
dynamicConfiguration map[string]Table
@@ -149,6 +150,11 @@ func (s *schemaRegistry) loadSchemas() (map[IndexName]Schema, error) {
149150
if s.dataSourceTableProvider.AutodiscoveryEnabled() {
150151
for tableName, table := range definitions {
151152
fields := make(map[FieldName]Field)
153+
154+
if s.defaultSchemaOverrides != nil {
155+
s.populateSchemaFromStaticConfiguration(s.defaultSchemaOverrides, fields)
156+
}
157+
152158
internalToPublicFieldsEncodings := s.getInternalToPublicFieldEncodings(tableName)
153159
existsInDataSource := s.populateSchemaFromTableDefinition(definitions, tableName, fields, internalToPublicFieldsEncodings)
154160
schemas[IndexName(tableName)] = NewSchema(fields, existsInDataSource, table.DatabaseName)
@@ -159,7 +165,7 @@ func (s *schemaRegistry) loadSchemas() (map[IndexName]Schema, error) {
159165
fields := make(map[FieldName]Field)
160166
aliases := make(map[FieldName]FieldName)
161167
s.populateSchemaFromDynamicConfiguration(indexName, fields)
162-
s.populateSchemaFromStaticConfiguration(indexConfiguration, fields)
168+
s.populateSchemaFromStaticConfiguration(indexConfiguration.SchemaOverrides, fields)
163169
internalToPublicFieldsEncodings := s.getInternalToPublicFieldEncodings(indexName)
164170
tableName := indexConfiguration.TableName(indexName)
165171
existsInDataSource := s.populateSchemaFromTableDefinition(definitions, tableName, fields, internalToPublicFieldsEncodings)
@@ -256,6 +262,7 @@ func (s *schemaRegistry) GetFieldEncodings() map[FieldEncodingKey]EncodedFieldNa
256262
func NewSchemaRegistry(tableProvider TableProvider, configuration *config.QuesmaConfiguration, dataSourceTypeAdapter typeAdapter) Registry {
257263
res := &schemaRegistry{
258264
indexConfiguration: &configuration.IndexConfig,
265+
defaultSchemaOverrides: configuration.DefaultSchemaOverrides,
259266
dataSourceTableProvider: tableProvider,
260267
dataSourceTypeAdapter: dataSourceTypeAdapter,
261268
dynamicConfiguration: make(map[string]Table),
@@ -266,11 +273,11 @@ func NewSchemaRegistry(tableProvider TableProvider, configuration *config.Quesma
266273
return res
267274
}
268275

269-
func (s *schemaRegistry) populateSchemaFromStaticConfiguration(indexConfiguration config.IndexConfiguration, fields map[FieldName]Field) {
270-
if indexConfiguration.SchemaOverrides == nil {
276+
func (s *schemaRegistry) populateSchemaFromStaticConfiguration(schemaOverrides *config.SchemaConfiguration, fields map[FieldName]Field) {
277+
if schemaOverrides == nil {
271278
return
272279
}
273-
for fieldName, field := range indexConfiguration.SchemaOverrides.Fields {
280+
for fieldName, field := range schemaOverrides.Fields {
274281
if field.Type.AsString() == config.TypeAlias || field.Ignored {
275282
continue
276283
}

0 commit comments

Comments
 (0)