Skip to content

Feature/column stat protections#247

Merged
darinkelkhoff merged 7 commits intodevelopfrom
feature/column-stat-protections
Oct 4, 2025
Merged

Feature/column stat protections#247
darinkelkhoff merged 7 commits intodevelopfrom
feature/column-stat-protections

Conversation

@darinkelkhoff
Copy link
Contributor

Pull Request

📝 Description

What does this PR do?
Add config object to Column Status process, to provide some protections against running too-big queries. Specifically:

  • timeout on all queries
  • fail if count > limit

Some supporting qqq changes to go along

  • of / ofOrWithNew in QSupplementalTableMetaData
  • ProcessMetaData.getField
  • isEnabled() on instance enricher and validator plugins
  • and an unrelated NPE fix i've had around for a few months

Related Issue:
Closes #[issue_number]

🔍 Type of Change

  • Bug Fix - Fixes an existing issue
  • New Feature - Adds new functionality
  • Breaking Change - Fix or feature that would cause existing functionality to not work as expected
  • Documentation Update - Updates documentation
  • Refactoring - Code change that neither fixes a bug nor adds a feature
  • Performance Improvement - Code change that improves performance
  • Test Addition - Adding missing tests or correcting existing tests

🧪 Testing

How has this been tested?

  • Unit Tests: All unit tests pass
  • Integration Tests: Integration tests pass
  • Coverage: Meets QQQ's coverage requirements (80% instructions, 95% classes)
  • Manual Testing: Tested manually in development environment

Test Commands:

# Commands used for testing
mvn test
mvn verify

📋 Checklist

Before submitting this PR, please ensure:

  • Code Style: Follows QQQ's Code Review Standards
  • Tests: All tests pass with required coverage
  • Documentation: Updated relevant wiki pages and code comments
  • Breaking Changes: Documented any breaking changes
  • Commit Messages: Follow conventional commit format
  • Self Review: Code has been reviewed by the author

🔗 Related Resources

Documentation:

📊 Additional Information

Any additional information that reviewers should know:

  • Screenshots (if applicable)
  • Performance impact
  • Migration notes
  • Dependencies added/removed

Thank you for contributing to QQQ! 🚀

…erformance safeguards

Config allows application to define:
- a limit on how many rows the filter can match before column stats are allowed to run
- a timeout in seconds for each query ran within the process

also updating queries to run with QueryHint.MAY_USE_READ_ONLY_BACKEND
…ring name)

And to give more stable behavior for this method (in case of fields with duplicated names), change getInputFields() to first iterate over stepList, then, if needed, the step map (which internally-created instances have been updated to be LinkedHashMap, for predictable return values).
…tom if customPossibleValueProvider returns null
@darinkelkhoff darinkelkhoff merged commit dd051ed into develop Oct 4, 2025
3 checks passed
@darinkelkhoff darinkelkhoff deleted the feature/column-stat-protections branch October 4, 2025 00:21
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.

2 participants