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

