Previously:
- There is confusion between nameWithOwner and queryLanguage. Both are strings.
Between
runResult, err := codeql.RunQuery(databasePath, job.QueryLanguage, queryPackPath, tempDir)
(agent.go l205)
and
func RunQuery(database string, nwo string, queryPackPath string, tempDir string) (*RunQueryResult, error)
QueryLanguage is suddenly name with owner in the code.
Added some debugging, the value is the query language in the two places it gets used:
server | 2024/07/03 18:30:15 DEBUG Processed request info location="{Data:map[bucket:packs key:1]}" language=cpp
...
agent | 2024/07/03 18:30:15 DEBUG XX: is nwo a name/owner, or the original callers' queryLanguage? nwo=cpp
...
agent | 2024/07/03 18:30:19 DEBUG XX: 2: is nwo a name/owner, or the original callers' queryLanguage? nwo=cpp
Changes:
- Introduce explicit type QueryLanguage = string and update code to clarify
- inline trivial function
This commit simply splits the interfaces but introduces no new structs
- Introduce the QueryPackStore, mrvacommander/pkg/qpstore
- Introduce the CodeQL database store, pkg/qldbstore/interfaces.go
All access is/will be through interfaces accessed through these structs.
This introduces several distinct storage units:
+ DB for server state
+ DB for codeql databases
+ query pack store
The steps for manually creating needed databases are in the README
Several approaches of normalizing json were tried and ultimately found
impractical at this point.
Using a hybrid of tables and json is the current approach; this may be
further normalized later.