Release Notes - Sqoop - Version 1.4.7

** Sub-task
    * [SQOOP-956] - Create a winpkg target for Sqoop to create a Winows installable Sqoop package
    * [SQOOP-961] - Update Sqoop documentation for Windows changes
    * [SQOOP-2643] - Incremental imports fail in Sqoop when run using Teradata JDBC driver
    * [SQOOP-2644] - Sqoop Export does not offer upserts from HDFS to Teradata DB
    * [SQOOP-2937] - Sqoop mainframe module does not support sequential data sets, GDG
    * [SQOOP-2938] - Mainframe import module extension to support data sets on tape
    * [SQOOP-3055] - SQOOP-3055 MYSQL tests are failing due to the tests ignoring specified username, password and dbname, trying to connect to specified host using "currentUser"
    * [SQOOP-3056] - Add ant ivy report target
    * [SQOOP-3057] - Fix failing 3rd party Oracle tests
    * [SQOOP-3091] - Clean up expected exception logic in tests - part I.
    * [SQOOP-3092] - Clean up expected exception logic in tests - part II.
    * [SQOOP-3141] - Fix Java7 compile issue (getTypeName is only available after Java 8)
    * [SQOOP-3142] - Restore fail messages removed in SQOOP-3092
    * [SQOOP-3143] - Restore fail messages removed in SQOOP-3091

** Bug
    * [SQOOP-890] - ClassWriter Generates setField Casts Based on the Output Type, not the Input Type
    * [SQOOP-1198] - Make Sqoop build aware of the protobuf library
    * [SQOOP-1252] - Sqoop import from db2. Schema of import not in expected format.
    * [SQOOP-1289] - Sqoop hbase-bulkload does not work with composite key
    * [SQOOP-1295] - Sqoop Merge supports only one column merge key. Merge fails if source table as composite key
    * [SQOOP-1301] - 'run' method in Sqoop.java is not thread-safe
    * [SQOOP-1347] - High performance oracle connector should depend on --direct flag only to disable/enable feature
    * [SQOOP-1369] - Avro export ignores --columns option
    * [SQOOP-1493] - Add ability to import/export true decimal in Avro instead of serializing it to String
    * [SQOOP-1600] - Exception when import data using Data Connector for Oracle with TIMESTAMP column type to Parquet files
    * [SQOOP-1735] - Sqoop job fails (but not 'sqoop import') if --create-hive-table is set and the hive table already exists
    * [SQOOP-1760] - Relocated hadoop installation
    * [SQOOP-1807] - Incremental import to HBase with free form query is broken
    * [SQOOP-1932] - fix authorization failuare when the --hive-table option contaion a database name for import
    * [SQOOP-1933] - CryptoFileLoader does not work for saved jobs
    * [SQOOP-2103] - Not able define Decimal(n,p) data type in map-column-hive option
    * [SQOOP-2264] - Exclude and remove SqoopUserGuide.xml from git repository
    * [SQOOP-2283] - Support usage of --exec and --password-alias
    * [SQOOP-2286] - Ensure Sqoop generates valid avro column names
    * [SQOOP-2295] - Hive import with Parquet should append automatically
    * [SQOOP-2296] - Merge statement incorrectly includes table hints
    * [SQOOP-2297] - Explicitly add zookeeper as a dependency in ivy.xml
    * [SQOOP-2298] - TestAvroImport test case error
    * [SQOOP-2326] - Fix Netezza trunc-string option handling and unnecessary log directory during imports
    * [SQOOP-2328] - Sqoop import does not recognize Primary Key of a IBM DB2 table
    * [SQOOP-2339] - Move sub-directory might fail in append mode
    * [SQOOP-2343] - AsyncSqlRecordWriter stucks if any exception is thrown out in its close method
    * [SQOOP-2346] - compression isn't honored in incremental imports
    * [SQOOP-2349] - Transaction isolation level for metadata queries should be mutable
    * [SQOOP-2362] - Add oracle direct mode in list of supported databases
    * [SQOOP-2363] - wrong option for escape character with mysqlimport
    * [SQOOP-2367] - Tests from PostgresqlImportTest can fail on various versions of Hadoop
    * [SQOOP-2370] - Netezza - need to support additional options for full control character handling
    * [SQOOP-2371] - Tests from *LobAvroImportTest might fail
    * [SQOOP-2372] - Imports all tables as parquet will meet a NPE
    * [SQOOP-2381] - Add test for mysql export with --escape-by option
    * [SQOOP-2387] - Sqoop should support importing from table with column names containing some special character
    * [SQOOP-2399] - BigDecimalSplitter java.lang.ArrayIndexOutOfBoundsException
    * [SQOOP-2400] - hive.metastore.sasl.enabled should be set to true for Oozie integration
    * [SQOOP-2406] - Add support for secure mode when importing Parquet files into Hive
    * [SQOOP-2437] - Use hive configuration to connect to secure metastore
    * [SQOOP-2438] - Use Class.cast when creating HiveConf object in ParquetJob
    * [SQOOP-2454] - Drop JDK6 support
    * [SQOOP-2470] - Incremental Hive import with append not working after validation check for --hive-import and --import 
    * [SQOOP-2531] - readlink -f not supported on OS X
    * [SQOOP-2535] - Add error handling to HiveConf
    * [SQOOP-2561] - Special Character removal from Column name as avro data results in duplicate column and fails the import
    * [SQOOP-2566] - Sqoop incremental import using --query switch throws NullPointerException with a managed table
    * [SQOOP-2582] - Query import won't work for parquet
    * [SQOOP-2596] - Precision of varchar/char column cannot be retrieved from teradata database during sqoop import 
    * [SQOOP-2597] - Missing method AvroSchemaGenerator.generate()
    * [SQOOP-2607] - Direct import from Netezza and encoding
    * [SQOOP-2617] - Log file that is being used for LOB files
    * [SQOOP-2620] - Sqoop fails with Incremental Imports and Upserts in Teradata using Teradata JDBC Driver
    * [SQOOP-2627] - Incremental imports fail in Sqoop when run using Teradata JDBC driver
    * [SQOOP-2642] - Document ability to specify commas in --map-column-hive option
    * [SQOOP-2651] - Do not dump data on error in TextExportMapper by default
    * [SQOOP-2707] - Upgrade commons-collections to 3.2.2
    * [SQOOP-2712] - Run only one map task attempt during export (second edition)
    * [SQOOP-2723] - Oracle connector not working with lowercase columns
    * [SQOOP-2737] - Cannot import table from Oracle with column with spaces in name
    * [SQOOP-2745] - Using datetime column as a splitter for Oracle no longer works
    * [SQOOP-2746] - Add test case for Oracle incremental import using Timestamp
    * [SQOOP-2747] - Allow customizing test username and password for Oracle tests
    * [SQOOP-2751] - Test TestIncrementalImport is failing
    * [SQOOP-2753] - TestSqoopJsonUtil.testGetJsonStringFromMap is depending on Map ordering in JDK
    * [SQOOP-2767] - Test is failing SystemImportTest
    * [SQOOP-2779] - Sqoop metastore doesn't seem to recognize --schema option
    * [SQOOP-2780] - Sqoop 1 unit tests fail with TestIncrementalImport test
    * [SQOOP-2783] - Query import with parquet fails on incompatible schema
    * [SQOOP-2787] - MySql import and export fails with 5.1 server and 5.1.17+ drivers 
    * [SQOOP-2810] - Upgrade to non-snapshot dependency on Avro 1.8.0 as soon as it gets released
    * [SQOOP-2815] - Add documentation for Atlas Integration
    * [SQOOP-2839] - Sqoop import failure due to data member conflict in ORM code for table
    * [SQOOP-2846] - Sqoop Export with update-key failing for avro data file
    * [SQOOP-2847] - Sqoop --incremental + missing parent --target-dir reports success with no data
    * [SQOOP-2850] - Append mode for hive imports is not  yet supported. Please remove the parameter --append-mode
    * [SQOOP-2858] - Sqoop export with Avro data using (--update-key <key> and --update-mode allowinsert) fails
    * [SQOOP-2863] - Properly escape column names for generated INSERT statements
    * [SQOOP-2864] - ClassWriter chokes on column names containing double quotes
    * [SQOOP-2880] - Provide argument for overriding temporary directory
    * [SQOOP-2884] - Document --temporary-rootdir
    * [SQOOP-2894] - Hive import with Parquet failed in Kerberos enabled cluster
    * [SQOOP-2896] - Sqoop exec job fails with SQLException Access denied for user
    * [SQOOP-2909] - Oracle related ImportTest fails after SQOOP-2737
    * [SQOOP-2911] - Fix failing HCatalogExportTest caused by SQOOP-2863
    * [SQOOP-2915] - Fixing Oracle related unit tests
    * [SQOOP-2920] - sqoop performance deteriorates significantly on wide datasets; sqoop 100% on cpu
    * [SQOOP-2936] - Provide Apache Atlas integration for hcatalog based exports
    * [SQOOP-2945] - Oracle CLOB mapped to String is unable to import the data (SQLException in nextKeyValue)
    * [SQOOP-2946] - Netezza export fails when BOOLEAN column is mapped with INTEGER
    * [SQOOP-2947] - Oracle direct mode do not allow --jar-file to have fewer columns to export the data
    * [SQOOP-2950] - Sqoop trunk has consistent UT failures - need fixing
    * [SQOOP-2952] - row key not added into column family using --hbase-bulkload
    * [SQOOP-2971] - OraOop does not close connections properly
    * [SQOOP-2978] - Netezza import/export fails when TIME column is mapped with TIMESTAMP
    * [SQOOP-2979] - Oracle direct mode do not allow FLOAT data type (java.lang.ClassCastException: java.lang.Double cannot be cast to java.math.BigDecimal)
    * [SQOOP-2980] - Export to DB2 z/OS fails unless --batch mode is used
    * [SQOOP-2983] - OraOop export has degraded performance with wide tables
    * [SQOOP-2986] - Add validation check for --hive-import and --incremental lastmodified
    * [SQOOP-2990] - Sqoop(oracle) export [updateTableToOracle] with "--update-mode allowinsert" : app fails with java.sql.SQLException: Missing IN or OUT parameter at index
    * [SQOOP-2995] - backward incompatibility introduced by Custom Tool options
    * [SQOOP-2999] - Sqoop ClassNotFoundException (org.apache.commons.lang3.StringUtils) is thrown when executing Oracle direct import map task
    * [SQOOP-3010] - Sqoop should not allow --as-parquetfile with hcatalog jobs or when hive import with create-hive-table is used
    * [SQOOP-3013] - Configuration "tmpjars" is not checked for empty strings before passing to MR
    * [SQOOP-3014] - Sqoop with HCatalog import loose precision for large numbers that does not fit into double
    * [SQOOP-3021] - ClassWriter fails if a column name contains a backslash character
    * [SQOOP-3033] - Sqoop option --skip-dist-cache is not saved as a parameter when saving Sqoop Job
    * [SQOOP-3038] - Sqoop export using --hcatalog with RDBMS reserved word column name results in "null" value
    * [SQOOP-3044] - Add missing ASF license information to .java files
    * [SQOOP-3054] - Get FileSystem from parameter "--target-dir"
    * [SQOOP-3061] - Sqoop --options-file failed with error "Malformed option in options file" even though the query is correct
    * [SQOOP-3069] - Get OracleExportTest#testUpsertTestExport in line with SQOOP-3066
    * [SQOOP-3071] - Fix OracleManager to apply localTimeZone correctly in case of Date objects too
    * [SQOOP-3072] - Reenable escaping in ImportTest#testProductWithWhiteSpaceImport for proper execution
    * [SQOOP-3074] - Fix Avro import not to fail with Javac errors in case of non UTF-8 locale
    * [SQOOP-3081] - use OracleEscapeUtils.escapeIdentifier OracleUpsertOutputFormat + add compatibility with SQOOP-3066
    * [SQOOP-3083] - Fault injection targets no longer work after SQOOP-2983
    * [SQOOP-3105] - Postgres Tests should clean up after themselves
    * [SQOOP-3123] - Import from oracle using oraoop with map-column-java to avro fails if special characters encounter in table name or column name 
    * [SQOOP-3124] - Fix ordering in column list query of PostgreSQL connector
    * [SQOOP-3127] - Increase timeout in TestClassWriter#testWideTableClassGeneration to avoid flaky test scenarios in the upstream Jenkins
    * [SQOOP-3138] - Netezza Direct Import does not support --columns options
    * [SQOOP-3140] - mapred.map.max.attempts is deprecated. Instead, use mapreduce.map.maxattempts - old property is used by SQOOP-2055
    * [SQOOP-3152] - --map-column-hive to support DECIMAL(xx,xx)
    * [SQOOP-3157] - Improve regex introduced in [SQOOP-3152]
    * [SQOOP-3159] - Sqoop (export + --table) with Oracle table_name having '$' fails with error (ORA-00942 or java.lang.NoClassDefFoundError)
    * [SQOOP-3173] - support DB2 xml data type when sqoop import with parquet

** Improvement
    * [SQOOP-816] - Scoop and support for external Hive tables
    * [SQOOP-957] - Proposed enhancements for getting Sqoop support on Windows
    * [SQOOP-1281] - Support of glob paths during export 
    * [SQOOP-1904] - support for DB2 XML data type when importing to hdfs
    * [SQOOP-1905] - add --schema option for import-all-tables and list-tables against db2
    * [SQOOP-1906] -  Export support for mixed  update/insert against db2
    * [SQOOP-1907] - export support for --staging-table against db2
    * [SQOOP-2457] - Add option to  automatically compute statistics after loading date into a hive table
    * [SQOOP-2647] - Add option for drop-if-exists when using sqoop hcat import.
    * [SQOOP-2795] - Clean up useless code in class TestSqoopJsonUtil
    * [SQOOP-2801] - Secure RDBMS password in Sqoop Metastore in a encrypted form
    * [SQOOP-2906] - Optimization of AvroUtil.toAvroIdentifier
    * [SQOOP-2910] - Add capability to Sqoop to require an explicit option to be specified with --split-by for a String column
    * [SQOOP-2913] - Make sqoop fails if user uses --direct connector for case when --direct connector is not available
    * [SQOOP-2939] - Extend mainframe module to support GDG, sequential data sets, and data sets stored on tape
    * [SQOOP-2943] - Make sqoop able to import to Parquet file format in case of HDFS encryption zones are turned on
    * [SQOOP-2944] - AURORA direct mode to support Sequence file format
    * [SQOOP-2972] - SQOOP Direct Export To PostgreSQL Supports Selective Columns
    * [SQOOP-3009] - Import comments for columns for Postgresql
    * [SQOOP-3026] - Document that Sqoop export with --hcatalog-table <HIVE_VIEW> is not supported
    * [SQOOP-3027] - Create check/fail fast for Sqoop export with --hcatalog-table <HIVE_VIEW>, as it's not supported by Hive + MR
    * [SQOOP-3028] - Include stack trace in the logging of exceptions in ExportTool
    * [SQOOP-3029] - Add an option for uppercase/lowercase column name mapping between HCatalog and RDBMS cloumn name list
    * [SQOOP-3034] - HBase import should fail fast if using anything other than as-textfile
    * [SQOOP-3037] - Minor convenience feature - add flag to ant test to enable remote debugging
    * [SQOOP-3050] - Create an compile/execution profile which is capable of running all the available test (including the 3rd party tests)
    * [SQOOP-3051] - Remove/delete obsolete profiles from build.xml
    * [SQOOP-3052] - Introduce Maven/Gradle/etc. based build for Sqoop to make it more developer friendly / open
    * [SQOOP-3053] - Create a cmd line argument for sqoop.throwOnError and use it through SqoopOptions
    * [SQOOP-3066] - Introduce an option + env variable to enable/disable SQOOP-2737 feature
    * [SQOOP-3067] - Add an cmd line option to support split-by feature for database functions/expressions
    * [SQOOP-3068] - Enhance error (tool.ImportTool: Encountered IOException running import job: java.io.IOException: Expected schema) to suggest workaround (--map-column-java)
    * [SQOOP-3085] - Add support for client side (JVM) timezone settings
    * [SQOOP-3090] - Normalize test cases where expect an exception
    * [SQOOP-3131] - Docuemtn support for DB2 XML data type when importing to hdfs
    * [SQOOP-3135] - Not enough error message for debugging when parameters missing
    * [SQOOP-3136] - Sqoop should work well with not default file systems
    * [SQOOP-3158] - Columns added to Mysql after initial sqoop import, export back to table with same schema fails 
    * [SQOOP-3169] - Evaluate and fix SQLServer Manual tests
    * [SQOOP-3190] - Remove dependency on PSQL for postgres direct import
    * [SQOOP-3192] - upgrade parquet

** New Feature
    * [SQOOP-1094] - Add Avro support to merge tool
    * [SQOOP-2331] - Snappy Compression Support in Sqoop-HCatalog
    * [SQOOP-2332] - Dynamic Partition in Sqoop HCatalog- if Hive table does not exists & add support for Partition Date Format
    * [SQOOP-2333] - Sqoop to support Custom options for User Defined Plugins(Tool)
    * [SQOOP-2334] - Sqoop Volume Per Mapper
    * [SQOOP-2335] - Support for Hive External Table in Sqoop - HCatalog
    * [SQOOP-2534] - --password-file option doesn't work Teradata jdbc driver
    * [SQOOP-2585] - merging hive tables using sqoop
    * [SQOOP-2609] - Provide Apache Atlas integration for hive and hcatalog based imports
    * [SQOOP-2649] - Support for importing data onto Apache Phoenix tables

** Task
    * [SQOOP-960] - Update Sqoop documentation for Windows changes
    * [SQOOP-3080] - Correct default transaction isolation level comment in SqoopOptions

Release Notes - Sqoop - Version 1.4.6

** Sub-task
    * [SQOOP-1390] - Import data to HDFS as a set of Parquet files
    * [SQOOP-1393] - Import data from database to Hive as Parquet files
    * [SQOOP-1394] - Export data from HDFS back to an RDMS
    * [SQOOP-1395] - Potential naming conflict in Avro schema
    * [SQOOP-1401] - Fix checkstyle violations for ClassWriter.java
    * [SQOOP-1491] - Remove SqoopAvroRecord
    * [SQOOP-1492] - Move Avro and GenericRecord related common code to AvroUtil
    * [SQOOP-1508] - Add warning when using unsupported compression codec
    * [SQOOP-2284] - Update license file

** Bug
    * [SQOOP-1125] - Out of memory errors when number of records to import < 0.5 * splitSize
    * [SQOOP-1368] - the configuration properties are reset in HBaseImportJob
    * [SQOOP-1387] - Incorrect permissions on manager.d directory can lead to NPE
    * [SQOOP-1400] - Failed to import data using mysql-connector-java-5.1.17.jar
    * [SQOOP-1411] - The number of tasks is not set properly in PGBulkloadExportManager
    * [SQOOP-1412] - Text splitter should also consider NCHAR and NVARCHAR fields
    * [SQOOP-1422] - Integration tests for Oracle connector fail as not using direct option
    * [SQOOP-1423] - hcatalog export with --map-column-java fails
    * [SQOOP-1429] - Fix native characters usage for SqlServer object names
    * [SQOOP-1433] - Oracle direct connector fails with Oracle 12c JDBC driver
    * [SQOOP-1437] - 'Text' reserved word in compliation
    * [SQOOP-1472] - Use Properties.load() method to load property files under conf/manager.d
    * [SQOOP-1474] - Fix usage of StringUtils.repeat method
    * [SQOOP-1490] - Connectors documentation doesn't build on CentOS 5
    * [SQOOP-1494] - Fix generateArvoSchema in DataDrivenImportJob
    * [SQOOP-1519] - Enable HCat/HBase/Accumulo operations with OraOop connection manager
    * [SQOOP-1520] - The table is null when using import into hive as parquet file and query option
    * [SQOOP-1524] - Error to import into hive as textfile on hive 0.13.0
    * [SQOOP-1539] - Empty partition keys and values in multiple partition key hcatalog usage should be validated
    * [SQOOP-1540] - Accumulo unit tests fail with Accumulo 1.6.1 because of conflicts in libthrift libraries
    * [SQOOP-1617] - MySQL fetch-size behavior changed with SQOOP-1400
    * [SQOOP-1627] - Fix Hadoop100 and Hadoop20 profile
    * [SQOOP-1631] - Drop confusing use of --clean-staging-table parameter from PGBulkloadManager
    * [SQOOP-1663] - OraOop test cases are not logging any output
    * [SQOOP-1682] - Test cases *LobAvroImportTest are failing
    * [SQOOP-1684] - Use pre-existing HBase delegation token
    * [SQOOP-1685] - HCatalog integration is not working on JDK8
    * [SQOOP-1759] - TestIncrementalImport fails with NPE on Windows
    * [SQOOP-1764] - Numeric Overflow when getting extent map
    * [SQOOP-1779] - Add support for --hive-database when importing Parquet files into Hive
    * [SQOOP-1826] - NPE in ImportTool.lastModifiedMerge during postgres import
    * [SQOOP-1890] - Properly escape table name in generated queries
    * [SQOOP-1970] - Add warning about trailing whitespace characters when using password file to User guide
    * [SQOOP-2017] - Print out loaded columns and their type in verbose mode
    * [SQOOP-2024] - Hive import doesn't remove target directory in hive
    * [SQOOP-2055] - Run only one map task attempt during export
    * [SQOOP-2057] - Skip delegation token generation flag during hbase import
    * [SQOOP-2128] - HBaseImportJob should close connection from HBaseAdmin to HBase
    * [SQOOP-2130] - BaseSqoopTestCase should use manager.escapeTable instead of directly hardcoding double quotes
    * [SQOOP-2132] - Remove test TestMainframeImportTool.testPrintHelp
    * [SQOOP-2136] - Test case SqlServerUpsertOutputFormatTest is failing
    * [SQOOP-2137] - Sqoop tests and documentation refer to as-avrofile (instead of as-avrodatafile)
    * [SQOOP-2145] - Default Hive home is not being set properly under certain circumstances
    * [SQOOP-2164] - Enhance the Netezza Connector for Sqoop
    * [SQOOP-2170] - MySQL specific tests are not properly cleaning up created tables
    * [SQOOP-2191] - Provide an option automatically choose one mapper when neither primary key is defined nor split by column is provided
    * [SQOOP-2254] - Failed to build release notes
    * [SQOOP-2257] - Parquet target for imports with Hive overwrite option does not work
    * [SQOOP-2263] - Sqoop1 has some files without a copyright header
    * [SQOOP-2264] - Exclude and remove SqoopUserGuide.xml from git repository
    * [SQOOP-2281] - Set overwrite on kite dataset
    * [SQOOP-2282] - Add validation check for --hive-import and --append
    * [SQOOP-2283] - Support usage of --exec and --password-alias
    * [SQOOP-2286] - Ensure Sqoop generates valid avro column names
    * [SQOOP-2290] - java.lang.ArrayIndexOutOfBoundsException thrown when malformed column mapping is provided
    * [SQOOP-2294] - Change to Avro schema name breaks some use cases
    * [SQOOP-2324] - Remove extra license handling for consistency

** Improvement
    * [SQOOP-1330] - Ignore blank newlines in managers.d property files
    * [SQOOP-1391] - Compression codec handling
    * [SQOOP-1392] - Create the temporary directory inside task working dir rather then in tmp
    * [SQOOP-1421] - Automated patch script
    * [SQOOP-1471] - Use Hadoop CredentialProvider API to encyrpt passwords at rest
    * [SQOOP-1489] - Propagate cubrid properties to the test VM
    * [SQOOP-1567] - Auto-Configure JTDS Driver From JDBCUrl
    * [SQOOP-1622] - Copying from staging table should be in single transaction for pg_bulkload connector
    * [SQOOP-1632] - Add support for index organized tables to direct connector
    * [SQOOP-2149] - Update Kite dependency to 1.0.0
    * [SQOOP-2252] - Add default to Avro Schema

** New Feature
    * [SQOOP-1272] - Support importing mainframe sequential datasets
    * [SQOOP-1309] - Expand the Sqoop to support CUBRID database.
    * [SQOOP-1366] - Propose to add Parquet support
    * [SQOOP-1403] - Upsert export for SQL Server
    * [SQOOP-1405] - Add arg to enable SQL Server identity insert on export
    * [SQOOP-1450] - Copy the avro schema file to hdfs for AVRO based import

** Task
    * [SQOOP-1408] - Document SQL Server's --non-resilient arg
    * [SQOOP-1693] - Upgrade Kite SDK to 0.17


Release Notes - Sqoop - Version 1.4.5

** Sub-task
    * [SQOOP-1194] - Make changes to Sqoop build file to enable Netezza third party tests
    * [SQOOP-1323] - Update HCatalog version to 0.13 in Sqoop builds
    * [SQOOP-1324] - Support new hive datatypes in Sqoop hcatalog integration
    * [SQOOP-1325] - Make hcatalog object names escaped during creation so that reserved words are properly processed
    * [SQOOP-1326] - Support multiple static partition keys for better integration support
    * [SQOOP-1363] - Document Hcatalog integration enhancements introduced in SQOOP-1322

** Bug
    * [SQOOP-585] - Bug when sqoop a join of two tables with the same column name with mysql backend
    * [SQOOP-832] - Document --columns argument usage in export tool
    * [SQOOP-1032] - Add the --bulk-load-dir option to support the HBase doBulkLoad function
    * [SQOOP-1107] - Further improve error reporting when exporting malformed data
    * [SQOOP-1117] - when failed to import a non-existing table, the failure information includes NullPointerException
    * [SQOOP-1138] - incremental lastmodified should re-use output directory
    * [SQOOP-1167] - Enhance HCatalog support to allow direct mode connection manager implementations
    * [SQOOP-1170] - Can't import columns with name "public"
    * [SQOOP-1179] - Incorrect warning saying --hive-import was not specified when it was specified
    * [SQOOP-1185] - LobAvroImportTestCase is sensitive to test method order execution
    * [SQOOP-1190] - Class HCatHadoopShims will be removed in HCatalog 0.12
    * [SQOOP-1192] - Add option "--skip-dist-cache" to allow Sqoop not copying jars in %SQOOP_HOME%\lib folder when launched by Oozie and use Oozie share lib
    * [SQOOP-1209] - DirectNetezzaManager fails to find tables from older Netezza system catalogs
    * [SQOOP-1216] - Improve error message on corrupted input while doing export
    * [SQOOP-1224] - Enable use of Oracle Wallets with Oracle Manager
    * [SQOOP-1226] - --password-file option triggers FileSystemClosed exception at end of Oozie action
    * [SQOOP-1227] - Sqoop fails to compile against commons-io higher then 1.4
    * [SQOOP-1228] - Method Configuration#unset is not available on Hadoop < 1.2.0
    * [SQOOP-1239] - Sqoop import code too large error
    * [SQOOP-1246] - HBaseImportJob should add job authtoken only if HBase is secured
    * [SQOOP-1249] - Sqoop HCatalog Import fails with -queries because of validation issues
    * [SQOOP-1250] - Oracle connector is not disabling autoCommit on created connections
    * [SQOOP-1259] - Sqoop on Windows can't run HCatalog/HBase multinode jobs
    * [SQOOP-1260] - HADOOP_MAPRED_HOME should be defaulted correctly
    * [SQOOP-1261] - CompilationManager should add Hadoop 2.x libraries to the classpath under Hadoop 2.x
    * [SQOOP-1268] - Sqoop tarballs do not contain .gitignore and .gitattribute files
    * [SQOOP-1271] - Sqoop hcatalog location should support older bigtop default location also
    * [SQOOP-1273] - Multiple append jobs can easily end up sharing directories
    * [SQOOP-1278] - Allow use of uncommitted isolation for databases that support it as an import option
    * [SQOOP-1279] - Sqoop connection resiliency option breaks older Mysql versions that don't have JDBC 4 methods
    * [SQOOP-1297] - Parameterize the Accumulo version in the build files
    * [SQOOP-1298] - Cannot export to VARBINARY with null value
    * [SQOOP-1302] - Doesn't run the mapper for remaining splits, when split-by ROWNUM
    * [SQOOP-1303] - Can only write to default file system on incremental import
    * [SQOOP-1316] - Example for use of password file in docs is incorrect
    * [SQOOP-1322] - Enhance Sqoop HCatalog Integration to cover features introduced in newer Hive versions
    * [SQOOP-1329] - JDBC connection to Oracle timeout after data import but before hive metadata import
    * [SQOOP-1339] - Synchronize .gitignore files
    * [SQOOP-1353] - Sqoop 1.4.5 release preparation
    * [SQOOP-1358] - Add wallet support for Oracle High performance connector
    * [SQOOP-1359] - Fix avro versions in Sqoop to stop shipping hadoop1  jars with hadoop2
    * [SQOOP-1362] - TestImportJob getContent method doesn't work
    * [SQOOP-1365] - Do not print stack trace when we can't move generated .java file to CWD
    * [SQOOP-1370] - AccumuloUtils can throw NPE when zookeeper or accumulo home is null
    * [SQOOP-1372] - configure-sqoop does not export ZOOKEEPER_HOME
    * [SQOOP-1398] - Upgrade ivy version used to the latest release version
    * [SQOOP-1399] - Fix TestOraOopJdbcUrl test case
    * [SQOOP-1406] - Add license headers
    * [SQOOP-1410] - Update change log for 1.4.5

** Improvement
    * [SQOOP-435] - Avro import should write the Schema to a file
    * [SQOOP-1056] - Implement connection resiliency in Sqoop using pluggable failure handlers
    * [SQOOP-1132] - Print out Sqoop version into log during execution
    * [SQOOP-1137] - Put a stress in the user guide that eval tool is meant for evaluation purpose only
    * [SQOOP-1161] - Generated Delimiter Set Field Should be Static
    * [SQOOP-1172] - Make Sqoop compatible with HBase 0.95+
    * [SQOOP-1203] - Add another default case for finding *_HOME when not explicitly defined
    * [SQOOP-1212] - Do not print usage on wrong command line
    * [SQOOP-1213] - Support reading password files from Amazon S3
    * [SQOOP-1223] - Enhance the password file capability to enable plugging-in custom loaders
    * [SQOOP-1282] - Consider avro files even if they carry no extension
    * [SQOOP-1321] - Add ability to serialize SqoopOption into JobConf
    * [SQOOP-1337] - Doc refactoring - Consolidate documentation of --direct
    * [SQOOP-1341] - Sqoop Export Upsert for MySQL lacks batch support
    * [SQOOP-1373] - Sqoop import schema is locked shows NullPointerException

** New Feature
    * [SQOOP-767] - Add support for Accumulo
    * [SQOOP-1051] - Support direct mode connection managers in a generalized fashion
    * [SQOOP-1197] - Enable Sqoop to build against Hadoop-2.1.0-beta jar files
    * [SQOOP-1287] - Add high performance Oracle connector into Sqoop

** Task
    * [SQOOP-1207] - Allow user to override java source version
    * [SQOOP-1344] - Add documentation for Oracle connector
    * [SQOOP-1408] - Document SQL Server's --non-resilient arg

** Test
    * [SQOOP-1057] - Introduce fault injection framework to test connection resiliency


Changelog - Sqoop - Version 1.4.4 - 07-18-2013

** New Feature
    * [SQOOP-931] - Integrate HCatalog with Sqoop
    * [SQOOP-999] - Support bulk load from HDFS to PostgreSQL using COPY ... FROM
    * [SQOOP-1038] - Add support for composite keys in HBase import

** Improvement
    * [SQOOP-885] - Allow excluding some tables from import-all-tables tools
    * [SQOOP-912] - Add ability to specify --hive-database parameter
    * [SQOOP-914] - Securing passwords in sqoop 1.x
    * [SQOOP-916] - Add an abort validation handler
    * [SQOOP-933] - Properly log SQLExceptions using getNextException() method for chaining exceptions
    * [SQOOP-934] - JDBC Connection can timeout after import but before hive import
    * [SQOOP-937] - Dont generate ORM files for  Direct mode connectors
    * [SQOOP-1140] - Enable overriding username, password and database in DB2 test

** Task
    * [SQOOP-1010] - Change default Hadoop profile to 2.x
    * [SQOOP-1118] - Move PostgreSQL specific MR codes to org.apache.sqoop.mapreduce.posgresql

** Sub-task
    * [SQOOP-838] - Stored procedures: MySQL
    * [SQOOP-839] - Stored procedures: Oracle
    * [SQOOP-847] - Provide direct support
    * [SQOOP-848] - Unit tests for Netezza connector
    * [SQOOP-849] - documentation for netezza connector
    * [SQOOP-949] - Allow Sqoop to build on Windows OS
    * [SQOOP-954] - Create Sqoop runtime scripts to run Sqoop on Windows
    * [SQOOP-955] - Fix Sqoop unit test failures on Windows
    * [SQOOP-962] - Document null string behavior
    * [SQOOP-970] - Explicit delimiter configuration information should be available for exports also
    * [SQOOP-1011] - Allow automatic creation of HCatalog tables
    * [SQOOP-1020] - Fix Hive Unit tests to work in the presence of Hive classes
    * [SQOOP-1050] - Add documentation for HCatalog Integration
    * [SQOOP-1127] - Some database specific types are not properly handled during exports

** Bug
    * [SQOOP-846] - Provide a connector for Netezza appliances
    * [SQOOP-856] - PGBulkLoadExportMapper has an infinite waitFor without any logging in the event of Interrupted exceptions
    * [SQOOP-859] - PostgreSQL: Test cases have hard coded username and password
    * [SQOOP-883] - Remove input directory prior Sqoop import
    * [SQOOP-891] - Sqoop export from S3 to MySQL fails when S3 is not default filesystem.
    * [SQOOP-906] - Sqoop is always calling ConnectionManager.datetimeToQueryString with TIMESTAMP column type
    * [SQOOP-907] - Print out queries executed by Sqoop on mapreduce job side
    * [SQOOP-928] - PostgresqlManager should rollback any pending changes instead of commit when closing connections
    * [SQOOP-929] - Add more Netezza direct mode tests
    * [SQOOP-932] - Netezza direct manager is ignoring --null-*-string arguments
    * [SQOOP-936] - Classwriter should check if columnNames generated are null before accessing them
    * [SQOOP-950] - Can't build package from provided binary artifacts
    * [SQOOP-959] - Use CredentialsUtil.fetchPasswordFromFile in BaseSqoopTool
    * [SQOOP-968] - Cannot build when in a directory with spaces
    * [SQOOP-976] - Incorrect SQL when incremental criteria is text column
    * [SQOOP-979] - MySQL direct connector is not working correct after moving password to credential cache
    * [SQOOP-981] - The --hadoop-home command line parameter is no longer accepted
    * [SQOOP-988] - Validation option should provide some output that validation is being done
    * [SQOOP-992] - Allow to set target java version during compilation
    * [SQOOP-1006] - Update year in the notice file to 2013
    * [SQOOP-1008] - Test TestClassWriter.testNoClassGeneration is failing on JDK7
    * [SQOOP-1027] - Incremental import is not properly escaping table name when loading maximal value
    * [SQOOP-1029] - Oracle export using procedures does not work
    * [SQOOP-1030] - Enable column types Binary and Varbinary parsing in Sqoop for export
    * [SQOOP-1031] - Provide default Java type mapping for MS Sql Datetimeoffset type
    * [SQOOP-1033] - CombineFileInputFormat does not work with paths not on default FS like ASV
    * [SQOOP-1034] - Fix SQL Azure database may return table columns in inconsistent order
    * [SQOOP-1052] - Hive import is not compatible with Avro and SequenceFile but no errors are thrown
    * [SQOOP-1053] - Fix sqoop to work with Hadoop 2.0.4 alpha
    * [SQOOP-1071] - Avro import is failing when columns are starting with underscore
    * [SQOOP-1078] - incremental import from database in direct mode
    * [SQOOP-1083] - Split HBaseImportTest into multiple independent tests
    * [SQOOP-1097] - Export using procedures feature needs fixes for working with mysql
    * [SQOOP-1124] - Direct export to PostgreSQL with PGBulkloadManager fails without explicit port number settings
    * [SQOOP-1129] - PostgreSQL direct test are failing on trunk

** Test
    * [SQOOP-1035] - Add MS Sqoop Connecter tests


Changelog - Sqoop - Version 1.4.3 - 02/20/2012

** New Feature
    * [SQOOP-390] - PostgreSQL connector for direct export with pg_bulkload
    * [SQOOP-540] - Microsoft SQL Connector doesn't support custom schemas
    * [SQOOP-601] - Support custom schemas in PostgreSQL Connector
    * [SQOOP-621] - Requesting support for upsert export with MySQL
    * [SQOOP-724] - Support Table hints in Microsoft SQL Server
    * [SQOOP-749] - Exports Using Stored Procedures (Functions)
    * [SQOOP-767] - Add support for Accumulo

** Improvement
    * [SQOOP-350] - Add support for requiring that a connector be used, otherwise the job should fail
    * [SQOOP-467] - Add support for Oracle BINARY_FLOAT and BINARY_DOUBLE data types
    * [SQOOP-579] - Simple refactoring of org.apache.sqoop.manager.DefaultManagerFactory - extract methods for reuse
    * [SQOOP-580] - Add Open-ended "teardown" routine that is called after the job execution for cleanup
    * [SQOOP-598] - Document NULL substitution string changes for HIVE import
    * [SQOOP-603] - Support small intervals in IntegerSplitter implementation
    * [SQOOP-604] - Easy throttling feature for MySQL exports
    * [SQOOP-635] - Explaining why it's important to specify weird urandom path in Troubleshooting guide
    * [SQOOP-638] - Add an optional, simple and extensible validation framework for sqoop
    * [SQOOP-650] - Add ability to name mapreduce job generated by Sqoop
    * [SQOOP-653] - Add splitter support for N(LONG)(VAR)CHAR Sql type
    * [SQOOP-720] - Improve error handling when exporting malformed text data
    * [SQOOP-726] - Put debugging information into generated SqoopRecord class
    * [SQOOP-804] - Warn if hive special arguments will be used without --hive-import
    * [SQOOP-820] - Escape table name in export job only if it's required by connector
    * [SQOOP-833] - add *.eml "ant eclipse" (IntelliJ import) generated file, to .gitignore

** Task
    * [SQOOP-535] - Support splitting metadata to connector and framework specific
    * [SQOOP-731] - Move HBase tests to manual tests as they depend on unreleased artifacts

** Sub-task
    * [SQOOP-592] - Change repository location on Sqoop website
    * [SQOOP-595] - Change repository location in source code
    * [SQOOP-683] - Documenting sqoop.mysql.export.sleep.ms - easy throttling feature for direct MySQL exports

** Bug
    * [SQOOP-382] - Connection parameters should be used on the mapper
    * [SQOOP-437] - Preparing release requires manual changes to LICENSE.txt file
    * [SQOOP-462] - Sqoop hbase Test Compilation failure.
    * [SQOOP-526] - Unable to resolve maven-scm-providers-standard
    * [SQOOP-578] - sqoop script calls com.cloudera.sqoop.Sqoop instead of org.apache.sqoop.Sqoop
    * [SQOOP-582] - Create a template method for job submission in Export/Import JobBase
    * [SQOOP-585] - Bug when sqoop a join of two tables with the same column name with mysql backend
    * [SQOOP-586] - ant checkstyle has 2 errors
    * [SQOOP-597] - PostgreSQL Manager is incorrectly escaping table names
    * [SQOOP-599] - Import to HBase is not working on secure cluster
    * [SQOOP-600] - HBase table family presence is not working correctly on new HBase versions
    * [SQOOP-607] - In-process Hive CLI driver does not work
    * [SQOOP-609] - 3rd party LobAvroImportTest failures in trunk
    * [SQOOP-615] - Error in Avro generation
    * [SQOOP-616] - HBase import/export is not working on non secure cluster where security is available
    * [SQOOP-617] - User guide is missing argument --fetch-size
    * [SQOOP-628] - Postgres direct import fails on non-lowercase column names
    * [SQOOP-636] - ExportJobTestCase.runExport method does not reuse the existing Configuration and SqoopOptions 
    * [SQOOP-652] - Improve error message generated in  DataDrivenDBInputFormat when no splitter is available
    * [SQOOP-654] - PostgreSQL direct connector is ignoring --null(-input)string and --null(-input)-non-string arguments
    * [SQOOP-657] - ant checkstyle results in errors
    * [SQOOP-687] - org.apache.sqoop.tool.ExportTool.applyOptions invokes applyOutputFormatOptions(..) twice in succession
    * [SQOOP-706] - Sqoop won't compile on Java 7 due to new methods in ResultSet interface
    * [SQOOP-721] - Duplicating rows on export when exporting from compressed files.
    * [SQOOP-725] - Enable HBase tests in sqoop 1
    * [SQOOP-730] - User Guide Update: Section 3 - Sqoop Releases
    * [SQOOP-741] - The OracleConnect getTables() implementation needs to restrict tables to current user
    * [SQOOP-796] - Unable to use new Hadoop environment variables
    * [SQOOP-808] - SQLExceptions From Batched Exports Aren't Very Helpful
    * [SQOOP-818] - Missing method setConnManager(Lcom/cloudera/sqoop/manager/ConnManager;)V in ExportJobContContext breaks MS SQL Connector
    * [SQOOP-821] - Hadoop has changed logic for job id in LocalJobRunner that breaks Lob* tests
    * [SQOOP-824] - Sqoop code generation in 'update' export mode incompatible with '--columns' option
    * [SQOOP-825] - Warning for incorrect usage of hive parameters is not checking HIVE_HOME correctly
    * [SQOOP-829] - Error Messages For --map-column-java Should Be More Useful
    * [SQOOP-830] - HBase import formatting BigDecimal inconsistently
    * [SQOOP-840] - Inconsistent java generics declaration for exportwriter classes
    * [SQOOP-846] - Provide a connector for Netezza appliances
    * [SQOOP-853] - sqoop list-tables isn't returning the tables that have custom schemas
    * [SQOOP-854] - pg_bulkload: Return value of pg_bulkload utility is being ignored
    * [SQOOP-855] - pg_bulkload: NullPointerException will be thrown if user specified invalid path the binary
    * [SQOOP-860] - NullPointerException when running procedure export against old database
    * [SQOOP-862] - Hbase import fails if there is a row where all columns are null
    * [SQOOP-870] - Allow Sqoop to import row key column into HBase
    * [SQOOP-901] - Allow user to override hardcoded boolean strings in direct PostgreSQL connector

** Test
    * [SQOOP-606] - Increase unit test timeout


Changelog - Sqoop - Version 1.4.2 - 08/07/2012

** New Feature
    * [SQOOP-439] - Released artifacts should embrace unwritten naming policy
    * [SQOOP-444] - Support incremental import for free form queries

** Improvement
    * [SQOOP-391] - Dependencies should use released versions of Apache Hadoop, HBase, and ZooKeeper
    * [SQOOP-416] - Allow code-generation arguments with Avro imports
    * [SQOOP-436] - The --verbose option should enable verbose logging for MapReduce jobs as well
    * [SQOOP-438] - allow sourcing of sqoop-env.sh to set various environment variables
    * [SQOOP-440] - Rename CHANGES.txt to CHANGELOG.txt
    * [SQOOP-442] - Ant target mvn-install is generating pom with dependencies on cloudera version of Hadoop
    * [SQOOP-443] - Calling sqoop with hive import is not working multiple times due to  kept output directory
    * [SQOOP-447] - Use release version of Apache Hadoop 0.23.1 in build
    * [SQOOP-459] - Remove redundant steps in compatibility tests: verifyReadback() method
    * [SQOOP-461] - Sqoop User Guide's troubleshooting section should include Oracle Connection Errors
    * [SQOOP-463] - Sqoop User Guide's troubleshooting section should explain how to override the column mapping when importing a table from MySQL into Hive
    * [SQOOP-464] - Warn when user is importing data into /user/hive/warehouse with flag --hive-import
    * [SQOOP-465] - BLOB support for Avro import
    * [SQOOP-483] - Allow target dir to be set to a different name than table name for hive import
    * [SQOOP-484] - Update troubleshooting guide section about MySQL and TINYINT(1) columns
    * [SQOOP-487] - InformationSchemaManager.getPrimaryKeyQuery can take a very long time for large mysql table with partitions
    * [SQOOP-510] - Improve the error message for bad connector files
    * [SQOOP-522] - Move  printing error "ERROR orm.CompilationManager: Could not rename" to DEBUG
    * [SQOOP-529] - Enforce usage of --driver and --connection-manager parameters
    * [SQOOP-538] - Hudson configuration for all hadoop versions

** Task
    * [SQOOP-516] - Sqoop 1.4.2 release preparation
    * [SQOOP-519] - Update the version of hsqldb decadency to 2.X
    * [SQOOP-574] - Create a Hadoop-2.0.0 build profile

** Sub-task
    * [SQOOP-470] - Create tests for blob support for Avro import

** Bug
    * [SQOOP-352] - Export of avro data imported from database table (using sqoop import) fails on year
    * [SQOOP-410] - Direct modes can't import views
    * [SQOOP-425] - Sqoop invokes ResultSet.isLast() which causes Sybase JDBC driver to hang
    * [SQOOP-445] - Wrong query for getListColumnsQuery in PostgresqlManager
    * [SQOOP-448] - boolean fields get nullified during postgres direct import into hive.
    * [SQOOP-450] - Direct MySQL import can fail when using mysqldump version 5.1.14 or above.
    * [SQOOP-452] - Mysql free form queries fail if alias is not used.
    * [SQOOP-453] - Oozie does not work with Sqoop metastore
    * [SQOOP-454] - Upgrade dependency on HBase version 0.92.0-SNAPSHOT as it was already released
    * [SQOOP-460] - Verbose logging does not turn the level for correct logger
    * [SQOOP-468] - Oracle free form queries fail.
    * [SQOOP-473] - Sqoop import-all-tables fails with MySQL connector
    * [SQOOP-474] - Split-by specification incorrectly triggers bounding value query
    * [SQOOP-476] - If table name is a qualified name, Sqoop import fails in DB2
    * [SQOOP-480] - MS SQL server connector and OraOop connector are incompatible with Sqoop-1.4
    * [SQOOP-481] - Sqoop import with --hive-import using wrong column names in --columns throws a NPE
    * [SQOOP-482] - import tool for mysql direct mode reports wrong record number
    * [SQOOP-488] - Parameter for extended verbose is not working due to migrated code to different module
    * [SQOOP-489] - Cannot define partition keys for Hive tables created through Sqoop
    * [SQOOP-490] - Style error in the trunk
    * [SQOOP-503] - --columns argument support for export
    * [SQOOP-505] - Trailing space after jar in managers.d/connectors causes file not found
    * [SQOOP-508] - Sqoop metastore cannot be started due to missing hsqldb jar file
    * [SQOOP-521] - Import fails on tables with names containing hyphens ( - )
    * [SQOOP-524] - hsqldb jar update regression
    * [SQOOP-528] - Remove references to incubator from sources
    * [SQOOP-536] - Blob import doesn't work with avro 1.7.1
    * [SQOOP-539] - getPrimaryKeyQuery is very slow in mysql 5.0.77
    * [SQOOP-571] - Revert SQOOP-519 and SQOOP-524


Changelog - Sqoop - Version 1.4.1-incubating - 02/16/2012

** New Feature
    * [SQOOP-337] - Create Sqoop Logo / Icon
    * [SQOOP-362] - Allow user to override mapping when doing import to AVRO format

** Improvement
    * [SQOOP-397] - Make Sqoop work with Hadoop 0.23
    * [SQOOP-411] - Precompile Pattern for replacement of Hive delimiters
    * [SQOOP-420] - sqoop - compatible with hadoop 1.0.0 
    * [SQOOP-432] - Enforce writing space after if statement

** Task
    * [SQOOP-396] - publish sqoop artifacts to Apache Maven repo
    * [SQOOP-400] - Merge 1.4.0 release changes back to trunk
    * [SQOOP-405] - Enable TestDataDrivenDBInputFormat for Hadoop 0.23 when appropriate
    * [SQOOP-427] - Sqoop 1.4.1 release preparation

** Sub-task
    * [SQOOP-356] - move documentation generation to the maven build
    * [SQOOP-372] - License Audit
    * [SQOOP-412] - Create our own implementation of org.apache.hadoop.conf.Configuration.getInstances
    * [SQOOP-413] - Port files org.apache.hadoop.mapreduce.lib.{db,input}.* from CDH3/Hadoop-0.21 to sqoop

** Bug
    * [SQOOP-384] - Sqoop is incompatible with Hadoop prior to 0.21
    * [SQOOP-392] - Build using maven is broklend due to missing class generated by script write-version-info.sh
    * [SQOOP-393] - Class SqoopOptions was not properly moved
    * [SQOOP-395] - Incorrect or missing SVN property settings
    * [SQOOP-409] - hive-drop-import-delims doesn't work with MySQL direct import
    * [SQOOP-414] - Column names are not guaranteed in order for getColumnNames of OracleManager
    * [SQOOP-418] - MySQLAuthTest hangs when run against MySQL 5.5.3 or higher version
    * [SQOOP-421] - User guide should state that when using --direct, hbase params get ignored
    * [SQOOP-422] - Throw an exception when --direct and hbase* options are used together
    * [SQOOP-424] - Codegen compilation fails with Hadoop 0.23 
    * [SQOOP-426] - Build command ant mvn-install generates Sqoop pom with incorrect group Id.
    * [SQOOP-428] - AvroOutputFormat doesn't support compression even though documentation claims it does
    * [SQOOP-430] - Duplicate Column problem with reserved words
    * [SQOOP-433] - Tests are failing on current 0.23 version
    * [SQOOP-446] - sqoop column terminator "fields-terminated-by" needs to work with any of the following '\007', '0x7', '^G'
    * [SQOOP-478] - Sqoop export tool unexpectedly re-order Oracle table columns 
    * [SQOOP-622] - possible import bug with embedded LF (0x0A) in VARCHAR field


Changelog - Sqoop - Version 1.4.0-incubating - 11/29/2011

** New Feature
    * [SQOOP-305] - Support export from Avro Data Files
    * [SQOOP-313] - Multiple column names to be included in --update-key argument with SQOOP export (update)
    * [SQOOP-327] - Mixed update/insert export support for OracleManager
    * [SQOOP-331] - Support boundary query on the command line
    * [SQOOP-342] - Allow user to override sqoop type mapping
    * [SQOOP-367] - codegen support free-form query

** Improvement
    * [SQOOP-303] - Use Catalog Tables for PostgresqlManager
    * [SQOOP-315] - Update Avro version to 1.5.2
    * [SQOOP-316] - Sqoop user guide should have a troubleshooting section.
    * [SQOOP-318] - Add support for splittable lzo files with Hive
    * [SQOOP-320] - Use Information Schema for SQLServerManager
    * [SQOOP-321] - Support date/time columns for "--incremental append" option
    * [SQOOP-326] - Updgrade Avro dependency to version 1.5.3
    * [SQOOP-351] - Sqoop User Guide's troubleshooting section should include Case-Sensitive Catalog Query Errors
    * [SQOOP-353] - Cleanup the if/else statement in HiveTypes
    * [SQOOP-354] - SQOOP needs to be made compatible with Hadoop  .23 release
    * [SQOOP-355] - improve SQOOP documentation of Avro data file support
    * [SQOOP-357] - To make debugging easier, Sqoop should print out all the exceptions 
    * [SQOOP-361] - [Docs] $CONDITIONS must be escaped to not allow shells to replace it.
    * [SQOOP-366] - Sqoop User Guide's troubleshooting section should include MySQL setup instructions

** Task
    * [SQOOP-302] - Use Information Schema for MySQLManager
    * [SQOOP-309] - Update Sqoop dependency versions
    * [SQOOP-310] - Review license headers
    * [SQOOP-369] - Sqoop 1.4.0 release preparation

** Sub-task
    * [SQOOP-370] - Version number for upcoming release.
    * [SQOOP-371] - Migrate util package to new name space
    * [SQOOP-374] - Migrate tool and orm packages to new name space
    * [SQOOP-375] - Migrate metastore and metastore.hsqldb packages to new name space
    * [SQOOP-376] - Migrate mapreduce package to new name space
    * [SQOOP-377] - Migrate mapreduce.db package to new name space
    * [SQOOP-378] - Migrate manager package to new name space
    * [SQOOP-379] - Migrate lib and io packages to new name space
    * [SQOOP-380] - Migrate hive and hbase packages to new name space
    * [SQOOP-381] - Migrate cli and config packages to new name space
    * [SQOOP-383] - Version tool is not working.
    * [SQOOP-386] - Namespace migration cleanup
    * [SQOOP-388] - Add license header to Hive testdata
    * [SQOOP-389] - Include change log

** Bug
    * [SQOOP-308] - Generated Avro Schema cannot handle nullable fields
    * [SQOOP-314] - Basic export hangs when target database does not support INSERT syntax with multiple rows of values
    * [SQOOP-317] - OracleManager should allow working with tables owned by other users.
    * [SQOOP-319] - The --hive-drop-import-delims option should accept a replacement string
    * [SQOOP-323] - Support for the NVARCHAR datatype
    * [SQOOP-325] - Sqoop doesn't build on intellij
    * [SQOOP-329] - SQOOP doesn't work with the DB2 JCC driver
    * [SQOOP-330] - Free form query import with column transformation failed without obvious error message
    * [SQOOP-332] - Cannot use --as-avrodatafile with --query
    * [SQOOP-336] - Avro import does not support varbinary types
    * [SQOOP-338] - NPE after specifying incorrect JDBC credentials
    * [SQOOP-339] - Use of non-portable mknod utility causes build problems on Mac OS X
    * [SQOOP-340] - Rise exception when both --direct and --as--sequencefile or --as-avrodatafile are given
    * [SQOOP-341] - Sqoop doesn't handle unsigned ints at least with MySQL
    * [SQOOP-346] - Sqoop needs to be using java version 1.6 for its source
    * [SQOOP-349] - A bunch of the fields are wrong in pom.xml 
    * [SQOOP-358] - Sqoop import fails on netezza nvarchar datatype with --as-avrodatafile
    * [SQOOP-359] - Import fails with Unknown SQL datatype exception
    * [SQOOP-364] - Default getCurTimestampQuery() in SqlManager is not working for PostgreSQL
    * [SQOOP-368] - Resolve ERROR tool.ImportTool: Imported Failed: Duplicate Column identifier specified: 'COLUMN-NAME'
    * [SQOOP-373] - Can only write to default file system on direct import
    * [SQOOP-385] - Typo in PostgresqlTest.java regarding configuring postgresql.conf.
    * [SQOOP-398] - Sqoop to avro saves NUMERIC as strings

