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

DM-48132: Introduce Binary2 VOTable Serialization and make it default #120

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

stvoutsin
Copy link
Member

Description

Introduce a Binary2 VOTable serialization to the RSP TAP services, enabled by default instead of TableData. Maintain the ability to request TableData format explicitly which works by specifying the format in the TAP request.
This change improves performance by using a more efficient serialization format.

Changes

Modified RubinTableWriter class

  • Added support for distinguishing between VOTABLE (Binary2) and VOTABLE-TD formats
  • Updated format initialization to handle VOTABLE-TD format separately
  • Updated row count tracking to properly handle all formats

Added new ResultSetWriter class

  • Implements table writing for Binary2 VOTable format
  • Supports proper handling of table metadata including:
    • Column information preservation
    • URL rewriting for ObsCore access_url fields
    • Row count tracking
    • Overflow detection
  • Handles maxrec limits correctly

Testing

  • Verified default format produces Binary2 serialization
  • Confirmed TableData format still works when explicitly requested
  • Tested URL rewriting functionality
  • Verified row count accuracy
  • Tested with various MAXREC limits
  • Validated output against VOTable schema

Usage

Default behavior remains unchanged from user perspective. To explicitly request TableData format:

Using pyvo:

tap_service.run_async("SELECT TOP 5 * FROM TAP_SCHEMA.tables",
                                   FORMAT="application/x-votable+xml;serialization=TABLEDATA")

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