# Exception messages for the Oda Datamart Driver

connection_CONNECTION_PROPERTIES_MISSING=Connection properties are missing.
connection_CANNOT_OPEN_FLAT_FILE_DB_DIR=Cannot open CSV file database under directory: 

query_COMMAND_IS_EMPTY=Query command is empty.
query_DO_NOT_SUPPORT_CROSS_TABLE_QUERY=Cross-table query is not supported.
query_COMMAND_NOT_VALID=Query command is not valid.
query_ARGUMENT_ERROR=The argument should be either 'NAME' or 'TYPE'.
query_IO_EXCEPTION=An I/O Exception occurred when reading the file.
query_SOURCE_DATA_ERROR=Duplicate column names found in source data.
query_COLUMN_NAME_ERROR=Column name error
query_INVALID_FLAT_FILE=The flatfile data source in not valid.
resultSet_COLUMN_NOT_FOUND=Column not found:
resultSet_CURSOR_HAS_NOT_BEEN_INITIALIZED=Cursor has not been initialized yet.

resultSetMetaData_INVALID_COLUMN_INDEX=Invalid column index:

dataTypes_TYPE_NAME_INVALID=Invalid type name:

dataSetMetaData_PRODUCT_NAME=DTP ODA Flat File Data Source Provider

common_ARGUMENT_CANNOT_BE_NULL=Arguments cannot be null.
common_CONNECTION_HAS_NOT_OPENED=Connection is not open.
common_CANNOT_FIND_COLUMN=Cannot find any columns.
query_streamClosed=Stream closed
query_invalidTableName=Invalid table name:
