@Override
    public void execute(final ConnectionSession connectionSession) throws SQLException {
        Map<String, String> sessionVariables = extractSessionVariables();
        validateSessionVariables(sessionVariables.keySet());
        new CharsetSetExecutor(databaseType, connectionSession).set(sessionVariables);
        new SessionVariableRecordExecutor(databaseType, connectionSession).recordVariable(sessionVariables);
        executeSetGlobalVariablesIfPresent(connectionSession);
    }
@Test
    void assertSetUnknownSystemVariable() {
        VariableAssignSegment unknownVariableAssignSegment = new VariableAssignSegment();
        unknownVariableAssignSegment.setVariable(new VariableSegment(0, 0, "unknown_variable"));
        unknownVariableAssignSegment.setAssignValue("");
        SetStatement setStatement = new MySQLSetStatement();
        setStatement.getVariableAssigns().add(unknownVariableAssignSegment);
        MySQLSetVariableAdminExecutor executor = new MySQLSetVariableAdminExecutor(setStatement);
        assertThrows(UnknownSystemVariableException.class, () -> executor.execute(mock(ConnectionSession.class)));
    }