SQL Targets: varchar columns generally require maxlength

Summary

Most databases require a max length to be specified for varchar columns. Not all do (SQLite, Postgres, and Snowflake do not) but most do. The SDK currently creates varchar columns without a max length and thus table creation fails when the DB requires it. If the schema provided by the tap provides a max length it should be used.

Steps to reproduce

  1. Create a SQL target using the SDK for a database such as MySQL
  2. Feed the target data with a stream containing a string field where the schema record specifies a max length

What is the current bug behavior?

Creation of the table in the destination DB will fail due to a lack of a length.

What is the expected correct behavior?

If the tap provides a max length in the schema record it should be used.

Possible fixes

The relevant code is in singer_sdk/typing.py. MR incoming too.