HarperFast / HarperFast/harper
Describe response returns indexed: {} instead of indexed: true (regression since 4.6.0-alpha)
- Dominant language
- JavaScript
- Stars
- 89
- Forks
- 10
- Avg merge
- 2d 6h
- Merged PRs (30d)
- 200
Description
The `GET /TableName` table-describe response previously returned `indexed: true` for indexed attributes. As of 4.6.0-alpha it returns `indexed: {}` instead, which broke consumers that check `indexed === true`.
## Reproduction
Schema:
```graphql
type TableName @table @export {
id: ID @primaryKey
name: String
tag: String @indexed
}
```
`GET http://localhost:9926/TableName` returns:
```json
{
"attributes": [
{
"type": "String",
"name": "tag",
"indexed": {}, // ← regression
"attribute": "tag",
"indexNulls": true
}
]
}
```
Expected (and the behavior in 4.5.9):
```json
{ "indexed": true }
```
## Where it changed
Per the Jira description: behavior changed between 4.6.0-alpha.1 and 4.6.0-alpha.2 (alpha.1 couldn't install for the reporter).
## Likely cause
The describe path serializes the underlying index config object. In 4.5 the value was a boolean; in 4.6 it became an object (likely so future per-index options like `unique`, `nulls`, sort order could fit). When that internal change happened, the describe response wasn't given a backward-compat formatter — so the empty object leaks through.
## Acceptance criteria
- Describe response returns `indexed: true` for the default case (or `indexed: { ...options }` only when non-default index options apply).
- Consumers checking `indexed === true` work again.
- If the long-term answer is "always object", agree on the shape and document it as a breaking-change in the release notes.
---
Tracked in Jira: [CORE-2955](https://harperdb.atlassian.net/browse/CORE-2955)
🤖 Filed by Claude on behalf of Kris.
Contributor guide
Assessment
This issue has not been assessed yet.