Repository navigation
feat(ios): open MongoDB connections - #3771
Merged
Merged
Conversation
…the server reads it
# Conflicts: # apple/Packages/TableProCore/Sources/TableProDatabase/ConnectionManager.swift # apple/Packages/TableProCore/Tests/TableProDatabaseTests/ConnectionManagerTestSupport.swift # apple/Packages/TableProCore/Tests/TableProDatabaseTests/ConnectionManagerTests.swift # apple/Plugins/ClickHouseDriverPlugin/ClickHouseParameterBinding.swift # apple/Plugins/ClickHouseDriverPlugin/ClickHousePlugin.swift # apple/Plugins/ClickHouseDriverTests/ClickHouseParameterBindingTests.swift # apple/Plugins/ClickHouseDriverTests/ClickHouseTLSConfigurationTests.swift # apple/TableProMobile/TableProMobile/Drivers/DriverRowWriting.swift # apple/TableProMobile/TableProMobile/Drivers/PluginBackedDriver.swift # apple/TableProMobile/TableProMobile/Helpers/RowInserter.swift # apple/TableProMobile/TableProMobile/Helpers/RowWriteBatch.swift # apple/TableProMobile/TableProMobile/Models/RowLocator.swift # apple/TableProMobile/TableProMobile/Platform/IOSDriverFactory.swift # apple/TableProMobile/TableProMobile/ViewModels/DataBrowserViewModel.swift # apple/TableProMobile/TableProMobile/ViewModels/RowDetailViewModel.swift # apple/TableProMobile/TableProMobile/Views/DataBrowserView.swift # apple/TableProMobile/TableProMobile/Views/InsertRowView.swift # apple/TableProMobile/TableProMobileTests/Drivers/ClickHouseOnIOSTests.swift # apple/TableProMobile/TableProMobileTests/Drivers/PluginBackedDriverTests.swift # apple/TableProMobile/TableProMobileTests/Helpers/RowWriteRoutingTests.swift # apple/TableProMobile/TableProMobileTests/Mocks/StubPluginDriver.swift # apple/TableProMobile/project.yml
…el until the request ends
This was referenced Oct 22, 2026
…illiseconds, ignore pipeline _ids
… a Stop reaches only its own request
…undo it while another window holds edits
…e, and search numbers by their text
…eld, not by the last read
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
PluginBackedDriver, with aCLibMongocbridge over theLibMongocandLibBsonxcframeworks published in libs-5 and built byapple/scripts/ios/build-libmongoc-ios.sh, and-lresolvfor SRV.DriverQueryBuildingdriver for each page, count and full value, so a collection pages, sorts, filters (every operator but LIKE patterns) and searches in MQL. From MongoDB 4.2 search also matches a number, a date or an ObjectId by its text. Rows edit field by field, insert and delete by_idthrough the plugin's own statement generator. A value the grid cuts is read whole from the stored document.MongoStatementParser,MongoStatementClassifierandJavaScriptStatementScannermoved into TableProSQLGrammar so both apps share one read proof. A proven read runs read-only in the shell, as on the Mac. Ausemoves the table list and the database picker with it.killSessionsper session.usein the editor moves the picker once its request returns, a stopped one included, and is undone while another window holds unsaved edits. Browsing, counts, value lookups and row writes run in the picker's database even while a script'susehas moved the shell.mongoHostswith Host and Port set to its first entry), Auth Database, Auth Mechanism, Replica Set and Use SRV Record, under the Mac's keys. Port 27017 by default.directConnection=trueis set, as on the Mac. Verify Identity keeps the CA check and drops only the loopback name check. Verify CA and Verify Identity without a CA file are refused with the reason: OpenSSL on iOS has no trust store.$external; a URI libmongoc refuses fails with its reason; a client key in its own file is joined with the certificate in a 0600 temporary file; each seed host carries its port once and an IPv6 address keeps its brackets; a save or delete whose_idtext reads as two values in the collection, such as an ObjectId and a string, or a double and a decimal, is refused instead of guessed, and an integer past 2^53 is never written as the double it rounds to._idis typed by every kind the collection's finds held, never by a pipeline's group keys or by the last read alone.INSERTexport, no "Write SQL" empty state, and a statement that is not a proven read reloads the table list.HostListEndpointmoved into TableProConnectionLibrary.speaksSQL:IOSDriverFactoryRefusalTests,MacOnlyImportRowTests,ConnectionListRowModelTests,ConnectionLibraryPublisherTests,MacOnlyConnectionFormTests,SQLDDLFallbackPolicyIOSTests,SQLDialectParityTests,SQLBuilderPaginationTests.Docs: TableProApp/docs#116 (draft).
Test plan
MongoDBOnIOSTests,MongoDBPluginConnectionTests,MongoDBHostListTests,MongoDBAmbiguousIdentityTests,MongoSessionKillsTests, the stopped-run case inConnectionCoordinatorCatalogTests,DataBrowserDriverBuiltTests,ConnectionFormViewModelMongoTests,MongoStatementClassifierTests,ConnectionTunnelErrorTests, Mongo cases in the TableProQuery tests, and the session database test inConnectionManagerTests.use, a connection naming no database, an SSH tunnel with an unreachable second seed, Stop during a write loop and during asleepbefore a write, an ObjectId and string_idpair refused, a date_idwith milliseconds and a long past 2^53 each edited in place, an edit after an aggregation on the collection, SRV through a tunnel refused.Screenshots
Before: a MongoDB connection opens on the Mac only.
After: MongoDB opens; another Mac-only engine keeps the alert.