blob: afbd5c58fabd5918632fd7c683475283840297a1 [file] [log] [blame]
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2012-2014 Monty Program Ab
// Copyright (c) 2015-2021 MariaDB Corporation Ab
package org.mariadb.jdbc.integration;
import static org.junit.jupiter.api.Assertions.*;
import java.sql.*;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
public class ConfigurationTest extends Common {
@BeforeAll
public static void begin() throws SQLException {
drop();
Statement stmt = sharedConn.createStatement();
stmt.execute(
"CREATE TABLE testSessionVariable(id int not null primary key auto_increment, test"
+ " varchar(10))");
stmt.execute("FLUSH TABLES");
}
@AfterAll
public static void drop() throws SQLException {
Statement stmt = sharedConn.createStatement();
stmt.execute("DROP TABLE IF EXISTS testSessionVariable");
}
@Test
public void testSessionVariable() throws SQLException {
try (Connection connection =
createCon("sessionVariables=auto_increment_increment=2&allowMultiQueries=true")) {
Statement stmt = connection.createStatement();
stmt.execute(
"INSERT INTO testSessionVariable (test) values ('bb'),('cc');"
+ "INSERT INTO testSessionVariable (test) values ('dd'),('ee')",
Statement.RETURN_GENERATED_KEYS);
ResultSet rs = stmt.getGeneratedKeys();
assertTrue(rs.next());
assertEquals(1, rs.getInt(1));
assertTrue(rs.next());
if (!"galera".equals(System.getenv("srv"))) {
assertEquals(5, rs.getInt(1));
}
assertFalse(rs.next());
assertFalse(stmt.getMoreResults());
rs.clearWarnings();
}
// Xpand doesn't support session_track_system_variables
if (!isXpand()) {
try (Connection connection =
createCon("sessionVariables=session_track_system_variables='some\\';f,\"ff'")) {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT @@session_track_system_variables");
assertTrue(rs.next());
}
try (Connection connection =
createCon("sessionVariables=session_track_system_variables=\"some\\\";f,'ff'\"")) {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT @@session_track_system_variables");
assertTrue(rs.next());
}
}
}
@Test
public void connectionAttributes() throws SQLException {
// xpand doesn't support @@performance_schema variable
Assumptions.assumeTrue(!"maxscale".equals(System.getenv("srv")) && !isXpand());
try (org.mariadb.jdbc.Connection conn =
createCon("&connectionAttributes=test:test1,test2:test2Val,test3")) {
Statement stmt = conn.createStatement();
ResultSet rs1 = stmt.executeQuery("SELECT @@performance_schema");
rs1.next();
Assumptions.assumeTrue("1".equals(rs1.getString(1)));
ResultSet rs =
stmt.executeQuery(
"SELECT * from performance_schema.session_connect_attrs where processlist_id="
+ conn.getThreadId()
+ " AND ATTR_NAME like 'test%'");
assertTrue(rs.next());
assertEquals("test1", rs.getString("ATTR_VALUE"));
assertTrue(rs.next());
assertEquals("test2Val", rs.getString("ATTR_VALUE"));
assertTrue(rs.next());
assertNull(rs.getString("ATTR_VALUE"));
}
}
@Test
public void useMysqlMetadata() throws SQLException {
assertEquals(
isMariaDBServer() ? "MariaDB" : "MySQL", sharedConn.getMetaData().getDatabaseProductName());
try (org.mariadb.jdbc.Connection conn = createCon("&useMysqlMetadata=true")) {
assertEquals("MySQL", conn.getMetaData().getDatabaseProductName());
}
}
}