protected void createSaltColumnSchema(String testName, boolean base64EncodeSalt) {
        JDBCDataSource ds = new JDBCDataSource();
        ds.setDatabase("jdbc:hsqldb:mem:" + name);
        ds.setUser("SA");
        ds.setPassword("");
        Connection conn = null;
        Statement sql = null;
        try {
            conn = ds.getConnection();
            sql = conn.createStatement();
            sql.executeUpdate(
                    "create table users (username varchar(20), password varchar(100), password_salt varchar(20))");
            Sha256Hash sha256Hash = new Sha256Hash(plainTextPassword, salt);
            String password = sha256Hash.toHex();
            String maybeBase64EncodedSalt = base64EncodeSalt ? Base64.encodeToString(CodecSupport.toBytes(salt)) : salt;
            sql.executeUpdate(
                    "insert into users values ('" + username + "', '" + password + "', '"
                            + maybeBase64EncodedSalt + "')");
        } catch (SQLException ex) {
            fail("Exception creating test database");
        } finally {
            JdbcUtils.closeStatement(sql);
            JdbcUtils.closeConnection(conn);
        }
        createRolesAndPermissions(ds);
        realmMap.get(testName).setDataSource(ds);
        dsMap.put(testName, ds);
    }
Creates a test database with a separate salt column in the users table. Sets the
DataSource of the realm associated with the test to a DataSource connected to the database.

@param testName          name of the test which is used as the key when saving the created realm in the realmMap
@param base64EncodeSalt  if true, the salt will be base64 encoded before it's stored in the database
core/src/test/java/org/apache/shiro/realm/jdbc/JDBCRealmTest.java