astrodbtoolkit / astrodbtoolkit/astrodb_utils

find_source_in_db's spatial fallback search crashes on a completely empty Sources table

Open Beginner friendly
#265 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
0
Forks
10
PR merge metrics
No merged PRs in 30d

Description

**Where:** `astrodb_utils.sources.find_source_in_db` (reached via `ingest_source(..., search_db=True)`).

**What happened:** Ingesting the very first source into a brand-new, completely empty `Sources` table with `search_db=True` failed on every single row with `"None of [Index(['ra_deg', 'dec_deg'], dtype='str')] are in the [columns]"`. This comes from `find_source_in_db`'s coordinate-based `db.query_region(...)` fallback (reached because there's no name match yet), which appears to return a DataFrame with no columns at all when queried against a table with zero rows, so the subsequent `db_name_matches[ra_col_name]` access fails with a `KeyError`-style pandas error.

**Workaround (downstream, in a skill):** Set `search_db=False` for the first bulk ingest into a fresh table, since there's nothing to dedupe against yet. This isn't viable for any future incremental ingest into an already-populated table that still happens to hit this same zero-row-result path.

**Suggested change:** Guard the empty-table/empty-result case in `find_source_in_db` before indexing into `db_name_matches[ra_col_name]` — if `db.query_region(...)` returns zero rows (or a columnless DataFrame), treat it as "no spatial matches" and return/continue rather than raising a KeyError-shaped exception.

**Cross-filed:** Also filed against the [astrodb-bot](https://github.com/astrodbtoolkit/astrodb-bot) skills repo as [astrodbtoolkit/astrodb-bot#101](https://github.com/astrodbtoolkit/astrodb-bot/issues/101), which documents the same gotcha from the skill-user workaround side; this issue is for the actual `astrodb_utils` fix.

---
_Reported from a gotchas.md log filed by a skill user (2026-08-28)._

Contributor guide

No contributing guide indexed for this repository

Research direction

Start in astrodb_utils.sources.find_source_in_db, reached through ingest_source(..., search_db=True), and reproduce the first ingest against an empty Sources table. Trace the db.query_region(...) fallback and verify that an empty or columnless result is treated as having no spatial matches without raising; the existing empty-table ingest should then complete successfully.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
databases
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
88/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.