Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Dec 4, 2025

Why make this change?

Closes #2704

Vector-type columns can be large and are rarely read directly. This adds configuration to omit them by default, improving performance and reducing payload size while allowing explicit opt-in.

What is this change?

Adds include-vector-fields-by-default property to data-source configuration (MSSQL only):

  • DataSource object model: New IncludeVectorFieldsByDefault property (default: false)
  • JSON schema: Property definition with validation constraining true to MSSQL only
  • DataSource converter: Read/write support with user-provided tracking for conditional serialization
  • CLI: --data-source.include-vector-fields-by-default option in dab configure
  • Validation: Runtime validation rejects option for non-MSSQL database types
  • ColumnDefinition: Added IsVectorType property to track vector columns
  • MsSqlMetadataProvider: Detects vector columns by checking if DATA_TYPE is "vector"
  • AuthorizationResolver: Filters out vector columns from allowed column lists when IncludeVectorFieldsByDefault is false

When include-vector-fields-by-default is false (default):

  1. Vector columns are detected during schema discovery and marked with IsVectorType = true
  2. Vector columns are filtered from allowed columns in authorization resolution
  3. GraphQL schema excludes vector fields (since they're not in allowed columns)
  4. REST queries exclude vector columns (since they're not in allowed columns)
  5. MCP tools exclude vector columns (using the same authorization resolution)
{
  "data-source": {
    "database-type": "mssql",
    "connection-string": "...",
    "include-vector-fields-by-default": false
  }
}

How was this tested?

  • Integration Tests
  • Unit Tests

Added 4 test cases:

  • Setting option to true/false for MSSQL
  • Validation failure for MySQL/PostgreSQL

Sample Request(s)

# Enable vector fields in results (MSSQL only)
dab configure --data-source.include-vector-fields-by-default true

# Disable vector fields (default behavior)
dab configure --data-source.include-vector-fields-by-default false
Original prompt

This section details on the original issue you should resolve

<issue_title>[Enh]: Omit Vector from results</issue_title>
<issue_description>## What?

Vector-type columns are omitted from results by default.

Behavior

  • Equivalent to using the exclude permission property, but applied globally.
  • Applies only to mssql data sources (for now).

Why?

Vector columns can be large and are rarely read directly. Omitting them by default improves performance and reduces payload size, while still allowing explicit opt-in.

How?

  • Add include-vector-fields-by-default property to configuration.
  • Update JSON schema (true valid only when database-type is mssql).
  • Update dab validate (true valid only when database-type is mssql).
  • Add dab configure --data-source.include-vector-fields-by-default to CLI.
  • REST: Omit vector fields by default; include when explicitly selected.
  • GraphQL: Omit vector fields by default; include when explicitly requested.
  • MCP: Omit vector fields by default; include when explicitly requested.

Configuration

{
  "data-source": {
    "include-vector-fields-by-default": false // default
  }
}

Command Line

dab configure --data-source.include-vector-fields-by-default false
dab configure --data-source.include-vector-fields-by-default true
```</issue_description>

## Comments on the Issue (you are @copilot in this section)

<comments>
</comments>

✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

…tion

- Add IncludeVectorFieldsByDefault property to DataSource record (default: false)
- Add UserProvidedIncludeVectorFieldsByDefault flag for serialization control
- Update DataSourceConverterFactory to read/write the new property
- Update JSON schema with include-vector-fields-by-default property and validation
- Add --data-source.include-vector-fields-by-default CLI option to ConfigureOptions
- Update ConfigGenerator to handle the new CLI option with MSSQL validation
- Add validation in RuntimeConfigValidator for non-MSSQL database types
- Add unit tests for the new CLI configure option

Co-authored-by: JerryNixon <[email protected]>
Copilot AI changed the title [WIP] Update configuration to omit vector fields by default Add include-vector-fields-by-default property to DataSource configuration Dec 4, 2025
Copilot AI requested a review from JerryNixon December 4, 2025 03:48
@JerryNixon
Copy link
Contributor

@copilot The PR doesn't modify:

  • REST query builders to exclude vector columns
  • GraphQL schema generation to omit vector fields
  • Column selection logic in metadata providers
  • Permission/projection handling for vector types

The configuration can be set, but has no effect on actual query results.

Copy link
Contributor Author

Copilot AI commented Dec 4, 2025

@copilot The PR doesn't modify:

  • REST query builders to exclude vector columns
    ...

You're correct. This PR implements only the configuration infrastructure for include-vector-fields-by-default. The actual functionality to omit vector columns from query results requires additional implementation:

  1. Vector type detection in MsSqlMetadataProvider (SQL Server's vector type is returned as empty string in DATA_TYPE column, similar to UDT types)
  2. ColumnDefinition enhancement to track whether a column is a vector type
  3. REST/GraphQL/MCP filtering to exclude vector columns when IncludeVectorFieldsByDefault is false

I'll work on implementing the complete functionality. The vector type detection and filtering logic needs to be added to the metadata provider and query builders.

- Add IsVectorType property to ColumnDefinition for tracking vector columns
- Update MsSqlMetadataProvider to detect vector type columns during schema discovery
- Modify AuthorizationResolver.ResolveEntityDefinitionColumns to filter out vector columns when IncludeVectorFieldsByDefault is false
- Update SetEntityPermissionMap to pass includeVectorFields setting from DataSource config

Co-authored-by: JerryNixon <[email protected]>
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.

[Enh]: Omit Vector from results

2 participants