<commit_before>package com.github.dyna4jdbc.internal.common.jdbc.generic;

import java.io.InputStream;
import java.io.Reader;
import java.math.BigDecimal;
import java.net.URL;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import com.github.dyna4jdbc.internal.JDBCError;
import com.github.dyna4jdbc.internal.common.jdbc.base.AbstractResultSet;

public class EmptyResultSet extends AbstractResultSet<List<String>> implements ResultSet{

	public EmptyResultSet() {
		super(new LinkedList<>(), null);
	}

	@Override
	public boolean wasNull() throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public String getString(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public boolean getBoolean(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public byte getByte(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public short getShort(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public int getInt(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public long getLong(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public float getFloat(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public double getDouble(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public BigDecimal getBigDecimal(int columnIndex, int scale) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public byte[] getBytes(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Date getDate(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Time getTime(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Timestamp getTimestamp(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public InputStream getAsciiStream(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public InputStream getUnicodeStream(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public InputStream getBinaryStream(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public String getString(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public boolean getBoolean(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public byte getByte(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public short getShort(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public int getInt(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public long getLong(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public float getFloat(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public double getDouble(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public BigDecimal getBigDecimal(String columnLabel, int scale) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public byte[] getBytes(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Date getDate(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Time getTime(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Timestamp getTimestamp(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public InputStream getAsciiStream(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public InputStream getUnicodeStream(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public InputStream getBinaryStream(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public String getCursorName() throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public ResultSetMetaData getMetaData() throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Object getObject(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Object getObject(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public int findColumn(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Reader getCharacterStream(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Reader getCharacterStream(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public BigDecimal getBigDecimal(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}<commit_msg>EmptyResultSet now returns an EmptyResultSetMetaData<commit_after>package com.github.dyna4jdbc.internal.common.jdbc.generic;

import java.io.InputStream;
import java.io.Reader;
import java.math.BigDecimal;
import java.net.URL;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import com.github.dyna4jdbc.internal.JDBCError;
import com.github.dyna4jdbc.internal.common.jdbc.base.AbstractResultSet;

public class EmptyResultSet extends AbstractResultSet<List<String>> implements ResultSet{

	public EmptyResultSet() {
		super(new LinkedList<>(), null);
	}

	@Override
	public boolean wasNull() throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public String getString(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public boolean getBoolean(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public byte getByte(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public short getShort(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public int getInt(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public long getLong(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public float getFloat(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public double getDouble(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public BigDecimal getBigDecimal(int columnIndex, int scale) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public byte[] getBytes(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Date getDate(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Time getTime(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Timestamp getTimestamp(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public InputStream getAsciiStream(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public InputStream getUnicodeStream(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public InputStream getBinaryStream(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public String getString(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public boolean getBoolean(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public byte getByte(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public short getShort(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public int getInt(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public long getLong(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public float getFloat(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public double getDouble(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public BigDecimal getBigDecimal(String columnLabel, int scale) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public byte[] getBytes(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Date getDate(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Time getTime(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Timestamp getTimestamp(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public InputStream getAsciiStream(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public InputStream getUnicodeStream(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public InputStream getBinaryStream(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public String getCursorName() throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public ResultSetMetaData getMetaData() throws SQLException {
		return new EmptyResultSetMetaData();
	}

	@Override
	public Object getObject(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Object getObject(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public int findColumn(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Reader getCharacterStream(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public Reader getCharacterStream(String columnLabel) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}

	@Override
	public BigDecimal getBigDecimal(int columnIndex) throws SQLException {
		throw JDBCError.JDBC_API_USAGE_CALLER_ERROR.raiseSQLException("Result set is empty!");
	}
{'fraction_non_alphanumeric': 0.0800077614643296, 'fraction_numerical': 0.0003880732164801759, 'mean_word_length': 6.7040358744394615, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7491391', 'n_tokens_mistral': 5030, 'n_tokens_neox': 4684, 'n_words': 1080}