Repository navigation
feat(plugin-influxdb): add an InfluxDB 2 and 3 driver over HTTP - #3976
Merged
Merged
Conversation
SQL and InfluxQL on 3.x, Flux and InfluxQL on 2.x, chosen from the server version and the statement. Read-only grid with filters, paging and counts. Flux is tiered for Safe Mode.
datlechin
enabled auto-merge (squash)
November 1, 2026 09:10
# Conflicts: # apple/TablePro/Core/Plugins/PluginMetadataRegistry+RegistryDefaults.swift # apple/TablePro/Models/Connection/DatabaseType.swift # apple/TablePro/Resources/Localizable.xcstrings # apple/TableProTests/Core/Plugins/PluginMetadataRegistryTypeCountTests.swift
…nsport after review
datlechin
disabled auto-merge
November 1, 2026 15:07
…e InfluxQL holding a second statement
datlechin
enabled auto-merge (squash)
November 1, 2026 15:58
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
InfluxDBDriverPluginfor InfluxDB 2.x and 3.x over HTTP, no new dependency.TableProInfluxDBCoreholds the socket-free logic: routing, the Flux reading, requests, decoders, grid statements and the catalog. The app links it too, so Safe Mode and the driver route a statement by one rule.X-Influxdb-Version, else the 3.x/pingbody. A 1.x server is refused at connect./api/v3; 2.x runs Flux through/api/v2/queryand InfluxQL through/query.db+rp), so atelegraf/weeklybucket or a made mapping reads correctly./pingon 3.x, one bucket on 2.x. The health ping is the same single request.-- sql,-- influxqlor// flux(either comment style) picks the language and is blanked before sending. Unmarked text is guessed; the grid's own statements carry the marker.;anywhere but its end is refused, since 2.x/queryruns every statement it gets./api/v2/query/ast) before running it, and refuses one the server reads as writing or reaching outside where the gate's reading did not.;made 2.x dropqand answer{}.generateRowWritesrefuses every change, and InfluxDB is inSQLDDLFallbackPolicy.1is quoted and a float is not. The schema is read again when a filter names a column it lacks./,\, controls and non-ASCII as hex escapes, so a filter value cannot end the literal or add a statement.SHOW DATABASESruns without.toorwideTo; any other import (http,sql,experimental/influxdb,monitor,secrets, notification packages) writes and reaches outside, and so does a package used as a value. Ahostorfileargument, plain, quoted or shorthand, reaches outside. The Flux lexer knows multi-line regexes,${}interpolation, durations andpkg["member"], and an unclosed literal fails closed.CatalogChangeClassifier).//comments, ANSI as the alternative reading.close()invalidates with, and refuses redirects throughPluginRedirectRefusingDelegate.Test plan
swift test --filter TableProInfluxDBCoreTests: 126 tests, including the server's AST for nine scripts.SQLLexicalReadingsTests(InfluxDB profile), and the hostedQueryClassifierFluxTests,CatalogChangeClassifierTests, everyQueryClassifier*suite and the MCP statement gate suites: 290 pass.scripts/probes/check-influxdb.shagainstinfluxdb:2(v2.9.1) and twoinfluxdb:3-core(3.12.2) servers: 115 checks pass, including the refused;statement, a grid filter that tried toDROPa scratch measurement, a Flux write hidden from the lexer, and a read-only token running Flux. The earlier driver fails it on the external-table type, the key column, schema typing, empty-page columns and the// influxqlmarker.verify.sh build,linton every changed Swift file,localization.py pluginsandextracted.verify.sh pluginsbuilt the InfluxDB plugin; the run stopped at DamengDriver, whose native bridge this Mac lacks.Docs: TableProApp/docs#153, to merge after this one.
Fixes #2477