For historical reasons, the tap_schema.columns table has 3 columns that are intended to be boolean but are currently int: indexed, principal, std (values 0 or 1).
reason: some databases did not have an internal boolean type and we originally wanted to make it possible to implement with lowest-common denominator RDBMS and no extra magic in the service.
today: extra magic in the service layer is all but unavoidable so if some database does not have boolean then that can be hidden from users
complication: TAP-1.0 and 1.1 declared these columns as datatype="int" and while TAP clients could be tweaked to deal with int and boolean, old/unmaintained clients would probably break... we would need to evaluate real world data to find out how much usage would actually be broken by such a change.
For historical reasons, the
tap_schema.columnstable has 3 columns that are intended to bebooleanbut are currentlyint: indexed, principal, std (values 0 or 1).reason: some databases did not have an internal boolean type and we originally wanted to make it possible to implement with lowest-common denominator RDBMS and no extra magic in the service.
today: extra magic in the service layer is all but unavoidable so if some database does not have boolean then that can be hidden from users
complication: TAP-1.0 and 1.1 declared these columns as
datatype="int"and while TAP clients could be tweaked to deal with int and boolean, old/unmaintained clients would probably break... we would need to evaluate real world data to find out how much usage would actually be broken by such a change.