Composite writes
Up to 25 DML operations batched into a single HTTP round-trip via the Composite API.
01 · TRANSLATOR
Varelma is a pure-Java JDBC driver that parses the SQL you already write, plans the joins Salesforce can’t express, and emits native SOQL over the REST API — inside your own environment, with zero data copied and zero runtime dependencies.
Driver class com.varelma.salesforce.jdbc.SalesforceDriver
SELECT a.Name, c.FirstName, c.LastName
FROM Account a JOIN Contact c ON c.AccountId = a.Id ON matches child.FK = parent.Id → relationship "Account" SELECT Account.Name, FirstName, LastName FROM Contact POST /services/data/v62.0/query · HTTP/2 · gzip 02 · THE PROBLEM
Every option asks you to give something up — your SQL, a copy of your data, or a line item that grows with your headcount. Varelma removes all three.
No arbitrary joins, no UNION, no CASE. Every existing report, ORM, and BI query has to be rewritten by hand against a dialect only Salesforce speaks.
Warehouse pipelines duplicate regulated records into a second system on a schedule, adding latency, storage, and a fresh surface to secure and audit.
Per-developer, per-server, per-core, per-connection — production licensing is quote-only, and the meter never stops running as you grow.
03 · HOW IT WORKS
The driver is a compiler front-end for Salesforce. Tokens become an AST, the AST becomes SOQL, and anything Salesforce can’t evaluate is finished in your own JVM — never by copying the table out.
04 · CAPABILITIES
The honest split. Anything on the left is compiled to SOQL and executed by Salesforce. Anything on the right is fetched once and finished locally — correct results either way.
Already fluent in SOQL? Prefix a statement with /* soql */ and the SQL parser steps aside — the raw SOQL is sent straight to the REST API, untouched. Full control when you want it, translation when you don’t.
Up to 25 DML operations batched into a single HTTP round-trip via the Composite API.
Opt-in with useBulkApi=true; routes automatically once a change exceeds bulkThreshold (default 200).
CREATE / ALTER / DROP TABLE via the Tooling API. CALL proc(…) maps to Apex REST. (No RENAME COLUMN — a Salesforce limit.)
MERGE INTO … KEY (…) and UPSERT … ON keyField map to the Salesforce upsert endpoint.
05 · WIRING
One JAR on the classpath, one driver class, one URL. It registers through java.sql.DriverManager and drops into any JDBC tool or pooled data source.
com.varelma.salesforce.jdbc.SalesforceDriver.jdbc:salesforce:{host}.authFlow, and browse the virtual INFORMATION_SCHEMA. DataGrip, DbVisualizer and SQuirreL SQL follow the same three steps.06 · SECURITY & TRUST
The driver is a library on your classpath. Traffic goes straight from your process to Salesforce — there is no Varelma service between you and your data.
A single JAR in your JVM. No proxy, no hosted gateway, nothing of ours in the request path.
Password, JWT Bearer, and client credentials — selected by the authFlow property. Automatic re-auth on 401.
Any file ending .enc is decrypted with a key derived as SHA-256(VAULT_KEY). Plain JSON otherwise.
Every request goes out as HTTP/2 with gzip, straight from your process to your Salesforce host.
Zero runtime dependencies. Only java.sql, java.net.http and java.security from the JDK — no transitive dependency surface to scan.
The JAR is delivered to you directly and signed — not pulled from a public registry — and runs entirely inside your environment with nothing phoning home.
07 · TOOLS IT DROPS INTO
No connector to install, no adapter to maintain. Register the driver and Salesforce shows up as just another database.
08 · COMPARISON
We compare how each option is licensed — not prices. The row that matters is whether the meter ever stops.
| Varelma | CData | Progress DataDirect | Salesforce Connect | Free OSS drivers | |
|---|---|---|---|---|---|
| Licensing model | Flat, per company | Subscription — per developer & per server | Quote-only — per CPU core | Per connection | Open-source, often unmaintained |
| Runtime dependencies | Zero | Not disclosed | Not disclosed | Not disclosed | Real dependency trees |
| Read & write | Read + write — DML, DDL, upsert | Not disclosed | Not disclosed | Not disclosed | Largely read-only |
| Ownership / term | Perpetual — you hold the asset | Term subscription | Not disclosed | Per connection | Self-supported |
| Metering | None | Per seat / per server | Per core | Per connection | None |
Competitor terms as publicly described — models, not prices. Confirm current terms with each vendor.
09 · LICENSING
No per-seat, no per-core, no per-connection, no metering. One licence for the whole company, forever.
10 · FAQ
The JAR is delivered to you directly and signed — it is not pulled from a public registry. Once it arrives it is your artifact: it runs entirely inside your environment, with no Varelma service in the data path and no licence server to phone home to.
One flat, perpetual, per-company license. Unlimited users, cores, and servers — no per-seat or per-core metering. The license itself never expires.
Your license is perpetual, and the driver runs entirely inside your environment — there is no Varelma service in the data path and no licence server to phone home to. There is nothing for us to switch off. The JAR you hold keeps working regardless of what happens to us.
They never leave your environment — the driver runs in your JVM and talks directly to Salesforce. Choose password, JWT Bearer, or client-credentials OAuth. Secrets can be encrypted at rest with an AES-256-GCM vault whose key is derived from your VAULT_KEY environment variable. Security documentation is exchanged directly with us, not through this page.
We are honest about the edges. jdbcCompliant() returns false. There are no window functions, no CTEs (WITH), no correlated subqueries, and no derived tables in FROM. DDL is non-transactional. Threading follows the JDBC contract that pooled, multi-threaded deployments require: Connection is fully thread-safe — pool evictors may call isValid(), close(), or abort() concurrently with application threads — while Statement and ResultSet are single-thread-use with cross-thread close() and cancel(), and DatabaseMetaData is safe for concurrent metadata access. This is version 0.1.0 and not yet on Maven Central.
You send the short form below. We contact you on your preferred channel — email or phone — to agree terms and collect the legal entity, billing/PO, and security documentation. Then you receive the driver, signed, together with your licence. No credit-card checkout — terms are agreed directly.
11 · CONTACT US
This form does one thing: tells us who to contact and how you’d prefer we reach you. Everything sensitive is collected directly, not here.
A Varelma engineer will be in touch on your preferred channel — email or phone — to agree terms and take it from there. Nothing sensitive was captured on this page.