# List of files to exclude from RAT, see RAT_README.txt for details
# this file
.rat-excludes*
# git files
.gitignore
.gitattributes
# test files
EXPECTED*
DIFF*
eqat*
qat*
.data*
sample_events*
FILTER*
lob_input*
romeo*
expected*
COMPARE*
expat*
regress*
regtest_*
montest_readme.txt
test-requirements.txt*
# protocol buffers
dtm*.*.pb.cc
protobuf*
# make
package.exclude.*
package.exclude
# readme files
readme*
README*
RAT_README.txt
readme.md
run_me*
# documentation and build info 
eclipse.*cproject*
eclipse.project
doxygen_tmudr.1.6.config
# Files needed by txn coprocesser - hbase
Hbase_server.skeleton.cpp*
__init__.py*
# SQL messages file
SqlciErrors.txt
# DCS config files
backup-masters
servers
# jquery
jquery-ui.css*
jquery-ui.js*
jquery-ui.structure.css*
jquery-ui.theme.css*
jquery-1.11.0.js*
demo*.css*
Sortingicons.psd*
# licenses
license*.txt*
LICENSE.rtf*
LICENSE-bsd2
LICENSE-bsd4
LICENSE-js
LICENSE-salesforce
# win generated
SetCertificateDirReg_os.vcxproj*
SetCertificateDirReg_os.vcxproj.*
SetCertificateDirReg_os.sln*
SetCertificateDirReg.rc*
odbccp32.props
UpdateDSN_os.sln
UpdateDSN*.vcxproj*
UpdateDSN*.vcxproj.*
UpdateDSN_os.vcxproj*
UpdateDSN_os.vcxproj.*
win64_installer_os.ism
odbcclient_os.sln
Drvr35*.rc*
Drvr35Res.rc
Drvr35Res.rc2
Drvr35*.vcxproj*
Drvr35*.vcxproj.*
Drvr35Adm_os.*
DrvMsg35.rc
Drvr35Res_os.rc*
Drvr35Msg_os.*
Drvr35Res_os.vcxproj*
Drvr35Res_os.vcxproj.*
drvr35*.rc*
drvr35*.vcxproj*
drvr35adm.*
TranslationDll.rc
TranslationDll*.vcxproj*
TranslationDll*.vcxproj.*
TranslationDll_os.vcxproj*
TranslationDll_os.vcxproj.*
drvr35.rc
drvr35*.vcxproj*
drvr35*.vcxproj.*
drvr35_os.rc
drvr35_os.vcxproj*
drvr35_os.vcxproj.*
openssl.props
version_drvr.cpp
TCPIPV4.*
TCPIPV6.*
TCPIPV4_os.*
TCPIPV6_os.*
.props*
.sln*
.ism*
resource.h*
resource.hm*
# BSD licensed files
swscanf.cpp
swsprintf.cpp
ulexer.h
# Compiler GUI files
usage.csv
Resource.qrc
#phoenix tests - MIT licensed from Salesforce
AlterTableTest.java
ArithmeticQueryTest.java
AutoCommitTest.java
BaseTest.java
BinaryRowKeyTest.java
CoalesceFunctionTest.java
CompareDecimalToLongTest.java
CreateTableTest.java
CustomEntityDataTest.java
DeleteRangeTest.java
DescColumnSortOrderTest.java
DistinctCountTest.java
ExecuteStatementsTest.java
ExtendedQueryExecTest.java
FunkyNamesTest.java
GroupByCaseTest.java
IndexTest.java
IsNullTest.java
KeyOnlyTest.java
MultiCfQueryExecTest.java
OrderByTest.java
ProductMetricsTest.java
QueryExecTest.java
QueryExecWithoutSCNTest.java
QueryPlanTest.java
ReadIsolationLevelTest.java
SaltedTableTest.java
SaltedTableUpsertSelectTest.java
SaltedTableVarLengthRowKeyTest.java
ServerExceptionTest.java
SkipScanQueryTest.java
StatementHintsTest.java
StddevTest.java
ToCharFunctionTest.java
ToNumberFunctionTest.java
TopNTest.java
UpsertBigValuesTest.java
UpsertSelectAutoCommitTest.java
UpsertSelectTest.java
UpsertValuesTest.java
VariableLengthPKTest.java




