CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-mariadb-jdbc--mariadb-java-client

JDBC 4.2 compatible driver providing comprehensive database connectivity for MariaDB and MySQL servers

Pending
Overview
Eval results
Files

configuration.mddocs/

Configuration Management

Comprehensive configuration system with 100+ options for connection behavior, performance tuning, security settings, and high availability configuration.

Capabilities

Configuration Parser

Central configuration management for parsing JDBC URLs and properties into a Configuration object.

/**
 * Configuration management for MariaDB connections
 */
public class Configuration {
  /**
   * Parse JDBC URL and properties into Configuration
   * @param url JDBC connection URL
   * @param props Additional properties
   * @return Configuration instance or null if URL not supported
   * @throws SQLException if parsing fails
   */
  public static Configuration parse(String url, Properties props) throws SQLException;
  
  // Basic connection properties
  public String user();
  public String password();
  public String database();
  public List<HostAddress> addresses();
  public HaMode haMode();
  
  // SSL/TLS configuration
  public SslMode sslMode();
  public String serverSslCert();
  public String clientSslCert();
  public String clientSslKey();
  public String keyStore();
  public String keyStorePassword();
  public String keyStoreType();
  public String trustStore();
  public String trustStorePassword();
  public String trustStoreType();
  public String enabledSslCipherSuites();
  public String enabledSslProtocolSuites();
  
  // Connection behavior
  public int connectTimeout();
  public int socketTimeout();
  public boolean tcpKeepAlive();
  public int tcpAbortiveClose();
  public String pipe();
  public String localSocket();
  public boolean tcpRcvBuf();
  public boolean tcpSndBuf();
  public boolean tcpNoDelay();
  
  // Protocol options
  public boolean allowMultiQueries();
  public boolean useCompression();
  public boolean allowLocalInfile();
  public boolean useBulkStmts();
  public boolean disablePipeline();
  public boolean autocommit();
  
  // Prepared statement options
  public boolean cachePrepStmts();
  public int prepStmtCacheSize();
  public int prepStmtCacheSqlLimit();
  public boolean useServerPrepStmts();
  public boolean useAffectedRows();
  
  // Connection pool options
  public boolean pool();
  public String poolName();
  public int maxPoolSize();
  public int minPoolSize();
  public int maxIdleTime();
  public boolean registerJmxPool();
  public int poolValidMinDelay();
  public boolean useResetConnection();
  
  // Metadata options
  public boolean blankTableNameMeta();
  public boolean dumpQueriesOnException();
  public boolean includeInnodbStatusInDeadlockExceptions();
  public boolean includeThreadDumpInDeadlockExceptions();
  public String servicePrincipalName();
  public String defaultFetchSize();
  public boolean tinyInt1isBit();
  public boolean yearIsDateType();
  public boolean createDatabaseIfNotExist();
  
  // High availability options
  public int retriesAllDown();
  public String galeraAllowedState();
  public boolean transactionReplay();
  public int transactionReplaySize();
  public String geometryDefaultType();
  public String restrictedAuth();
  public String initSql();
  
  // Authentication and security
  public String credentialType();
  public String sessionVariables();
  public String connectionAttributes();
  public boolean useBatchMultiSend();
  public boolean useBatchMultiSendNumber();
  public boolean usePipelineAuth();
  public boolean enableSkipMeta();
  public boolean preserveInstants();ы
  public boolean trackSchema();
}

Usage Examples:

// Parse configuration from URL and properties
String url = "jdbc:mariadb://localhost:3306/mydb?useCompression=true&cachePrepStmts=true";
Properties props = new Properties();
props.setProperty("user", "myuser");
props.setProperty("password", "mypass");
props.setProperty("connectTimeout", "5000");

Configuration config = Configuration.parse(url, props);

// Access configuration values
String user = config.user();
boolean compression = config.useCompression();
int timeout = config.connectTimeout();
List<HostAddress> hosts = config.addresses();

Basic Connection Configuration

Core connection settings for establishing database connections.

// Basic connection URL
"jdbc:mariadb://localhost:3306/mydb"

// With basic authentication
"jdbc:mariadb://user:password@localhost:3306/mydb"

// Multiple hosts for high availability
"jdbc:mariadb://host1:3306,host2:3306,host3:3306/mydb"

// Connection timeout settings
"jdbc:mariadb://localhost:3306/mydb?connectTimeout=5000&socketTimeout=30000"

SSL/TLS Configuration

Comprehensive SSL/TLS security configuration options.

// SSL configuration examples
// Disable SSL (not recommended for production)
"jdbc:mariadb://localhost:3306/mydb?sslMode=DISABLE"

// Enable SSL with trust mode (encryption only)
"jdbc:mariadb://localhost:3306/mydb?sslMode=TRUST"

// Verify certificate authority
"jdbc:mariadb://localhost:3306/mydb?sslMode=VERIFY_CA&serverSslCert=/path/to/ca-cert.pem"

// Full certificate and hostname verification
"jdbc:mariadb://localhost:3306/mydb?sslMode=VERIFY_FULL&trustStore=/path/to/truststore.jks&trustStorePassword=secret"

// Client certificate authentication
"jdbc:mariadb://localhost:3306/mydb?sslMode=VERIFY_FULL&" +
"keyStore=/path/to/keystore.jks&keyStorePassword=secret&" +
"trustStore=/path/to/truststore.jks&trustStorePassword=secret"

// Custom cipher suites and protocols
"jdbc:mariadb://localhost:3306/mydb?sslMode=VERIFY_FULL&" +
"enabledSslCipherSuites=TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256&" +
"enabledSslProtocolSuites=TLSv1.2,TLSv1.3"

Performance Configuration

Settings for optimizing connection and query performance.

// Compression and bulk operations
"jdbc:mariadb://localhost:3306/mydb?useCompression=true&useBulkStmts=true"

// Prepared statement caching
"jdbc:mariadb://localhost:3306/mydb?cachePrepStmts=true&prepStmtCacheSize=250&prepStmtCacheSqlLimit=2048"

// Server-side prepared statements
"jdbc:mariadb://localhost:3306/mydb?useServerPrepStmts=true"

// TCP socket optimization
"jdbc:mariadb://localhost:3306/mydb?tcpKeepAlive=true&tcpNoDelay=true"

// Pipeline and batch optimizations
"jdbc:mariadb://localhost:3306/mydb?usePipelineAuth=true&useBatchMultiSend=true&disablePipeline=false"

// Connection reuse
"jdbc:mariadb://localhost:3306/mydb?useResetConnection=true"

Connection Pool Configuration

Built-in connection pooling configuration options.

// Enable connection pooling
"jdbc:mariadb://localhost:3306/mydb?pool=true"

// Full pool configuration
"jdbc:mariadb://localhost:3306/mydb?" +
"pool=true&" +                        // Enable pooling
"poolName=MyApplicationPool&" +       // Pool name for monitoring
"maxPoolSize=25&" +                   // Maximum connections
"minPoolSize=5&" +                    // Minimum connections
"maxIdleTime=600&" +                  // Max idle time in seconds
"poolValidMinDelay=1000&" +           // Validation delay in ms
"registerJmxPool=true"                // Enable JMX monitoring

High Availability Configuration

Configuration for multi-host deployments and failover scenarios.

// Replication setup
"jdbc:mariadb:replication://primary:3306,replica1:3306,replica2:3306/mydb"

// Load balancing
"jdbc:mariadb:loadbalance://host1:3306,host2:3306,host3:3306/mydb"

// Sequential failover
"jdbc:mariadb:sequential://host1:3306,host2:3306,host3:3306/mydb"

// Advanced host specification with types
"jdbc:mariadb://address=(host=primary)(port=3306)(type=primary)," +
"address=(host=replica1)(port=3306)(type=replica)," +
"address=(host=replica2)(port=3306)(type=replica)/mydb"

// Failover configuration
"jdbc:mariadb:replication://primary:3306,replica:3306/mydb?" +
"retriesAllDown=5&" +                 // Retry attempts when all hosts down
"galeraAllowedState=4&" +             // Galera cluster state requirements
"transactionReplay=true&" +           // Enable transaction replay on failover
"transactionReplaySize=64"            // Transaction replay buffer size

Authentication Configuration

Various authentication methods and credential management.

// Environment variable credentials
"jdbc:mariadb://localhost:3306/mydb?credentialType=ENV"

// AWS IAM authentication
"jdbc:mariadb://rds-endpoint:3306/mydb?credentialType=AWS_IAM"

// Properties file credentials
"jdbc:mariadb://localhost:3306/mydb?credentialType=PROPERTY&propertiesFile=/path/to/creds.properties"

// Restricted authentication plugins
"jdbc:mariadb://localhost:3306/mydb?restrictedAuth=mysql_native_password,caching_sha2_password"

// Session variables
"jdbc:mariadb://localhost:3306/mydb?sessionVariables=sql_mode='STRICT_TRANS_TABLES,NO_ZERO_DATE'"

// Connection attributes for monitoring
"jdbc:mariadb://localhost:3306/mydb?connectionAttributes=program_name:MyApp,version:1.0"

Special Connection Types

Configuration for non-standard connection methods.

// Windows named pipe
"jdbc:mariadb://address=(pipe=\\\\.\\pipe\\mysql)/mydb"

// Unix domain socket
"jdbc:mariadb://address=(localSocket=/var/run/mysqld/mysqld.sock)/mydb"

// Multiple socket files for load balancing
"jdbc:mariadb://address=(localSocket=/var/run/mysqld/mysqld1.sock)," +
"address=(localSocket=/var/run/mysqld/mysqld2.sock)/mydb"

Metadata and Compatibility Configuration

Settings for metadata behavior and compatibility with different MySQL versions.

// Metadata configuration
"jdbc:mariadb://localhost:3306/mydb?" +
"blankTableNameMeta=true&" +          // Return blank table names in metadata
"tinyInt1isBit=true&" +               // Treat TINYINT(1) as boolean
"yearIsDateType=true&" +              // Treat YEAR as Date type
"dumpQueriesOnException=true&" +      // Include queries in exception messages
"includeInnodbStatusInDeadlockExceptions=true"  // Include InnoDB status in deadlock exceptions

// Geometry type handling
"jdbc:mariadb://localhost:3306/mydb?geometryDefaultType=default"

// Database creation
"jdbc:mariadb://localhost:3306/mydb?createDatabaseIfNotExist=true"

// Schema tracking
"jdbc:mariadb://localhost:3306/mydb?trackSchema=true"

Development and Debugging Configuration

Configuration options useful for development and troubleshooting.

// Debug and logging options
"jdbc:mariadb://localhost:3306/mydb?" +
"dumpQueriesOnException=true&" +      // Show queries in exceptions
"includeInnodbStatusInDeadlockExceptions=true&" +  // Detailed deadlock info
"includeThreadDumpInDeadlockExceptions=true&" +    // Thread dump on deadlock
"log=true&" +                         // Enable query logging
"profileSql=true"                     // Enable SQL profiling

Configuration Best Practices

Production Configuration

// Recommended production configuration
String productionUrl = "jdbc:mariadb:replication://primary:3306,replica:3306/mydb?" +
    // Security
    "sslMode=VERIFY_FULL&" +
    "trustStore=/path/to/truststore.jks&" +
    "trustStorePassword=secret&" +
    
    // Connection management
    "connectTimeout=5000&" +
    "socketTimeout=30000&" +
    "tcpKeepAlive=true&" +
    
    // Performance
    "useCompression=true&" +
    "cachePrepStmts=true&" +
    "prepStmtCacheSize=250&" +
    "useServerPrepStmts=true&" +
    "useBulkStmts=true&" +
    
    // High availability
    "retriesAllDown=3&" +
    "transactionReplay=true&" +
    
    // Connection pooling
    "pool=true&" +
    "maxPoolSize=20&" +
    "minPoolSize=5&" +
    "maxIdleTime=600&" +
    "registerJmxPool=true";

Development Configuration

// Development configuration with debugging
String devUrl = "jdbc:mariadb://localhost:3306/mydb?" +
    // Basic auth (not for production)
    "user=devuser&password=devpass&" +
    
    // Debugging
    "dumpQueriesOnException=true&" +
    "includeInnodbStatusInDeadlockExceptions=true&" +
    
    // Performance (relaxed for debugging)
    "connectTimeout=10000&" +
    "socketTimeout=60000&" +
    
    // Create database if needed
    "createDatabaseIfNotExist=true";

Install with Tessl CLI

npx tessl i tessl/maven-org-mariadb-jdbc--mariadb-java-client

docs

configuration.md

connections.md

data-sources.md

data-types.md

high-availability.md

index.md

pooling.md

security.md

statements.md

tile.json