Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[AD-805] Bug with Unicode inside mac debug build #95

Merged
merged 205 commits into from
Jun 22, 2022

Conversation

birschick-bq
Copy link
Contributor

Summary

[AD-805 ] Bug with Unicode inside mac debug build

Description

Fixes issue where the buffer length of odd length fails assertion when isLenInBytes is true.

Related Issue

https://bitquill.atlassian.net/browse/AD-805

Additional Reviewers

@affonsoBQ
@alexey-temnikov
@alinaliBQ
@andiem-bq
@birschick-bq
@mitchell-elholm
@RoyZhang2022

andiemontoyeah and others added 30 commits January 10, 2022 14:30
change the install options for OpenSSL, since vcpkg is a preferred option
remove the WiX Toolset v4 requirement
add steps for the fix for ignite-odbc-tests.profraw error in README.
added some comments for my own convenience. Will remove later
fixed by updating ChildId in tlsCheckBox = CreateCheckBox
add comment to illustrate plan on what to do for the configuration window
bugfix to make tlsCheckBox and tlsAllowInvalidHostnamesCheckBox read into the saved values
… files to be consistent with configuration.h

Files that had the change connection_string_parser.cpp, connection_string_parser.h, dsn_config.cpp, batch_query.cpp, data_query.cpp.
…iguration_window.h

 Add small letter case to keep format consistency in dsn_configuration_window.h
fixed one typo (Create authentication settings group box)
added SSH User, SSH Host. SSH Strict Host Key Checking, and SSH Known Hosts File onto the UI. However, the code to save the written values would be done in later commits.
alinaliBQ and others added 17 commits May 30, 2022 14:00
…a params to JDBC (#27)

### Summary

<!--- General summary / title -->
make changes so getColumns/getTables tests pass nullptr to JDBC

### Description

<!--- Details of what you changed -->
Make getColumns pass nullptr to JDBC when ODBC receives nullptr as parameter.
### Related Issue

<!--- Link to issue where this is tracked -->
https://bitquill.atlassian.net/browse/AD-751


* [AD-751] adapt getColumns to pass nullptr to jni

* [AD-550] fix meta_queries_test to properly pass null ptr instead of empty strings

* NULL and empty strings have different meanings in SQLColumns ODBC implementation.
Passing catalog as null means disregard the catalog parameter, where as empty string would mean finding data without a catalog.
Passing schema as null means disregard the catalog parameter, where as empty string would mean finding data without a schema.
  [Reference](https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/sqlcolumns-function?view=sql-server-ver15)

* [AD-751] move `const` out of `boost::optional< const std::string >`

* reason: `const boost::optional< std::string >` works better than `boost::optional< const std::string >`.

* [AD-751] add SQLColumns meta queries tests

* add test that passes non-existent catalog along with correct tables / columns. The ResultSet should still be empty.
* added test that passes empty string as catalog. The result should be the same as when catalog is passed as null.

* [AD-751] temporarily disable cppcheck in Windows Workflow

* [AD-751] adapt getTables to pass nullptr to jni when NULL is received

* added extra test case for TestGetDataWithTablesReturnsNone ( test that no result is returned with empty string schema)
* add function SqlStringToOptString
* refactors
* code documentation changes
* some tests would fail without changes in AD-751 PR

* [AD-751] add test case for TestGetDataWithColumnsReturnsNone

* tests passing empty string schemaName to SQLColumns returns no data
* this test would fail without the new JDBC changes

* [AD-751] replace NULL with nullptr in tests

* and some comment refactoring

* [AD-751] resolve code review comments

* remove unneeded variable typesArr

* [AD-751] resolve code review comments

* remove SqlStringToConstOptString function
* remove const keyword for optional strings in column_metadata_query.h because they are not needed

* [AD-751] update documentation

* [AD-751] fix build issue

* remove references of removed function `SqlStringToConstOptString`

* Updating JDBC version

* [AD-751] update tests

* update tests according to JDBC changes. In  SQLTables and SQLColumns, empty string parameters for table or column are not allowed, so replacing them with "%" or actual table / column names instead.

* [AD-751] make windows github workflow download JDBC 1.2.4

Co-authored-by: affonsov <[email protected]>
* remove not needed functions

* remove more uneeded functions
* add missing headers and fix compiling errors

* changes to solve all build failure

* fix linux build failure

* fix linux and mac build failure

* fix linux and mac build failure

* remove unneeded code

* remove unneeded functions

* add missing files

* remove unneeded code based on comments

* add missing namespace for odbc

* add _ODBC to header macro
### Summary

<!--- General summary / title -->
Make JDBC return tables/columns to ODBC
### Description

<!--- Details of what you changed -->
* Tableau passes catalog, schema, table name, and table type as null pointers to SQLTables.
PowerBI passes catalog, schema, and table name as null pointers to SQLTables.

PowerBI passes column name as null pointers to SQLColumns.

Therefore, if null is passed in ODBC as table pattern, "%" needs to be passed as table pattern to JDBC.
Same thing with null being passed to ODBC as column name pattern.
### Related Issue

<!--- Link to issue where this is tracked -->
https://bitquill.atlassian.net/browse/AD-771

* [AD-771] fix merge issues

* [AD-771] resolve code review comments

* move comments for SQLTables and SQLColumns from odbc.h to odbc.cpp.
* refactor code to use `get_value_or` when retrieving values for table and column name
### Summary

<!--- General summary / title -->
adapt the function SQLColAttribute to be ODBC 3.0 compatible. 
### Description

<!--- Details of what you changed -->
adapt the function SQLColAttribute
- [x] adapt isAutoIncrement, to be used in SQLColAttribute
- [x] adapt `SQL_DESC_AUTO_UNIQUE_VALUE`
- [x] make sure `SQL_DESC_CASE_SENSITIVE` is implemented correctly (currently it only handles `JDBC_TYPE_VARCHAR`) and check possible JDBC types returned from JDBC
- [x] adapt `SQL_DESC_LITERAL_PREFIX` and `SQL_DESC_LITERAL_SUFFIX`
- [x] adapt `SQL_DESC_UNNAMED`
- [x] fix adaptation of `SQL_DESC_NUM_PREC_RADIX`
- [x] adapt `SQL_DESC_PRECISION`
- [x] adapt `SQL_DESC_SCALE`
- [x]  fix implementation of `SQL_DESC_LENGTH`, `SQL_DESC_OCTET_LENGTH`, and `SQL_COLUMN_LENGTH`
- [x] fix implementation of `SQL_DESC_FIXED_PREC_SCALE`

Write tests for
- [x] get `SQL_DESC_AUTO_UNIQUE_VALUE` by calling SQLColAttribute
- [x] get `SQL_DESC_CASE_SENSITIVE` by calling SQLColAttribute
- [x] get `SQL_DESC_LITERAL_PREFIX`
   - [x] prefix: for JDBC_BINARY types (JDBC_TYPE_VARBINARY, and JDBC_TYPE_LONGVARBINARY), make sure "0x" is returned
   - [x] "'" is supposed to be returned for JDBC *CHAR types for both prefix and suffix. 
- [x] get `SQL_DESC_LITERAL_SUFFIX` by calling SQLColAttribute
- [x] get `SQL_DESC_UNNAMED` by calling SQLColAttribute
- [x] get `SQL_DESC_PRECISION` by calling SQLColAttribute
- [x] get `SQL_DESC_SCALE` by calling SQLColAttribute
- [x] SQL_DESC_BASE_COLUMN_NAME 
- [x] SQL_DESC_BASE_TABLE_NAME 
- [x] SQL_DESC_CATALOG_NAME 
- [x] SQL_DESC_CONCISE_TYPE
- [x] SQL_DESC_DISPLAY_SIZE 
- [x] SQL_DESC_FIXED_PREC_SCALE 
- [x] SQL_DESC_LABEL 
- [x] SQL_DESC_LENGTH 
- [x] SQL_DESC_LITERAL_SUFFIX 
- [x] SQL_DESC_LOCAL_TYPE_NAME 
- [x] SQL_DESC_NAME 
- [x] SQL_DESC_NULLABLE 
- [x] SQL_DESC_OCTET_LENGTH 
- [x] SQL_DESC_SCHEMA_NAME 
- [x] SQL_DESC_SEARCHABLE 
- [x] SQL_DESC_TABLE_NAME 
- [x] SQL_DESC_TYPE 
- [x] SQL_DESC_TYPE_NAME 
- [x] SQL_DESC_UNSIGNED 
- [x] SQL_DESC_UPDATABLE 

Fields that are already (correctly) implemented before this PR:
- SQL_DESC_BASE_COLUMN_NAME 
- SQL_DESC_BASE_TABLE_NAME 
- SQL_DESC_CATALOG_NAME 
- SQL_DESC_CONCISE_TYPE
- SQL_DESC_DISPLAY_SIZE
- SQL_DESC_LABEL
- SQL_DESC_LITERAL_SUFFIX 
- SQL_DESC_LOCAL_TYPE_NAME 
- SQL_DESC_NAME 
- SQL_DESC_NULLABLE
- SQL_DESC_SCHEMA_NAME 
- SQL_DESC_SEARCHABLE 
- SQL_DESC_TABLE_NAME 
- SQL_DESC_TYPE 
- SQL_DESC_TYPE_NAME 
- SQL_DESC_UNSIGNED 
- SQL_DESC_UPDATABLE 

For SQL_DESC_SEARCHABLE, SQL_PRED_BASIC is always returned because our DocumentDB JDBC does not support the LIKE operator. 
For SQL_DESC_UPDATABLE, SQL_ATTR_READWRITE_UNKNOWN is automatically returned. 

### Related Issue

<!--- Link to issue where this is tracked -->
https://bitquill.atlassian.net/browse/AD-621

* [AD-621] add todo for adapting SQL_DESC_COUNT

* reason why a TODO (AD-760) is created: Currently our DocDB JDBC only has result sets that are forward only and does not support:
{
resultSet.last();
count = resultSet.getRow();
}
Therefore the task is more complicated than it seems and we may or may not support this feature.

* [AD-621] adapt SQL_DESC_CASE_SENSITIVE

* [AD-621] adapt SQL_DESC_LITERAL_PREFIX and SQL_DESC_LITERAL_SUFFIX

* prefix: for JDBC_BINARY types (JDBC_TYPE_VARBINARY, and JDBC_TYPE_LONGVARBINARY), "0x" is returned
* "'" is returned for JDBC *CHAR types for both prefix and suffix.

* [AD-621] adapt SQL_DESC_UNNAMED

* make value returned from SQL_DESC_UNNAMED match the [reference](https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/sqlcolattribute-function?view=sql-server-ver16).
- SQL_DESC_UNNAMED is set to SQL_NAMED if there is a column name or column alias. If there is no column name or a column alias, SQL_DESC_UNNAMED is set to SQL_UNNAMED.

* [AD-621] adapt SQL_DESC_NUM_PREC_RADIX

* for all non-numeric data types, the `SQL_DESC_NUM_PREC_RADIX` field should be set to 0, not -1.
* update test for `num_prec_radix`, as it should not be null.

* [AD-621] implement getting decimal digits

* decimal digits have a different meaning from precision or scale, so it has its own variable

* [AD-621] adapt SQL_DESC_PRECISION

* and some reformatting

* [AD-621] test for SQL_DESC_CASE_SENSITIVE

* [AD-621] add test for SQL_DESC_AUTO_UNIQUE_VALUE

* [AD-621] test for SQL_DESC_LITERAL_PREFIX

* [AD-621] adapt SQL_COLUMN_SCALE

* for scale, return decimal digits for all exact numeric types

* [AD-621] add test TestColAttributeDescLiteralSuffix

* [AD-621] remove SQL_DESC_COUNT field in ColumnMeta::GetAttribute

* the SQL_DESC_COUNT  field is already handled in odbc.cpp

* [AD-621] add test TestColAttributeDescUnnamed

* [AD-621] add test TestColAttributeDescPrecision

* [AD-621] add test TestColAttributeDescScale

* add implementation for BinaryTypeDecimalDigits. All exact numeric types other than SQL_DECIMAL and SQL_NUMERIC should return 0.

* [AD-621] temporarily disable TestColAttributeDescPrecision

* [AD-621] add tests

* add tests:
- TestColAttributeDescBaseColumnName
- TestColAttributeDescBaseTableName
- TestColAttributeDescCatalogName

* [AD-621] add test TestColAttributeDescConciseType

* [AD-621] add test TestColAttributeDescCount

* [AD-621] update comment

* [AD-621] attempt to fix TestColAttributeDescBaseColumnName and TestColAttributeDescBaseTableName

* [AD-621] fix TestColAttributeDescCatalogName

* [AD-621] make value -1 by default in ColumnMeta::GetAttribute(uint16_t fieldId, SqlLen& value)

* [AD-621] fix TestColAttributeDescConciseType

* `"columnName": null` in json table does not mean that the column is of NULL type. Therefore I'm replacing the reference of fieldNull to fieldString

* [AD-621] add test TestColAttributeDescDisplaySize

* [AD-621] test TestColAttributeDescPrecision

* removed SQL_TYPE_NULL check because JDBC is not automatically recognizing fields containing null values as JDBC_TYPE_NULL
* added test for checking precision values of SQL_VARCHAR

* [AD-621] fix TestColAttributeDescDisplaySize

* correct the expected value of display size for SQL_TYPE_TIMESTAMP

* [AD-621] add test TestColAttributeDescFixedPrecScale

* only SQL_FALSE is returned for the field SQL_DESC_FIXED_PREC_SCALE for all possible columns

* [AD-621] add test TestColAttributeDescBaseLabel

* SQL_DESC_LABEL returns the same value for column name

* [AD-621] undo accidental commit merge

* [AD-621] add test TestColAttributeDescLength

* [AD-621] Refactoring comments

* removed commented out code
* added comments

* [AD-621] update TestColAttributeDescLiteralSuffix

* reason: fieldObjectId is recognized as VARCHAR type, therefore it would get the "'" literal instead. So replace fieldObjectId with fieldBoolean, which is non-char and non-binary

* [AD-621] add test TestColAttributeDescLocalTypeName

* tests local type names for:
SQL_DOUBLE, SQL_VARCHAR, SQL_BINARY, SQL_TYPE_TIMESTAMP, SQL_INTEGER
* update `req` to `req1` in `TestColAttributeDescPrecision` for a better naming convention

* [AD-621] dereference optional int for scale value

* this is an attempt to fix the TestColAttributeDescFixedPrecScale test

* [AD-621] fix implementation of SQL_DESC_LENGTH, SQL_DESC_OCTET_LENGTH, and SQL_COLUMN_LENGTH

* column length should not be the precision value and only the type_traits::BinaryTypeTransferLength function should be used for that value instead

* [AD-621] fix test TestColAttributeDescLength

* [AD-621] refactor replace `req` with `req1`

* update `req` to `req1` in tests for a better naming convention

* [AD-621] add test TestColAttributeDescName

* [AD-621] add test TestColAttributeDescNullable

* fieldObjectId should not be nullable because it contains an primary key id
* fields that are not primary keys should be nullable. This is according to settings on JDBC driver

* [AD-621] fix TestColAttributeDescLocalTypeName

* reason: binary fields would be recognized as type SQL_VARBINARY instead of SQL_BINARY.

* [AD-621] fix implementation of SQL_DESC_FIXED_PREC_SCALE

* SQL_TRUE if the column has a fixed precision and nonzero scale that are data source-specific.
* SQL_FALSE if the column does not have a fixed precision  and nonzero scale that are data source specific.
* refactor changes

* [AD-621] add test TestColAttributeDescNumPrecRadix

* tests 3 columns (field float, int, any non-numeric column), each should return 2,10, 0 for precision radix value respectively

* [AD-621] fix implementation of SQL_DESC_OCTET_LENGTH

* SQL_DESC_LENGTH is the character length of a datatype, and SQL_DESC_OCTET_LENGTH is SQL_DESC_LENGTH  in bytes. Therefore, they should have different values if the number of bytes per char is not 1.

* [AD-621] add test TestColAttributeDescOctetLength

* [AD-621] fix test TestColAttributeDescNullable

* meta_queries_test_001__id is the correct primary keys field

* [AD-621] fix test TestColAttributeDescNumPrecRadix

* added float field in test database

* [AD-621] fix implementation of SQL_DESC_SCALE

* [AD-621] fix implementation of precision value

* JDBC precision/scale value does not apply to ODBC, thus we do not retrieve the precision/scale value from JDBC.
* fixed implementation for retrieving column attribute field SQL_DESC_PRECISION.

* [AD-621] add test TestColAttributeDescSchemaName

* schema name is the database name

* [AD-621] add tests

added tests:
* TestColAttributeDescSearchable
* TestColAttributeDescTableName
* TestColAttributeDescType
* TestColAttributeDescUnsigned
* TestColAttributeDescUpdatable

* [AD-621] fix test TestColAttributeDescType

* and added todo for re-enabling the tests

* [AD-621] refactor changes

* added debug messages for InternalGetColumnAttribute

* [AD-621] add todo link to Jira ticket

* [AD-621] add file column_meta_test.cpp

* column_meta_test contains unit tests for ColumnMeta::GetAttribute

* [AD-621] add checks for GetAttribute with string value

* added BOOST checks for calling ColumnMeta::GetAttribute with all of SQL_DESC_* fields that apply
* removed unnecessary include <sql.h>

* [AD-621] add more checks for retrieving int values

* added more boost checks for unit test

* [AD-621] resolve code review comments

* add function `isCharType` to replace duplicate code
* fixed typo

* [AD-621] code refactor

* added function SqlCharToString to replace duplicate code. The function converts SQLCHAR[] array to a std::string

* [AD-621] refactor code

* created function callSQLColAttribute to check the return value from the attribute field with the expected string.
* removed comment

* [AD-621] code refactor

* created function callSQLColAttribute to check the return value from the attribute field with the expected int.
* added documentation for  callSQLColAttribute functions

* [AD-621] add more checks for TestGetAttribute

* [AD-621] add unit test TestGetAttributeLiteralPrefix

* [AD-621] add test TestGetAttributeLiteralSuffix

* [AD-621] add unit test TestGetAttributeLocalTypeName

* [AD-621] fix implementation

* fix implementation of SQL_DESC_UNNAMED
* fix implementation of SQL_COLUMN_PRECISION and SQL_COLUMN_SCALE. Added check to ensure decimalDigits is not -1.

* [AD-621] add unit tests

* added unit tests:
TestGetAttributeCaseSensitive,
TestGetAttributeConciseTypeAndType,
TestGetAttributeDisplaySize,
TestGetAttributeLength,
TestGetAttributeOctetLength,
TestGetAttributeNullable,
TestGetAttributeNumPrecRadix,
TestGetAttributePrecision,
TestGetAttributeScale,
TestGetAttributeUnnamed,
TestGetAttributeUnsigned

* [AD-621] Add test that checks multiple columns

* add test TestColAttributeDataTypesAndColumnNames

* [AD-621] code refactor

* added function connectToLocalServer to reduce the amount of duplicate code

* [AD-621] code refactor

* removed duplicate code
* removed extra line
* [AD-621] fix unit test TestGetAttributeOctetLength

* changed the expected value for JDBC_TYPE_DATE, JDBC_TYPE_TIME, JDBC_TYPE_TIMESTAMP
* refactored to re-use variable size_of_char
* add check for attach to JVM failure

* add missing change

* check Attach() result before use it

* fix wrong code

* remove unneeded comments

* use nullptr instead of NULL

* remove duplicated lines
### Summary

<!--- General summary / title -->
* added if checks to check if cursor is already at the vector end
### Description

<!--- Details of what you changed -->
The error of `expression: can't increment vector iterator past end` is actually caused by Tableau setting rowArraySize to a number that is larger than the number of available rows in the database. Our ODBC driver continues to retrieve rows when SqlResult::AI_NO_DATA is returned, which usually causes the `Error: expression: can't increment vector iterator past end` error, because SqlResult::AI_NO_DATA is returned by PrimaryKeysQuery::FetchNextRow only when cursor has reached the end of the vector.
* make array row size only set to 1
### Related Issue

<!--- Link to issue where this is tracked -->
https://bitquill.atlassian.net/browse/AD-772

* [AD-772] add bug fix to iterate past vector end

* added if checks to check if cursor is already at the vector end

* [AD-772] remove comments

* removed extra comments

* [AD-772] update value of row array size

* I had discovered that setting row array size to 3 is enough to make the tests crash with vector error without my fix, therefore I'm setting row array size to a smaller number to reduce the amount of time for tests

* [AD-772] update value of row array size for test TestSQLTypeInfoHighRowArraySize

* [AD-772] resolve code review comment

* remove duplicate code

* [AD-772] refactor code according to Roy's suggestion

* `fetched` is not needed in the FetchNextRow function.

* [AD-772] remove instances of `fetched`

* remove the fetched flag as it is not used in anywhere

* Revert "[AD-772] refactor code according to Roy's suggestion"

This reverts commit dc0bc5b.

* Revert "[AD-772] remove instances of `fetched`"

This reverts commit d9a819f.

* [AD-772] set default value of fetched in foreign key query and primary key query

* [AD-772] change code logic to remove extra if check

* change code logic to remove extra if check
* only increment cursor if it is not at the end of the meta

* [AD-772] make ODBC not support rowArraySize to be set to a value other than 1

* rowArraySize can no longer be set to values other than 1
* removed tests that sets rowArraySize to values other than 1. `SQLSetStmtAttr(stmt, SQL_ATTR_ROW_ARRAY_SIZE, ...)` can no longer be called.

* [AD-772] add documentation for odbc-limitations

* the documentation indicates that SQL_ATTR_ROW_ARRAY_SIZE has default value 1 and change is not supported.
* the rest of documentation (odbc-limitations.md) can be completed in AD-682

* [AD-772] resolve code review comments

* change documentation
* remove empty line

Co-Authored-By: Bruce Irschick <[email protected]>

* [AD-772] add test TestSQLSetStmtAttrRowArraySize

* the test TestSQLSetStmtAttrRowArraySize checks that statement array size cannot be set to values other than 1

* [AD-772] resolve code review comments

* remove empty space

* [AD-772] fix mac build error

* [AD-772] fix mac build error

Co-authored-by: Bruce Irschick <[email protected]>
### Summary

<!--- General summary / title -->
Add log message to statement.cpp.
### Description

<!--- Details of what you changed -->
rowArraySize should not hold values other than 1, therefore putting a log to indicate it better
### Related Issue

<!--- Link to issue where this is tracked -->
https://bitquill.atlassian.net/browse/AD-801

* [AD-801] add logs

* rowArraySize should not hold values other than 1, therefore putting a log to indicate it better

* [AD-801] reformat

* [AD-801] address code review comments
### Summary

[AD-573] unicode port ( ODBC W API Interfaces)

### Description

- [x] Add the -DUNICODE=1 definition.
- [x] Convert SQLWCHAR to/from UTF-8 encoded strings internally
- [x] Ensure tests use a combination of SQLWCHAR and SQLCHAR, where appropriate
- [x] Add test to perform query with wide characters and return wide and non-wide results.
- [x] Report `W` (wide) types for columns with JDBC_CHAR/JDBC_VARCHAR/JDBC_LONGVARCHAR.

### Related Issue

https://bitquill.atlassian.net/browse/AD-573

* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

* [AD-735] large dataset crash issue (#74)

### Summary

ODBC driver will not run on large document tests

### Description
The performance test crashes for large document tests. 

1. The root cause is the wrong memory is passed to SQLBindCol(). The parameter TargetValuePtr is passed &cols[i][0].data_dat[i]. The i could exceed 255 for large table while its max valid value should be 254. The correct value should be 0.
2. The SQLExtendedFetch is deprecated. Replace it with SQLFetch.

### Related Issue

https://bitquill.atlassian.net/browse/AD-735

* [AD-509] Update mac developer environment setup

* Adjust formatting

* Add note about llvm

* Add note about iodbc

* Update README.md

change the install options for OpenSSL, since vcpkg is a preferred option

* Update README.md

remove the WiX Toolset v4 requirement

* Update README.md

add steps for the fix for ignite-odbc-tests.profraw error in README.

* [AD-517] Remove old properties + add new properties

* remove SSL settings and add TLS checkbox on the Configuration Window

* add comments for my own work

added some comments for my own convenience. Will remove later

* fix tls checkbox on Configuration Window

fixed by updating ChildId in tlsCheckBox = CreateCheckBox

* add TlsAllowInvalidHostnames checkbox and TLS CA edit to the Configuration Window

* Update configuration.cpp

add comment to illustrate plan on what to do for the configuration window

* Update dsn_configuration_window.cpp

bugfix to make tlsCheckBox and tlsAllowInvalidHostnamesCheckBox read into the saved values

* change defaultFetchSize to fetchSize in configuration.h

* change Default DSN name to DocumentDB DSN

* add App Name, Fetch Size, Read Preference, and login timeout to configuration window

* [AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h

Files that had the change connection_string_parser.cpp, connection_string_parser.h, dsn_config.cpp, batch_query.cpp, data_query.cpp.

* [AD-522] save read preference settings

* [AD-522] remove commented out code

* [AD-522] Implement replicaSet and retryReads on Configuration Window

* [AD-517] Re-enable unit tests - WIP -  still need to cleanup

* [AD-522] add space to code lines for format consistency in configuration_window.h

* Add more unit tests

* Remove extra file

* [AD-522] Add small letter case to keep format consistency in dsn_configuration_window.h

 Add small letter case to keep format consistency in dsn_configuration_window.h
fixed one typo (Create authentication settings group box)

* Remove redundant declaration

* [AD-522] add variable definitions for SSH tunnel settings for config UI

* [AD-522] add function definition for SSH Tunnel

added SSH User, SSH Host. SSH Strict Host Key Checking, and SSH Known Hosts File onto the UI. However, the code to save the written values would be done in later commits.

* [AD-522] code draft for configuration.cpp

add draft variable definition to Enable ssh tunnel boolean value

* Revert "change defaultFetchSize to fetchSize in configuration.h"

This reverts commit f311e3bc7df1fd66d7be66c8e60170a41d078c18.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"

This reverts commit 2bcd2a492bd69fbde5de986a03c5a407a729ba47.

* [AD-517] * Change the C++ version to use to compile.

* [AD-522] change fetchSize to defaultFetchSize on configuration window for consistency with JDBC driver

* [AD-517] * Changed checks.yml so that it doesn't fail on code review errors.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h""

This reverts commit 124b7256d8f96fb31363aa2efb0423b115b11b0a.

* [AD-522] make TLS allow invalid hostnames checkbox enabled only when tls Check box is checked

* Revert "Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"""

This reverts commit aa7731a67f123c8942b89cba8334efe15776f6c8.

* Improvements from review

* Updated comments

* [AD-522] save SSH values for re-read, make settings window into 2 columns

Make ssl and additional settings groups to be on the right side of the column on the configuration window. This is subject to change later.
I created the function
void DsnConfigurationWindow::RetrieveSshParameters(config::Configuration& cfg) const
to save SSH values.
The width value in the DsnConfigurationWindow constructor is doubled from 360 to 720 and added the margin value. The margins currently look imbalanced on the settings box, and will be fixed in later commits.
Make Ok button and Cancel buttons aligned with the right column
bugfix - allow the SSH strict host checking checkbox to be checked on and off by adding the case ChildId::SSH_STRICT_HOST_KEY_CHECKING_CHECK_BOX definition.

* Removed includes no longer being used in configuration.h

* Some formatting improvements

* [Ad-522] add sshEnable variable in DSN config

- added sshEnable variable definition and getter/setter for sshEnable.
- added code for parsing sshEnable in the connection string parser

* [AD-522] change from GetSshEnable to IsSshEnable for consistency

* [AD-522] comment out deprecated readPreference variable

start on transitioning from readPreferenceEdit to readPreference combo box

* [AD-522] add SSH enable checkbox, SSH private key passphrase, and SSH private key file

* add SSH Enable variable in configuration.h and configuration.cpp
* add SSH checkbox in SSH group setting
* add SSH private key file edit in SSH group setting
* add SSH private key pass phrase in SSH group setting
** SSH private key passphrase label requires double the row height due to the label being long.
* make SSH setting items disabled/enabled as SSH enable checkbox is unchecked/checked
* save SSH variables to configuration when Ok button is pressed.

* [AD-522] read_preference.h fix

* add guards to read_preference.h fix
* include read_preference.h in dsn_configuration_window.cpp
* add draft code for read preference in dsn_configuration_window.cpp

* [AD-522] update fields in configuration window

* modified order of fields in the configuration window.
- Retry reads checkbox is now in the first row under "Additional Settings".
- SSH Strict host key check is now in the last row under "Internal SSH Tunnel Settings"
- Allow invalid hostnames checkbox now is in 2nd row under "TLS/SSL settings"
* added warning sentences for Allow invalid hostnames checkbox and SSH strict host key check

* Improvements from code review + address some warnings

* Change connection _test to use hostname key instead of address

* Change connection_test to use databse key instead of schema key

* [AD-522] implement read Preference

* add SpaceToUnderscore function
* implement read Preference in Config window and save the value

* Attempt to fix windows 32 build

* [AD-522] refactor dsn_configuration_window.cpp

refactor code format; remove spaces and  unnecessary comments

* [AD-522] fix config window margins

now the config window is symmetric

* Fix formatting

* [AD-522] add HasText() function to window.h

* previously, the definition of HasText was mistakenly committed in commit cbaeedd0cde8b82bc29134efcad28dba943751c2.
* add header of HasText() to resolve building errors in origin
* update HasText() function to make code simpler

* [AD-522] make "rs0" the default value of replicaSet

* [AD-522] implement database, hostname, port fields. And disable ok button unless all required fields are filled

* implement database, hostname, port fields.
* disable ok button unless all required fields (database, hostname, port, username, password) are filled
* added boolean created to indicate whether the configuration window has been created. If has, then check for disabling/enabling the Ok button

* [AD-522] rename SSH Known Hosts File label for clarity

* [AD-522] refactor logs for retrieving TSL settings

Make the sentences align

* [AD-522] rename TLS CA File label for clarity

* change label length to the same label length as connection settings group

* [AD-522] move authorization setting fields to connection fields

reason: only username and password are authorization settings, the rest are not. We chose to put username, password in the connections group because all fields in the connections group are required.

* [AD-522] bugfix-comment out address field related code in RetrieveConnectionParameters

* [AD-522] rename sslSettings to tlsSettings and add comment for connection settings group

* [AD-522] remove protocol version from config window

* [AD-522] bug fix sshKnownHostsFile not saved when Ok button is pressed

* [AD-522] remove commented out #include headers

* [AD-522] disable  SSH Known Hosts File edit when SSH Strict Host Key Check check box is unchecked

* move SSH Strict Host Key Checking check box above SSH Known Hosts File edit in the config window

* [AD-522] refactor - remove commented out header code

* [AD-522] add comments in configuration.cpp for planning

* modify commented out example code in dsn_configuration_window.cpp for clarity

* [AD-522] change from SSL to TLS for consistency

* SSL_SETTINGS_GROUP_BOX is changed to TLS_SETTINGS_GROUP_BOX

* [AD-522] remove commented out code

Removed commented out code:
* RetrieveAuthParameters
* CreateAuthSettingsGroup
* CreateAdditionalSettingsGroup function and CreateSslSettingsGroup function for 1 column window
* protocol version - related code
* authSettingsGroupBox code

* [AD-522] remove std::auto_ptr<Window> authSettingsGroupBox;

* [AD-522] remove address field auto pointer initialization

* [AD-522] remove address field from config window constructor

* [AD-522] refactor - remove unneeded commented out code in HasText

* [AD-522] refactor - remove white spaces and update comment

* [AD-522] debug scan_method.h

* SpaceToUnderscore is called in scan_method.cpp to make reads better
* added guards to scan_method.h

* [AD-522] implement Schema group settings box

* fixed bug in dsn_config.cpp to save scanLimit correctly

* [AD-522] update readPreference default value to unknown

* removed unneeded commented out code
* removed unnecessary code to get string value on readPreference

* [AD-522] refactor - remove unnecessary comments

* [AD-522] adjust window size and additional settings group label size

* additional settings group label size is now the same as other settings group in the same column

* Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window"

This reverts commit 8d609dac52d3e3fc0442f2e8ec8526ec3eb2d6ab, reversing
changes made to 0aa20527606ccc11a7a99d6bd6f8d249fa8d1f61.

* [AD-522] keyboard user interface design + disable DSN empty strimg warning dialog

* make cursor go to checkboxes on the Config window and not skip them when tab key is pressed
* when DSN field is empty, Ok Button is disabled
* make default replicaSet value empty string (default is disable repliaSet)
* refactor - removed unneeded comments

* [AD-522] add end_point header to resolve build errors

end_point related code still exist in connection.cpp, so I readded the header for end_point

* Revert "Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window""

This reverts commit df0cad5490612c695ca28cc8ee44c73dbb1b68bd.

* [AD-522] resolve errors after merging develop branch

* GetAddresses() is deprecated, replaced it with GetHostname() and GetTcpPort() to get hostname and port number, respectively.
* replaced GetSchema() with GetSchemaName()
* removed commented out code
* refactor with dsn_configuration_window.cpp

* [AD-512] Resolve issue with missing include file.

* [AD-522] make BoolParseResult recognizable

* [AD-522] fix build errors after develop branch merge

* update schema checkbox string
* make edit row height single
* update SetTcpPort to SetPort etc
* define default value for sshEnable

* [AD-522] enable encrypt password for ssh private key passphrase

* modify refresh schema checkbox string to fit better
* remove log message for ssh private key passphrase to increase security

* [AD-521] add comments and notes for starting AD-521

* [AD-509] update readMe to include directions about saving Java bin and server directories.

* reason: ODBC JNI calls have a dependency on `jvm.dll`, as a result, the ODBC driver cannot operate properly unless the Java bin and server directories are included in the path.

* [AD-522] reduce space between ssh private key passphrase and the checkbox below

* [AD-521] define constants for Java GetSshLocalPort method call

* [AD-521] integrate code review feedback from Andie

* refactors with comment changes and log changes

* [AD-521] refactor code

* make open brace bracket start on new line for JVMException
* remove excess space

* [AD-427] Tracer Code - Limited Capability to load metadata - work-in-progress.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-522] remove space and add new line at the end of enum types

* [AD-522] add new lines at the end of Enum type files

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] add changes for Java.cpp from Bruce's AD-427 branch

* those changes are not included in the previous merge, and are now added

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] JNI wrapper calls to iSshTunnelActive and getSshLocalPort

* some draft comments are left to be cleaned up

* [AD-521] debug getSshLocalPort

* change function type signature from optional to int
* refactor - remove comments

* [AD-521] change return value in getSshLocalPort from boolean to a 0

* try to fix access memory issue in TestDriverManagerGetConnection

* [AD-522] resolve build errors after merge

* fix bug for schema name not correctly loaded on the config window
* removed unnecessary headers

* [AD-427] Added ResultSet.next and ResultSet.GetString()

* [AD-522] address code review comments

* change to enum class type for read_preference.h and scan_method.h
* change the way enum class objects are read
* add static cast to enum types so SetSelection function can work with it
* refactor - removed unnecessary comments
* refactor - changes code doc in connection_string_parser.h

* [AD-521] implement tests for JNI wrapper code

* test for TestDocumentDbConnectionGetSshTunnelPortSshTunnelNotActive is not yet active, need to be enabled when we can get external SSH tunnel working.
* bug fix: re-implemented DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.
connection.Get()->GetRef() is passed as first parameter because jobject is required for CallIntMethod and CallBooleanMethod.
* better JNI wrapper code is needed in the future so warnings/errors pop up when we pass jobject instead of jclass to the methods.

* [AD-521] refactor - remove comments and commented out code

* [AD-589] implement JNI method call for GetDatabaseMetadata

* define the method constant for DocumentDbConnection.getDatabaseMetadata()
* create JNI wrapper function for DocumentDbConnection.getMetaData

* [AD-589] implement unit test for DocumentDbConnection.getMetaData

* [AD-521] add calls to AutoCloseConnection in unit tests

* pass & errInfo instead of * errInfo in DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.

* [AD-521] remove unnecessary comment

* [AD-589] fix merge issues

* I missed this part of code when I was resolving the merge conflicts. Now they are corrected

* [AD-589] update getMetaData JNI wrapper code to pass &errInfo

* implement unit test for getMetaData

* [AD-589] implement JNI wrapper for DocumentDbDatabaseSchemaMetadataGetSchemaName

* implement Java class for
* define constant for DocumentDbDatabaseSchemaMetadataGetSchemaName
*  add empty test function for TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* [AD-589] implement unit test for DbDatabaseSchemaMetadataGetSchemaName

* [AD-521] refactor - change case of ssh to SSH for consistency

* [AD-589] address code review comments

* rename DocumentDbConnectionGetMetaData to DocumentDbConnectionGetDatabaseMetaData

* [AD-589] change case from MetaData to Metadata to match Java method name

* [AD-589] refactor: change from metaData to metadata

changes occurred in:
* DocumentDbConnectionGetDatabaseMetadata
* DocumentDbDatabaseSchemaMetadataGetSchemaName
* TestDocumentDbConnectionGetDatabaseMetadata
* TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* Birschick bq/sync up (#21)

* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

Co-authored-by: affonsoBQ <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>

* [AD-735] large dataset crash issue (#23)

* first test

* fix performance test crash

* fix performance test crash

* fix whitespace issue

* rework based on comments

Co-authored-by: Andie Montoya <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>
Co-authored-by: affonsoBQ <[email protected]>
Co-authored-by: RoyZhang2022 <[email protected]>

* [AD-649] Add missing documentation (#73)

* Initial user/developer documentation
Co-authored-by: andiem-bq <[email protected]>
Co-authored-by: Bruce Irschick <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>

* [AD-550] Adapt Foreign Keys (#75)

Summary
Adapt Foreign Keys (i.e., the SQLForeignKeys function)

Description
 JNI wrapper code for getImportedKeys
 adapt SQLForeignKeys function
 unit test for jni_test
 unit test for java_test
Related Issue
https://bitquill.atlassian.net/browse/AD-550

* [AD-509] Update mac developer environment setup

* Adjust formatting

* Add note about llvm

* Add note about iodbc

* Update README.md

change the install options for OpenSSL, since vcpkg is a preferred option

* Update README.md

remove the WiX Toolset v4 requirement

* Update README.md

add steps for the fix for ignite-odbc-tests.profraw error in README.

* [AD-517] Remove old properties + add new properties

* remove SSL settings and add TLS checkbox on the Configuration Window

* add comments for my own work

added some comments for my own convenience. Will remove later

* fix tls checkbox on Configuration Window

fixed by updating ChildId in tlsCheckBox = CreateCheckBox

* add TlsAllowInvalidHostnames checkbox and TLS CA edit to the Configuration Window

* Update configuration.cpp

add comment to illustrate plan on what to do for the configuration window

* Update dsn_configuration_window.cpp

bugfix to make tlsCheckBox and tlsAllowInvalidHostnamesCheckBox read into the saved values

* change defaultFetchSize to fetchSize in configuration.h

* change Default DSN name to DocumentDB DSN

* add App Name, Fetch Size, Read Preference, and login timeout to configuration window

* [AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h

Files that had the change connection_string_parser.cpp, connection_string_parser.h, dsn_config.cpp, batch_query.cpp, data_query.cpp.

* [AD-522] save read preference settings

* [AD-522] remove commented out code

* [AD-522] Implement replicaSet and retryReads on Configuration Window

* [AD-517] Re-enable unit tests - WIP -  still need to cleanup

* [AD-522] add space to code lines for format consistency in configuration_window.h

* Add more unit tests

* Remove extra file

* [AD-522] Add small letter case to keep format consistency in dsn_configuration_window.h

 Add small letter case to keep format consistency in dsn_configuration_window.h
fixed one typo (Create authentication settings group box)

* Remove redundant declaration

* [AD-522] add variable definitions for SSH tunnel settings for config UI

* [AD-522] add function definition for SSH Tunnel

added SSH User, SSH Host. SSH Strict Host Key Checking, and SSH Known Hosts File onto the UI. However, the code to save the written values would be done in later commits.

* [AD-522] code draft for configuration.cpp

add draft variable definition to Enable ssh tunnel boolean value

* Revert "change defaultFetchSize to fetchSize in configuration.h"

This reverts commit f311e3bc7df1fd66d7be66c8e60170a41d078c18.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"

This reverts commit 2bcd2a492bd69fbde5de986a03c5a407a729ba47.

* [AD-517] * Change the C++ version to use to compile.

* [AD-522] change fetchSize to defaultFetchSize on configuration window for consistency with JDBC driver

* [AD-517] * Changed checks.yml so that it doesn't fail on code review errors.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h""

This reverts commit 124b7256d8f96fb31363aa2efb0423b115b11b0a.

* [AD-522] make TLS allow invalid hostnames checkbox enabled only when tls Check box is checked

* Revert "Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"""

This reverts commit aa7731a67f123c8942b89cba8334efe15776f6c8.

* Improvements from review

* Updated comments

* [AD-522] save SSH values for re-read, make settings window into 2 columns

Make ssl and additional settings groups to be on the right side of the column on the configuration window. This is subject to change later.
I created the function
void DsnConfigurationWindow::RetrieveSshParameters(config::Configuration& cfg) const
to save SSH values.
The width value in the DsnConfigurationWindow constructor is doubled from 360 to 720 and added the margin value. The margins currently look imbalanced on the settings box, and will be fixed in later commits.
Make Ok button and Cancel buttons aligned with the right column
bugfix - allow the SSH strict host checking checkbox to be checked on and off by adding the case ChildId::SSH_STRICT_HOST_KEY_CHECKING_CHECK_BOX definition.

* Removed includes no longer being used in configuration.h

* Some formatting improvements

* [Ad-522] add sshEnable variable in DSN config

- added sshEnable variable definition and getter/setter for sshEnable.
- added code for parsing sshEnable in the connection string parser

* [AD-522] change from GetSshEnable to IsSshEnable for consistency

* [AD-522] comment out deprecated readPreference variable

start on transitioning from readPreferenceEdit to readPreference combo box

* [AD-522] add SSH enable checkbox, SSH private key passphrase, and SSH private key file

* add SSH Enable variable in configuration.h and configuration.cpp
* add SSH checkbox in SSH group setting
* add SSH private key file edit in SSH group setting
* add SSH private key pass phrase in SSH group setting
** SSH private key passphrase label requires double the row height due to the label being long.
* make SSH setting items disabled/enabled as SSH enable checkbox is unchecked/checked
* save SSH variables to configuration when Ok button is pressed.

* [AD-522] read_preference.h fix

* add guards to read_preference.h fix
* include read_preference.h in dsn_configuration_window.cpp
* add draft code for read preference in dsn_configuration_window.cpp

* [AD-522] update fields in configuration window

* modified order of fields in the configuration window.
- Retry reads checkbox is now in the first row under "Additional Settings".
- SSH Strict host key check is now in the last row under "Internal SSH Tunnel Settings"
- Allow invalid hostnames checkbox now is in 2nd row under "TLS/SSL settings"
* added warning sentences for Allow invalid hostnames checkbox and SSH strict host key check

* Improvements from code review + address some warnings

* Change connection _test to use hostname key instead of address

* Change connection_test to use databse key instead of schema key

* [AD-522] implement read Preference

* add SpaceToUnderscore function
* implement read Preference in Config window and save the value

* Attempt to fix windows 32 build

* [AD-522] refactor dsn_configuration_window.cpp

refactor code format; remove spaces and  unnecessary comments

* [AD-522] fix config window margins

now the config window is symmetric

* Fix formatting

* [AD-522] add HasText() function to window.h

* previously, the definition of HasText was mistakenly committed in commit cbaeedd0cde8b82bc29134efcad28dba943751c2.
* add header of HasText() to resolve building errors in origin
* update HasText() function to make code simpler

* [AD-522] make "rs0" the default value of replicaSet

* [AD-522] implement database, hostname, port fields. And disable ok button unless all required fields are filled

* implement database, hostname, port fields.
* disable ok button unless all required fields (database, hostname, port, username, password) are filled
* added boolean created to indicate whether the configuration window has been created. If has, then check for disabling/enabling the Ok button

* [AD-522] rename SSH Known Hosts File label for clarity

* [AD-522] refactor logs for retrieving TSL settings

Make the sentences align

* [AD-522] rename TLS CA File label for clarity

* change label length to the same label length as connection settings group

* [AD-522] move authorization setting fields to connection fields

reason: only username and password are authorization settings, the rest are not. We chose to put username, password in the connections group because all fields in the connections group are required.

* [AD-522] bugfix-comment out address field related code in RetrieveConnectionParameters

* [AD-522] rename sslSettings to tlsSettings and add comment for connection settings group

* [AD-522] remove protocol version from config window

* [AD-522] bug fix sshKnownHostsFile not saved when Ok button is pressed

* [AD-522] remove commented out #include headers

* [AD-522] disable  SSH Known Hosts File edit when SSH Strict Host Key Check check box is unchecked

* move SSH Strict Host Key Checking check box above SSH Known Hosts File edit in the config window

* [AD-522] refactor - remove commented out header code

* [AD-522] add comments in configuration.cpp for planning

* modify commented out example code in dsn_configuration_window.cpp for clarity

* [AD-522] change from SSL to TLS for consistency

* SSL_SETTINGS_GROUP_BOX is changed to TLS_SETTINGS_GROUP_BOX

* [AD-522] remove commented out code

Removed commented out code:
* RetrieveAuthParameters
* CreateAuthSettingsGroup
* CreateAdditionalSettingsGroup function and CreateSslSettingsGroup function for 1 column window
* protocol version - related code
* authSettingsGroupBox code

* [AD-522] remove std::auto_ptr<Window> authSettingsGroupBox;

* [AD-522] remove address field auto pointer initialization

* [AD-522] remove address field from config window constructor

* [AD-522] refactor - remove unneeded commented out code in HasText

* [AD-522] refactor - remove white spaces and update comment

* [AD-522] debug scan_method.h

* SpaceToUnderscore is called in scan_method.cpp to make reads better
* added guards to scan_method.h

* [AD-522] implement Schema group settings box

* fixed bug in dsn_config.cpp to save scanLimit correctly

* [AD-522] update readPreference default value to unknown

* removed unneeded commented out code
* removed unnecessary code to get string value on readPreference

* [AD-522] refactor - remove unnecessary comments

* [AD-522] adjust window size and additional settings group label size

* additional settings group label size is now the same as other settings group in the same column

* Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window"

This reverts commit 8d609dac52d3e3fc0442f2e8ec8526ec3eb2d6ab, reversing
changes made to 0aa20527606ccc11a7a99d6bd6f8d249fa8d1f61.

* [AD-522] keyboard user interface design + disable DSN empty strimg warning dialog

* make cursor go to checkboxes on the Config window and not skip them when tab key is pressed
* when DSN field is empty, Ok Button is disabled
* make default replicaSet value empty string (default is disable repliaSet)
* refactor - removed unneeded comments

* [AD-522] add end_point header to resolve build errors

end_point related code still exist in connection.cpp, so I readded the header for end_point

* Revert "Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window""

This reverts commit df0cad5490612c695ca28cc8ee44c73dbb1b68bd.

* [AD-522] resolve errors after merging develop branch

* GetAddresses() is deprecated, replaced it with GetHostname() and GetTcpPort() to get hostname and port number, respectively.
* replaced GetSchema() with GetSchemaName()
* removed commented out code
* refactor with dsn_configuration_window.cpp

* [AD-512] Resolve issue with missing include file.

* [AD-522] make BoolParseResult recognizable

* [AD-522] fix build errors after develop branch merge

* update schema checkbox string
* make edit row height single
* update SetTcpPort to SetPort etc
* define default value for sshEnable

* [AD-522] enable encrypt password for ssh private key passphrase

* modify refresh schema checkbox string to fit better
* remove log message for ssh private key passphrase to increase security

* [AD-521] add comments and notes for starting AD-521

* [AD-509] update readMe to include directions about saving Java bin and server directories.

* reason: ODBC JNI calls have a dependency on `jvm.dll`, as a result, the ODBC driver cannot operate properly unless the Java bin and server directories are included in the path.

* [AD-522] reduce space between ssh private key passphrase and the checkbox below

* [AD-521] define constants for Java GetSshLocalPort method call

* [AD-521] integrate code review feedback from Andie

* refactors with comment changes and log changes

* [AD-521] refactor code

* make open brace bracket start on new line for JVMException
* remove excess space

* [AD-427] Tracer Code - Limited Capability to load metadata - work-in-progress.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-522] remove space and add new line at the end of enum types

* [AD-522] add new lines at the end of Enum type files

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] add changes for Java.cpp from Bruce's AD-427 branch

* those changes are not included in the previous merge, and are now added

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] JNI wrapper calls to iSshTunnelActive and getSshLocalPort

* some draft comments are left to be cleaned up

* [AD-521] debug getSshLocalPort

* change function type signature from optional to int
* refactor - remove comments

* [AD-521] change return value in getSshLocalPort from boolean to a 0

* try to fix access memory issue in TestDriverManagerGetConnection

* [AD-522] resolve build errors after merge

* fix bug for schema name not correctly loaded on the config window
* removed unnecessary headers

* [AD-427] Added ResultSet.next and ResultSet.GetString()

* [AD-522] address code review comments

* change to enum class type for read_preference.h and scan_method.h
* change the way enum class objects are read
* add static cast to enum types so SetSelection function can work with it
* refactor - removed unnecessary comments
* refactor - changes code doc in connection_string_parser.h

* [AD-521] implement tests for JNI wrapper code

* test for TestDocumentDbConnectionGetSshTunnelPortSshTunnelNotActive is not yet active, need to be enabled when we can get external SSH tunnel working.
* bug fix: re-implemented DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.
connection.Get()->GetRef() is passed as first parameter because jobject is required for CallIntMethod and CallBooleanMethod.
* better JNI wrapper code is needed in the future so warnings/errors pop up when we pass jobject instead of jclass to the methods.

* [AD-521] refactor - remove comments and commented out code

* [AD-589] implement JNI method call for GetDatabaseMetadata

* define the method constant for DocumentDbConnection.getDatabaseMetadata()
* create JNI wrapper function for DocumentDbConnection.getMetaData

* [AD-589] implement unit test for DocumentDbConnection.getMetaData

* [AD-521] add calls to AutoCloseConnection in unit tests

* pass & errInfo instead of * errInfo in DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.

* [AD-521] remove unnecessary comment

* [AD-589] fix merge issues

* I missed this part of code when I was resolving the merge conflicts. Now they are corrected

* [AD-589] update getMetaData JNI wrapper code to pass &errInfo

* implement unit test for getMetaData

* [AD-589] implement JNI wrapper for DocumentDbDatabaseSchemaMetadataGetSchemaName

* implement Java class for
* define constant for DocumentDbDatabaseSchemaMetadataGetSchemaName
*  add empty test function for TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* [AD-589] implement unit test for DbDatabaseSchemaMetadataGetSchemaName

* [AD-521] refactor - change case of ssh to SSH for consistency

* [AD-589] address code review comments

* rename DocumentDbConnectionGetMetaData to DocumentDbConnectionGetDatabaseMetaData

* [AD-589] change case from MetaData to Metadata to match Java method name

* [AD-589] refactor: change from metaData to metadata

changes occurred in:
* DocumentDbConnectionGetDatabaseMetadata
* DocumentDbDatabaseSchemaMetadataGetSchemaName
* TestDocumentDbConnectionGetDatabaseMetadata
* TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* Birschick bq/sync up (#21)

* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

Co-authored-by: affonsoBQ <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>

* [AD-735] large dataset crash issue (#23)

* first test

* fix performance test crash

* fix performance test crash

* fix whitespace issue

* rework based on comments

* SQLPrimaryKey using JNI

* odbc test failure fix

* Revert "odbc test failure fix"

This reverts commit edb94599c77b9d60d68cbad9489838742f31805c.

* Revert "SQLPrimaryKey using JNI"

This reverts commit ba4b68f082542878524e9100d27f31045a2d14dc.

* [AD-550] Adapt Foreign Keys (#24)

* [AD-550] JNI implementation for getImportedKeys

* [AD-550] update Pull Request Template

* added reviewees Roy Zhang and Micthell Elholm

* [AD-550] add todo note to unit test

* [AD-550] define GetImportedKeys in database_metadata.h/.cpp

* add ODBC wrapper code to the JNI call for GetImportedKeys

* [AD-550] initialize string vars to be empty string in column_metadata_query

* [AD-550] modify ForeignKeysQuery to accept 3 arguments only

* modified ForeignKeysQuery to only accept catalog, schema, and table, as other fields are not needed.

* [AD-550] update column metadata for foreign keys

* [AD-550] fix typo in primary_key_meta.h

* [AD-550] define vars for foreign key meta

* [AD-550] add getter functions for vars in foreign_key_meta.h

* [AD-550] support vars in foreign key meta to be optional

* [AD-550] add headers for boost optional

* [AD-550] add headers and constructors for foreign key meta

* added ForeignKeyMeta constructor, and copy constructor
*added ForeignKeyMeta destructor
* define ForeignKeyMetaVector
* basically, complete foreign_key_meta.h

* [AD-550] implement resultset.getSmallInt

* implement resultset.getSmallInt taking column indices or column names as parameters
* make ColumnMeta::dataType be updated with  resultSet.Get()->GetSmallInt to simplify code and readbility

* [AD-550] Add foreign_key_meta.cpp

* implemented functions:
ReadForeignKeysColumnMetaVector
ForeignKeyMeta::Read

* [AD-550] update CMakeLists to include foreign_key_meta.cpp

* [AD-550] implement MakeRequestGetForeignKeysMeta

* MakeRequestGetForeignKeysMeta calls GetImportedKeys to get Jni ResultSet object for foreign keys, and then reads the resultSet object to fill in the meta object.

* [AD-550] update ForeignKeysQuery::DataAvailable and ForeignKeysQuery::Close

* update meta object accordingly whenForeignKeysQuery::Close() is called.
* return boolean for whether data is available based on meta object

* [AD-550] implement ForeignKeysQuery::Execute and FetchNextRow

* the code for ForeignKeysQuery::Execute and ForeignKeysQuery::FetchNextRow is based on ColumnMetadataQuery::Execute and ColumnMetadataQuery::FetchNextRow

* [AD-550] fix Mac and Linux build

* remove extra qualification on GetSmallInt function

* [AD-550] implement ForeignKeysQuery::GetColumn

* had formatting changes as well

* [AD-550] JNI implementation for getImportedKeys

* [AD-550] update Pull Request Template

* added reviewees Roy Zhang and Micthell Elholm

* [AD-550] add todo note to unit test

* [AD-550] define GetImportedKeys in database_metadata.h/.cpp

* add ODBC wrapper code to the JNI call for GetImportedKeys

* [AD-550] initialize string vars to be empty string in column_metadata_query

* [AD-550] modify ForeignKeysQuery to accept 3 arguments only

* modified ForeignKeysQuery to only accept catalog, schema, and table, as other fields are not needed.

* [AD-550] update column metadata for foreign keys

* [AD-550] fix typo in primary_key_meta.h

* [AD-550] define vars for foreign key meta

* [AD-550] add getter functions for vars in foreign_key_meta.h

* [AD-550] support vars in foreign key meta to be optional

* [AD-550] add headers for boost optional

* [AD-550] add headers and constructors for foreign key meta

* added ForeignKeyMeta constructor, and copy constructor
*added ForeignKeyMeta destructor
* define ForeignKeyMetaVector
* basically, complete foreign_key_meta.h

* [AD-550] implement resultset.getSmallInt

* implement resultset.getSmallInt taking column indices or column names as parameters
* make ColumnMeta::dataType be updated with  resultSet.Get()->GetSmallInt to simplify code and readbility

* [AD-550] Add foreign_key_meta.cpp

* implemented functions:
ReadForeignKeysColumnMetaVector
ForeignKeyMeta::Read

* [AD-550] update CMakeLists to include foreign_key_meta.cpp

* [AD-550] implement MakeRequestGetForeignKeysMeta

* MakeRequestGetForeignKeysMeta calls GetImportedKeys to get Jni ResultSet object for foreign keys, and then reads the resultSet object to fill in the meta object.

* [AD-550] update ForeignKeysQuery::DataAvailable and ForeignKeysQuery::Close

* update meta object accordingly whenForeignKeysQuery::Close() is called.
* return boolean for whether data is available based on meta object

* [AD-550] implement ForeignKeysQuery::Execute and FetchNextRow

* the code for ForeignKeysQuery::Execute and ForeignKeysQuery::FetchNextRow is based on ColumnMetadataQuery::Execute and ColumnMetadataQuery::FetchNextRow

* [AD-550] fix Mac and Linux build

* remove extra qualification on GetSmallInt function

* [AD-550] implement ForeignKeysQuery::GetColumn

* had formatting changes as well

* [AD-550] update docs for foreign_keys_query.h

* [AD-550] refine SQLForeignKey call

* [AD-550] add draft foreign key test for JNI test

* [AD-550] add test tables for jni test

* [AD-550] update test TestDocumentDbDatabaseMetaDataGetImportedKeys

* update test to query virtual table jni_test_001_sub_doc

* [AD-550] add SQLForeignKeys sql api test

* [AD-550] add logs for ReadForeignKeysColumnMetaVector

* PK* variables will contain the list of foreign keys in the specified table

* [AD-550] reformat jni_test

* [AD-550] implement TestDatabaseMetaDataGetImportedKeys for java_test

* [AD-550] add test document meta_queries_test_002_with_array

* this document will be used to test SQLForeignKeys in meta_queries_test

* [AD-550] refactor TestSQLForeignKeys test

* reason: I see that `SQLCHAR empty[] = "";` is used in meta_queries_test, and I think that might be a better way of writing the parameters

* [AD-550] add test for SQLForeignKeys in meta_queries_test

tests added:
* TestGetDataWithForeignKeysReturnsOneFromLocalServer
* TestGetDataWithForeignKeysReturnsNone
* they use test table meta_queries_test_002_with_array

* [AD-550] clean up

* add doc for SQLForeignKeys
* remove comments

* [AD-550] remove commented out code

* [AD-550] remove unneeded commented out code

* [AD-550] make ODBC pass nullptr for JString catalog and schema for SQLForeignKeys

*  in getImportedKeys, null boost::optional strings will be passed as nullptr to JDBC
* make jni test and java test pass null boost::optional strings to JNI calls for getImportedKeys
* ODBC now passes boost::optional strings foreignCatalog and foreignSchema to ExecuteGetForeignKeysQuery function.

* [AD-550] add if check for sqlStrLen

* if sqlString is empty, return boost::none

* [AD-550] debug `choco install cppcheck -y` not working on GitHub Actions

* [AD-550] add tests for testing empty string parameters

* added Java test TestDatabaseMetaDataGetImportedKeysReturnsNone
* added Jni test TestDocumentDbDatabaseMetaDataGetImportedKeysReturnsNone

* [AD-550] disable cppcheck

* created [AD-752](https://bitquill.atlassian.net/browse/AD-752) to investigate it further.

* [AD-550] change the place for code doc for function SQLForeignKeys

* [AD-550] update if statement check of SqlStringToOptString

* to resolve code review comment

* [AD-550] resolve code review comment

* The sqlStrLen is an int32_t, so "!sqlStrLen" can be removed

* [AD-550] make boost optional strings constant where needed

* previously, I changed `const std::string` to `boost::optional< std::string >` in some areas, and this is now fixed by replacing the latter with `boost::optional< const std::string >`

* [AD-550] SqlStringToOptString fix

* also fixed SqlStringToConstOptString
* reason: SQL_NTS is a flag that indicates that the string passed is a null-terminated string.

* [AD-550] make tests pass null to SQLForeignKeys

* [AD-550] add test case for TestGetDataWithForeignKeysReturnsNone

*  even with the correct table name, as long as empty strings are passed as catalog/schema, SQL_NO_DATA should be returned

* [AD-550] update SqlStringToOptString

* [AD-550] update TestSQLForeignKeys to pass NULL as parameters properly

* [AD-550] move `const` out of `boost::optional< const std::string >`

* reason: `const boost::optional< std::string >` works better than `boost::optional< const std::string >`.
* this commit is to resolve code review comments

* [AD-550] add meta_queries test that passes catalog as empty string

* [AD-550] Set `fetched` to false in ForeignKeysQuery::Close()

* [AD-550] add explicit conversion to boost::optional variable initialization

* [AD-550] resolve code review comment

* remove duplicate code

* [AD-550] remove function

* removed unneeded function: SqlStringToConstOptString

* [AD-649] Add missing documentation (#29)

### Summary

[AD-649] Add missing documentation

### Description
Update ODBC driver documentation

- [x] Documentation about connections string ( Parameters description)
- [x] Documentation about DSN configuration window ( with screenshots)
- [x] Documentation how the ODBC driver works ( ODBC and JDBC integration)
- [x] Documentation what is supported ( link with JDBC driver)

### Related Issue

https://bitquill.atlassian.net/browse/AD-649

* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

* [AD-735] large dataset crash issue (#74)

### Summary

ODBC driver will not run on large document tests

### Description
The performance test crashes for large document tests. 

1. The root cause is the wrong memory is passed to SQLBindCol(). The parameter TargetValuePtr is passed &cols[i][0].data_dat[i]. The i could exceed 255 for large table while its max valid value should be 254. The correct value should be 0.
2. The SQLExtendedFetch is deprecated. Replace it with SQLFetch.

### Related Issue

https://bitquill.atlassian.net/browse/AD-735

* [AD-509] Update mac developer environment setup

* Adjust formatting

* Add note about llvm

* Add note about iodbc

* Update README.md

change the install options for OpenSSL, since vcpkg is a preferred option

* Update README.md

remove the WiX Toolset v4 requirement

* Update README.md

add steps for the fix for ignite-odbc-tests.profraw error in README.

* [AD-517] Remove old properties + add new properties

* remove SSL settings and add TLS checkbox on the Configuration Window

* add comments for my own work

added some comments for my own convenience. Will remove later

* fix tls checkbox on Configuration Window

fixed by updating ChildId in tlsCheckBox = CreateCheckBox

* add TlsAllowInvalidHostnames checkbox and TLS CA edit to the Configuration Window

* Update configuration.cpp

add comment to illustrate plan on what to do for the configuration window

* Update dsn_configuration_window.cpp

bugfix to make tlsCheckBox and tlsAllowInvalidHostnamesCheckBox read into the saved values

* change defaultFetchSize to fetchSize in configuration.h

* change Default DSN name to DocumentDB DSN

* add App Name, Fetch Size, Read Preference, and login timeout to configuration window

* [AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h

Files that had the change connection_string_parser.cpp, connection_string_parser.h, dsn_config.cpp, batch_query.cpp, data_query.cpp.

* [AD-522] save read preference settings

* [AD-522] remove commented out code

* [AD-522] Implement replicaSet and retryReads on Configuration Window

* [AD-517] Re-enable unit tests - WIP -  still need to cleanup

* [AD-522] add space to code lines for format consistency in configuration_window.h

* Add more unit tests

* Remove extra file

* [AD-522] Add small letter case to keep format consistency in dsn_configuration_window.h

 Add small letter case to keep format consistency in dsn_configuration_window.h
fixed one typo (Create authentication settings group box)

* Remove redundant declaration

* [AD-522] add variable definitions for SSH tunnel settings for config UI

* [AD-522] add function definition for SSH Tunnel

added SSH User, SSH Host. SSH Strict Host Key Checking, and SSH Known Hosts File onto the UI. However, the code to save the written values would be done in later commits.

* [AD-522] code draft for configuration.cpp

add draft variable definition to Enable ssh tunnel boolean value

* Revert "change defaultFetchSize to fetchSize in configuration.h"

This reverts commit f311e3bc7df1fd66d7be66c8e60170a41d078c18.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"

This reverts commit 2bcd2a492bd69fbde5de986a03c5a407a729ba47.

* [AD-517] * Change the C++ version to use to compile.

* [AD-522] change fetchSize to defaultFetchSize on configuration window for consistency with JDBC driver

* [AD-517] * Changed checks.yml so that it doesn't fail on code review errors.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h""

This reverts commit 124b7256d8f96fb31363aa2efb0423b115b11b0a.

* [AD-522] make TLS allow invalid hostnames checkbox enabled only when tls Check box is checked

* Revert "Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"""

This reverts commit aa7731a67f123c8942b89cba8334efe15776f6c8.

* Improvements from review

* Updated comments

* [AD-522] save SSH values for re-read, make settings window into 2 columns

Make ssl and additional settings groups to be on the right side of the column on the configuration window. This is subject to change later.
I created the function
void DsnConfigurationWindow::RetrieveSshParameters(config::Configuration& cfg) const
to save SSH values.
The width value in the DsnConfigurationWindow constructor is doubled from 360 to 720 and added the margin value. The margins currently look imbalanced on the settings box, and will be fixed in later commits.
Make Ok button and Cancel buttons aligned with the right column
bugfix - allow the SSH strict host checking checkbox to be checked on and off by adding the case ChildId::SSH_STRICT_HOST_KEY_CHECKING_CHECK_BOX definition.

* Removed includes no longer being used in configuration.h

* Some formatting improvements

* [Ad-522] add sshEnable variable in DSN config

- added sshEnable variable definition and getter/setter for sshEnable.
- added code for parsing sshEnable in the connection string parser

* [AD-522] change from GetSshEnable to IsSshEnable for consistency

* [AD-522] comment out deprecated readPreference variable

start on transitioning from readPreferenceEdit to readPreference combo box

* [AD-522] add SSH enable checkbox, SSH private key passphrase, and SSH private key file

* add SSH Enable variable in configuration.h and configuration.cpp
* add SSH checkbox in SSH group setting
* add SSH private key file edit in SSH group setting
* add SSH private key pass phrase in SSH group setting
** SSH private key passphrase label requires double the row height due to the label being long.
* make SSH setting items disabled/enabled as SSH enable checkbox is unchecked/checked
* save SSH variables to configuration when Ok button is pressed.

* [AD-522] read_preference.h fix

* add guards to read_preference.h fix
* include read_preference.h in dsn_configuration_window.cpp
* add draft code for read preference in dsn_configuration_window.cpp

* [AD-522] update fields in configuration window

* modified order of fields in the configuration window.
- Retry reads checkbox is now in the first row under "Additional Settings".
- SSH Strict host key check is now in the last row under "Internal SSH Tunnel Settings"
- Allow invalid hostnames checkbox now is in 2nd row under "TLS/SSL settings"
* added warning sentences for Allow invalid hostnames checkbox and SSH strict host key check

* Improvements from code review + address some warnings

* Change connection _test to use hostname key instead of address

* Change connection_test to use databse key instead of schema key

* [AD-522] implement read Preference

* add SpaceToUnderscore function
* implement read Preference in Config window and save the value

* Attempt to fix windows 32 build

* [AD-522] refactor dsn_configuration_window.cpp

refactor code format; remove spaces and  unnecessary comments

* [AD-522] fix config window margins

now the config window is symmetric

* Fix formatting

* [AD-522] add HasText() function to window.h

* previously, the definition of HasText was mistakenly committed in commit cbaeedd0cde8b82bc29134efcad28dba943751c2.
* add header of HasText() to resolve building errors in origin
* update HasText() function to make code simpler

* [AD-522] make "rs0" the default value of replicaSet

* [AD-522] implement database, hostname, port fields. And disable ok button unless all required fields are filled

* implement database, hostname, port fields.
* disable ok button unless all required fields (database, hostname, port, username, password) are filled
* added boolean created to indicate whether the configuration window has been created. If has, then check for disabling/enabling the Ok button

* [AD-522] rename SSH Known Hosts File label for clarity

* [AD-522] refactor logs for retrieving TSL settings

Make the sentences align

* [AD-522] rename TLS CA File label for clarity

* change label length to the same label length as connection settings group

* [AD-522] move authorization setting fields to connection fields

reason: only username and password are authorization settings, the rest are not. We chose to put username, password in the connections group because all fields in the connections group are required.

* [AD-522] bugfix-comment out address field related code in RetrieveConnectionParameters

* [AD-522] rename sslSettings to tlsSettings and add comment for connection settings group

* [AD-522] remove protocol version from config window

* [AD-522] bug fix sshKnownHostsFile not saved when Ok button is pressed

* [AD-522] remove commented out #include headers

* [AD-522] disable  SSH Known Hosts File edit when SSH Strict Host Key Check check box is unchecked

* move SSH Strict Host Key Checking check box above SSH Known Hosts File edit in the config window

* [AD-522] refactor - remove commented out header code

* [AD-522] add comments in configuration.cpp for planning

* modify commented out example code in dsn_configuration_window.cpp for clarity

* [AD-522] change from SSL to TLS for consistency

* SSL_SETTINGS_GROUP_BOX is changed to TLS_SETTINGS_GROUP_BOX

* [AD-522] remove commented out code

Removed commented out code:
* RetrieveAuthParameters
* CreateAuthSettingsGroup
* CreateAdditionalSettingsGroup function and CreateSslSettingsGroup function for 1 column window
* protocol version - related code
* authSettingsGroupBox code

* [AD-522] remove std::auto_ptr<Window> authSettingsGroupBox;

* [AD-522] remove address field auto pointer initialization

* [AD-522] remove address field from config window constructor

* [AD-522] refactor - remove unneeded commented out code in HasText

* [AD-522] refactor - remove white spaces and update comment

* [AD-522] debug scan_method.h

* SpaceToUnderscore is called in scan_method.cpp to make reads better
* added guards to scan_method.h

* [AD-522] implement Schema group settings box

* fixed bug in dsn_config.cpp to save scanLimit correctly

* [AD-522] update readPreference default value to unknown

* removed unneeded commented out code
* removed unnecessary code to get string value on readPreference

* [AD-522] refactor - remove unnecessary comments

* [AD-522] adjust window size and additional settings group label size

* additional settings group label size is now the same as other settings group in the same column

* Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window"

This reverts commit 8d609dac52d3e3fc0442f2e8ec8526ec3eb2d6ab, reversing
changes made to 0aa20527606ccc11a7a99d6bd6f8d249fa8d1f61.

* [AD-522] keyboard user interface design + disable DSN empty strimg warning dialog

* make cursor go to checkboxes on the Config window and not skip them when tab key is pressed
* when DSN field is empty, Ok Button is disabled
* make default replicaSet value empty string (default is disable repliaSet)
* refactor - removed unneeded comments

* [AD-522] add end_point header to resolve build errors

end_point related code still exist in connection.cpp, so I readded the header for end_point

* Revert "Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window""

This reverts commit df0cad5490612c695ca28cc8ee44c73dbb1b68bd.

* [AD-522] resolve errors after merging develop branch

* GetAddresses() is deprecated, replaced it with GetHostname() and GetTcpPort() to get hostname and port number, respectively.
* replaced GetSchema() with GetSchemaName()
* removed commented out code
* refactor with dsn_configuration_window.cpp

* [AD-512] Resolve issue with missing include file.

* [AD-522] make BoolParseResult recognizable

* [AD-522] fix build errors after develop branch merge

* update schema checkbox string
* make edit row height single
* update SetTcpPort to SetPort etc
* define default value for sshEnable

* [AD-522] enable encrypt password for ssh private key passphrase

* modify refresh schema checkbox string to fit better
* remove log message for ssh private key passphrase to increase security

* [AD-521] add comments and notes for starting AD-521

* [AD-509] update readMe to include directions about saving Java bin and server directories.

* reason: ODBC JNI calls have a dependency on `jvm.dll`, as a result, the ODBC driver cannot operate properly unless the Java bin and server directories are included in the path.

* [AD-522] reduce space between ssh private key passphrase and the checkbox below

* [AD-521] define constants for Java GetSshLocalPort method call

* [AD-521] integrate code review feedback from Andie

* refactors with comment changes and log changes

* [AD-521] refactor code

* make open brace bracket start on new line for JVMException
* remove excess space

* [AD-427] Tracer Code - Limited Capability to load metadata - work-in-progress.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-522] remove space and add new line at the end of enum types

* [AD-522] add new lines at the end of Enum type files

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] add changes for Java.cpp from Bruce's AD-427 branch

* those changes are not included in the previous merge, and are now added

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] JNI wrapper calls to iSshTunnelActive and getSshLocalPort

* some draft comments are left to be cleaned up

* [AD-521] debug getSshLocalPort

* change function type signature from optional to int
* refactor - remove comments

* [AD-521] change return value in getSshLocalPort from boolean to a 0

* try to fix access memory issue in TestDriverManagerGetConnection

* [AD-522] resolve build errors after merge

* fix bug for schema name not correctly loaded on the config window
* removed unnecessary headers

* [AD-427] Added ResultSet.next and ResultSet.GetString()

* [AD-522] address code review comments

* change to enum class type for read_preference.h and scan_method.h
* change the way enum class objects are read
* add static cast to enum types so SetSelection function can work with it
* refactor - removed unnecessary comments
* refactor - changes code doc in connection_string_parser.h

* [AD-521] implement tests for JNI wrapper code

* test for TestDocumentDbConnectionGetSshTunnelPortSshTunnelNotActive is not yet active, need to be enabled when we can get external SSH tunnel working.
* bug fix: re-implemented DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.
connection.Get()->GetRef() is passed as first parameter because jobject is required for CallIntMethod and CallBooleanMethod.
* better JNI wrapper code is needed in the future so warnings/errors pop up when we pass jobject instead of jclass to the methods.

* [AD-521] refactor - remove comments and commented out code

* [AD-589] implement JNI method call for GetDatabaseMetadata

* define the method constant for DocumentDbConnection.getDatabaseMetadata()
* create JNI wrapper function for DocumentDbConnection.getMetaData

* [AD-589] implement unit test for DocumentDbConnection.getMetaData

* [AD-521] add calls to AutoCloseConnection in unit tests

* pass & errInfo instead of * errInfo in DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActi…
* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

* [AD-735] large dataset crash issue (#74)

### Summary

ODBC driver will not run on large document tests

### Description
The performance test crashes for large document tests. 

1. The root cause is the wrong memory is passed to SQLBindCol(). The parameter TargetValuePtr is passed &cols[i][0].data_dat[i]. The i could exceed 255 for large table while its max valid value should be 254. The correct value should be 0.
2. The SQLExtendedFetch is deprecated. Replace it with SQLFetch.

### Related Issue

https://bitquill.atlassian.net/browse/AD-735

* [AD-509] Update mac developer environment setup

* Adjust formatting

* Add note about llvm

* Add note about iodbc

* Update README.md

change the install options for OpenSSL, since vcpkg is a preferred option

* Update README.md

remove the WiX Toolset v4 requirement

* Update README.md

add steps for the fix for ignite-odbc-tests.profraw error in README.

* [AD-517] Remove old properties + add new properties

* remove SSL settings and add TLS checkbox on the Configuration Window

* add comments for my own work

added some comments for my own convenience. Will remove later

* fix tls checkbox on Configuration Window

fixed by updating ChildId in tlsCheckBox = CreateCheckBox

* add TlsAllowInvalidHostnames checkbox and TLS CA edit to the Configuration Window

* Update configuration.cpp

add comment to illustrate plan on what to do for the configuration window

* Update dsn_configuration_window.cpp

bugfix to make tlsCheckBox and tlsAllowInvalidHostnamesCheckBox read into the saved values

* change defaultFetchSize to fetchSize in configuration.h

* change Default DSN name to DocumentDB DSN

* add App Name, Fetch Size, Read Preference, and login timeout to configuration window

* [AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h

Files that had the change connection_string_parser.cpp, connection_string_parser.h, dsn_config.cpp, batch_query.cpp, data_query.cpp.

* [AD-522] save read preference settings

* [AD-522] remove commented out code

* [AD-522] Implement replicaSet and retryReads on Configuration Window

* [AD-517] Re-enable unit tests - WIP -  still need to cleanup

* [AD-522] add space to code lines for format consistency in configuration_window.h

* Add more unit tests

* Remove extra file

* [AD-522] Add small letter case to keep format consistency in dsn_configuration_window.h

 Add small letter case to keep format consistency in dsn_configuration_window.h
fixed one typo (Create authentication settings group box)

* Remove redundant declaration

* [AD-522] add variable definitions for SSH tunnel settings for config UI

* [AD-522] add function definition for SSH Tunnel

added SSH User, SSH Host. SSH Strict Host Key Checking, and SSH Known Hosts File onto the UI. However, the code to save the written values would be done in later commits.

* [AD-522] code draft for configuration.cpp

add draft variable definition to Enable ssh tunnel boolean value

* Revert "change defaultFetchSize to fetchSize in configuration.h"

This reverts commit f311e3bc7df1fd66d7be66c8e60170a41d078c18.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"

This reverts commit 2bcd2a492bd69fbde5de986a03c5a407a729ba47.

* [AD-517] * Change the C++ version to use to compile.

* [AD-522] change fetchSize to defaultFetchSize on configuration window for consistency with JDBC driver

* [AD-517] * Changed checks.yml so that it doesn't fail on code review errors.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h""

This reverts commit 124b7256d8f96fb31363aa2efb0423b115b11b0a.

* [AD-522] make TLS allow invalid hostnames checkbox enabled only when tls Check box is checked

* Revert "Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"""

This reverts commit aa7731a67f123c8942b89cba8334efe15776f6c8.

* Improvements from review

* Updated comments

* [AD-522] save SSH values for re-read, make settings window into 2 columns

Make ssl and additional settings groups to be on the right side of the column on the configuration window. This is subject to change later.
I created the function
void DsnConfigurationWindow::RetrieveSshParameters(config::Configuration& cfg) const
to save SSH values.
The width value in the DsnConfigurationWindow constructor is doubled from 360 to 720 and added the margin value. The margins currently look imbalanced on the settings box, and will be fixed in later commits.
Make Ok button and Cancel buttons aligned with the right column
bugfix - allow the SSH strict host checking checkbox to be checked on and off by adding the case ChildId::SSH_STRICT_HOST_KEY_CHECKING_CHECK_BOX definition.

* Removed includes no longer being used in configuration.h

* Some formatting improvements

* [Ad-522] add sshEnable variable in DSN config

- added sshEnable variable definition and getter/setter for sshEnable.
- added code for parsing sshEnable in the connection string parser

* [AD-522] change from GetSshEnable to IsSshEnable for consistency

* [AD-522] comment out deprecated readPreference variable

start on transitioning from readPreferenceEdit to readPreference combo box

* [AD-522] add SSH enable checkbox, SSH private key passphrase, and SSH private key file

* add SSH Enable variable in configuration.h and configuration.cpp
* add SSH checkbox in SSH group setting
* add SSH private key file edit in SSH group setting
* add SSH private key pass phrase in SSH group setting
** SSH private key passphrase label requires double the row height due to the label being long.
* make SSH setting items disabled/enabled as SSH enable checkbox is unchecked/checked
* save SSH variables to configuration when Ok button is pressed.

* [AD-522] read_preference.h fix

* add guards to read_preference.h fix
* include read_preference.h in dsn_configuration_window.cpp
* add draft code for read preference in dsn_configuration_window.cpp

* [AD-522] update fields in configuration window

* modified order of fields in the configuration window.
- Retry reads checkbox is now in the first row under "Additional Settings".
- SSH Strict host key check is now in the last row under "Internal SSH Tunnel Settings"
- Allow invalid hostnames checkbox now is in 2nd row under "TLS/SSL settings"
* added warning sentences for Allow invalid hostnames checkbox and SSH strict host key check

* Improvements from code review + address some warnings

* Change connection _test to use hostname key instead of address

* Change connection_test to use databse key instead of schema key

* [AD-522] implement read Preference

* add SpaceToUnderscore function
* implement read Preference in Config window and save the value

* Attempt to fix windows 32 build

* [AD-522] refactor dsn_configuration_window.cpp

refactor code format; remove spaces and  unnecessary comments

* [AD-522] fix config window margins

now the config window is symmetric

* Fix formatting

* [AD-522] add HasText() function to window.h

* previously, the definition of HasText was mistakenly committed in commit cbaeedd0cde8b82bc29134efcad28dba943751c2.
* add header of HasText() to resolve building errors in origin
* update HasText() function to make code simpler

* [AD-522] make "rs0" the default value of replicaSet

* [AD-522] implement database, hostname, port fields. And disable ok button unless all required fields are filled

* implement database, hostname, port fields.
* disable ok button unless all required fields (database, hostname, port, username, password) are filled
* added boolean created to indicate whether the configuration window has been created. If has, then check for disabling/enabling the Ok button

* [AD-522] rename SSH Known Hosts File label for clarity

* [AD-522] refactor logs for retrieving TSL settings

Make the sentences align

* [AD-522] rename TLS CA File label for clarity

* change label length to the same label length as connection settings group

* [AD-522] move authorization setting fields to connection fields

reason: only username and password are authorization settings, the rest are not. We chose to put username, password in the connections group because all fields in the connections group are required.

* [AD-522] bugfix-comment out address field related code in RetrieveConnectionParameters

* [AD-522] rename sslSettings to tlsSettings and add comment for connection settings group

* [AD-522] remove protocol version from config window

* [AD-522] bug fix sshKnownHostsFile not saved when Ok button is pressed

* [AD-522] remove commented out #include headers

* [AD-522] disable  SSH Known Hosts File edit when SSH Strict Host Key Check check box is unchecked

* move SSH Strict Host Key Checking check box above SSH Known Hosts File edit in the config window

* [AD-522] refactor - remove commented out header code

* [AD-522] add comments in configuration.cpp for planning

* modify commented out example code in dsn_configuration_window.cpp for clarity

* [AD-522] change from SSL to TLS for consistency

* SSL_SETTINGS_GROUP_BOX is changed to TLS_SETTINGS_GROUP_BOX

* [AD-522] remove commented out code

Removed commented out code:
* RetrieveAuthParameters
* CreateAuthSettingsGroup
* CreateAdditionalSettingsGroup function and CreateSslSettingsGroup function for 1 column window
* protocol version - related code
* authSettingsGroupBox code

* [AD-522] remove std::auto_ptr<Window> authSettingsGroupBox;

* [AD-522] remove address field auto pointer initialization

* [AD-522] remove address field from config window constructor

* [AD-522] refactor - remove unneeded commented out code in HasText

* [AD-522] refactor - remove white spaces and update comment

* [AD-522] debug scan_method.h

* SpaceToUnderscore is called in scan_method.cpp to make reads better
* added guards to scan_method.h

* [AD-522] implement Schema group settings box

* fixed bug in dsn_config.cpp to save scanLimit correctly

* [AD-522] update readPreference default value to unknown

* removed unneeded commented out code
* removed unnecessary code to get string value on readPreference

* [AD-522] refactor - remove unnecessary comments

* [AD-522] adjust window size and additional settings group label size

* additional settings group label size is now the same as other settings group in the same column

* Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window"

This reverts commit 8d609dac52d3e3fc0442f2e8ec8526ec3eb2d6ab, reversing
changes made to 0aa20527606ccc11a7a99d6bd6f8d249fa8d1f61.

* [AD-522] keyboard user interface design + disable DSN empty strimg warning dialog

* make cursor go to checkboxes on the Config window and not skip them when tab key is pressed
* when DSN field is empty, Ok Button is disabled
* make default replicaSet value empty string (default is disable repliaSet)
* refactor - removed unneeded comments

* [AD-522] add end_point header to resolve build errors

end_point related code still exist in connection.cpp, so I readded the header for end_point

* Revert "Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window""

This reverts commit df0cad5490612c695ca28cc8ee44c73dbb1b68bd.

* [AD-522] resolve errors after merging develop branch

* GetAddresses() is deprecated, replaced it with GetHostname() and GetTcpPort() to get hostname and port number, respectively.
* replaced GetSchema() with GetSchemaName()
* removed commented out code
* refactor with dsn_configuration_window.cpp

* [AD-512] Resolve issue with missing include file.

* [AD-522] make BoolParseResult recognizable

* [AD-522] fix build errors after develop branch merge

* update schema checkbox string
* make edit row height single
* update SetTcpPort to SetPort etc
* define default value for sshEnable

* [AD-522] enable encrypt password for ssh private key passphrase

* modify refresh schema checkbox string to fit better
* remove log message for ssh private key passphrase to increase security

* [AD-521] add comments and notes for starting AD-521

* [AD-509] update readMe to include directions about saving Java bin and server directories.

* reason: ODBC JNI calls have a dependency on `jvm.dll`, as a result, the ODBC driver cannot operate properly unless the Java bin and server directories are included in the path.

* [AD-522] reduce space between ssh private key passphrase and the checkbox below

* [AD-521] define constants for Java GetSshLocalPort method call

* [AD-521] integrate code review feedback from Andie

* refactors with comment changes and log changes

* [AD-521] refactor code

* make open brace bracket start on new line for JVMException
* remove excess space

* [AD-427] Tracer Code - Limited Capability to load metadata - work-in-progress.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-522] remove space and add new line at the end of enum types

* [AD-522] add new lines at the end of Enum type files

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] add changes for Java.cpp from Bruce's AD-427 branch

* those changes are not included in the previous merge, and are now added

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] JNI wrapper calls to iSshTunnelActive and getSshLocalPort

* some draft comments are left to be cleaned up

* [AD-521] debug getSshLocalPort

* change function type signature from optional to int
* refactor - remove comments

* [AD-521] change return value in getSshLocalPort from boolean to a 0

* try to fix access memory issue in TestDriverManagerGetConnection

* [AD-522] resolve build errors after merge

* fix bug for schema name not correctly loaded on the config window
* removed unnecessary headers

* [AD-427] Added ResultSet.next and ResultSet.GetString()

* [AD-522] address code review comments

* change to enum class type for read_preference.h and scan_method.h
* change the way enum class objects are read
* add static cast to enum types so SetSelection function can work with it
* refactor - removed unnecessary comments
* refactor - changes code doc in connection_string_parser.h

* [AD-521] implement tests for JNI wrapper code

* test for TestDocumentDbConnectionGetSshTunnelPortSshTunnelNotActive is not yet active, need to be enabled when we can get external SSH tunnel working.
* bug fix: re-implemented DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.
connection.Get()->GetRef() is passed as first parameter because jobject is required for CallIntMethod and CallBooleanMethod.
* better JNI wrapper code is needed in the future so warnings/errors pop up when we pass jobject instead of jclass to the methods.

* [AD-521] refactor - remove comments and commented out code

* [AD-589] implement JNI method call for GetDatabaseMetadata

* define the method constant for DocumentDbConnection.getDatabaseMetadata()
* create JNI wrapper function for DocumentDbConnection.getMetaData

* [AD-589] implement unit test for DocumentDbConnection.getMetaData

* [AD-521] add calls to AutoCloseConnection in unit tests

* pass & errInfo instead of * errInfo in DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.

* [AD-521] remove unnecessary comment

* [AD-589] fix merge issues

* I missed this part of code when I was resolving the merge conflicts. Now they are corrected

* [AD-589] update getMetaData JNI wrapper code to pass &errInfo

* implement unit test for getMetaData

* [AD-589] implement JNI wrapper for DocumentDbDatabaseSchemaMetadataGetSchemaName

* implement Java class for
* define constant for DocumentDbDatabaseSchemaMetadataGetSchemaName
*  add empty test function for TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* [AD-589] implement unit test for DbDatabaseSchemaMetadataGetSchemaName

* [AD-521] refactor - change case of ssh to SSH for consistency

* [AD-589] address code review comments

* rename DocumentDbConnectionGetMetaData to DocumentDbConnectionGetDatabaseMetaData

* [AD-589] change case from MetaData to Metadata to match Java method name

* [AD-589] refactor: change from metaData to metadata

changes occurred in:
* DocumentDbConnectionGetDatabaseMetadata
* DocumentDbDatabaseSchemaMetadataGetSchemaName
* TestDocumentDbConnectionGetDatabaseMetadata
* TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* Birschick bq/sync up (#21)

* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

Co-authored-by: affonsoBQ <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>

* [AD-735] large dataset crash issue (#23)

* first test

* fix performance test crash

* fix performance test crash

* fix whitespace issue

* rework based on comments

Co-authored-by: Andie Montoya <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>
Co-authored-by: affonsoBQ <[email protected]>
Co-authored-by: RoyZhang2022 <[email protected]>

* [AD-649] Add missing documentation (#73)

* Initial user/developer documentation
Co-authored-by: andiem-bq <[email protected]>
Co-authored-by: Bruce Irschick <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>

* [AD-550] Adapt Foreign Keys (#75)

Summary
Adapt Foreign Keys (i.e., the SQLForeignKeys function)

Description
 JNI wrapper code for getImportedKeys
 adapt SQLForeignKeys function
 unit test for jni_test
 unit test for java_test
Related Issue
https://bitquill.atlassian.net/browse/AD-550

* [AD-509] Update mac developer environment setup

* Adjust formatting

* Add note about llvm

* Add note about iodbc

* Update README.md

change the install options for OpenSSL, since vcpkg is a preferred option

* Update README.md

remove the WiX Toolset v4 requirement

* Update README.md

add steps for the fix for ignite-odbc-tests.profraw error in README.

* [AD-517] Remove old properties + add new properties

* remove SSL settings and add TLS checkbox on the Configuration Window

* add comments for my own work

added some comments for my own convenience. Will remove later

* fix tls checkbox on Configuration Window

fixed by updating ChildId in tlsCheckBox = CreateCheckBox

* add TlsAllowInvalidHostnames checkbox and TLS CA edit to the Configuration Window

* Update configuration.cpp

add comment to illustrate plan on what to do for the configuration window

* Update dsn_configuration_window.cpp

bugfix to make tlsCheckBox and tlsAllowInvalidHostnamesCheckBox read into the saved values

* change defaultFetchSize to fetchSize in configuration.h

* change Default DSN name to DocumentDB DSN

* add App Name, Fetch Size, Read Preference, and login timeout to configuration window

* [AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h

Files that had the change connection_string_parser.cpp, connection_string_parser.h, dsn_config.cpp, batch_query.cpp, data_query.cpp.

* [AD-522] save read preference settings

* [AD-522] remove commented out code

* [AD-522] Implement replicaSet and retryReads on Configuration Window

* [AD-517] Re-enable unit tests - WIP -  still need to cleanup

* [AD-522] add space to code lines for format consistency in configuration_window.h

* Add more unit tests

* Remove extra file

* [AD-522] Add small letter case to keep format consistency in dsn_configuration_window.h

 Add small letter case to keep format consistency in dsn_configuration_window.h
fixed one typo (Create authentication settings group box)

* Remove redundant declaration

* [AD-522] add variable definitions for SSH tunnel settings for config UI

* [AD-522] add function definition for SSH Tunnel

added SSH User, SSH Host. SSH Strict Host Key Checking, and SSH Known Hosts File onto the UI. However, the code to save the written values would be done in later commits.

* [AD-522] code draft for configuration.cpp

add draft variable definition to Enable ssh tunnel boolean value

* Revert "change defaultFetchSize to fetchSize in configuration.h"

This reverts commit f311e3bc7df1fd66d7be66c8e60170a41d078c18.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"

This reverts commit 2bcd2a492bd69fbde5de986a03c5a407a729ba47.

* [AD-517] * Change the C++ version to use to compile.

* [AD-522] change fetchSize to defaultFetchSize on configuration window for consistency with JDBC driver

* [AD-517] * Changed checks.yml so that it doesn't fail on code review errors.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h""

This reverts commit 124b7256d8f96fb31363aa2efb0423b115b11b0a.

* [AD-522] make TLS allow invalid hostnames checkbox enabled only when tls Check box is checked

* Revert "Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"""

This reverts commit aa7731a67f123c8942b89cba8334efe15776f6c8.

* Improvements from review

* Updated comments

* [AD-522] save SSH values for re-read, make settings window into 2 columns

Make ssl and additional settings groups to be on the right side of the column on the configuration window. This is subject to change later.
I created the function
void DsnConfigurationWindow::RetrieveSshParameters(config::Configuration& cfg) const
to save SSH values.
The width value in the DsnConfigurationWindow constructor is doubled from 360 to 720 and added the margin value. The margins currently look imbalanced on the settings box, and will be fixed in later commits.
Make Ok button and Cancel buttons aligned with the right column
bugfix - allow the SSH strict host checking checkbox to be checked on and off by adding the case ChildId::SSH_STRICT_HOST_KEY_CHECKING_CHECK_BOX definition.

* Removed includes no longer being used in configuration.h

* Some formatting improvements

* [Ad-522] add sshEnable variable in DSN config

- added sshEnable variable definition and getter/setter for sshEnable.
- added code for parsing sshEnable in the connection string parser

* [AD-522] change from GetSshEnable to IsSshEnable for consistency

* [AD-522] comment out deprecated readPreference variable

start on transitioning from readPreferenceEdit to readPreference combo box

* [AD-522] add SSH enable checkbox, SSH private key passphrase, and SSH private key file

* add SSH Enable variable in configuration.h and configuration.cpp
* add SSH checkbox in SSH group setting
* add SSH private key file edit in SSH group setting
* add SSH private key pass phrase in SSH group setting
** SSH private key passphrase label requires double the row height due to the label being long.
* make SSH setting items disabled/enabled as SSH enable checkbox is unchecked/checked
* save SSH variables to configuration when Ok button is pressed.

* [AD-522] read_preference.h fix

* add guards to read_preference.h fix
* include read_preference.h in dsn_configuration_window.cpp
* add draft code for read preference in dsn_configuration_window.cpp

* [AD-522] update fields in configuration window

* modified order of fields in the configuration window.
- Retry reads checkbox is now in the first row under "Additional Settings".
- SSH Strict host key check is now in the last row under "Internal SSH Tunnel Settings"
- Allow invalid hostnames checkbox now is in 2nd row under "TLS/SSL settings"
* added warning sentences for Allow invalid hostnames checkbox and SSH strict host key check

* Improvements from code review + address some warnings

* Change connection _test to use hostname key instead of address

* Change connection_test to use databse key instead of schema key

* [AD-522] implement read Preference

* add SpaceToUnderscore function
* implement read Preference in Config window and save the value

* Attempt to fix windows 32 build

* [AD-522] refactor dsn_configuration_window.cpp

refactor code format; remove spaces and  unnecessary comments

* [AD-522] fix config window margins

now the config window is symmetric

* Fix formatting

* [AD-522] add HasText() function to window.h

* previously, the definition of HasText was mistakenly committed in commit cbaeedd0cde8b82bc29134efcad28dba943751c2.
* add header of HasText() to resolve building errors in origin
* update HasText() function to make code simpler

* [AD-522] make "rs0" the default value of replicaSet

* [AD-522] implement database, hostname, port fields. And disable ok button unless all required fields are filled

* implement database, hostname, port fields.
* disable ok button unless all required fields (database, hostname, port, username, password) are filled
* added boolean created to indicate whether the configuration window has been created. If has, then check for disabling/enabling the Ok button

* [AD-522] rename SSH Known Hosts File label for clarity

* [AD-522] refactor logs for retrieving TSL settings

Make the sentences align

* [AD-522] rename TLS CA File label for clarity

* change label length to the same label length as connection settings group

* [AD-522] move authorization setting fields to connection fields

reason: only username and password are authorization settings, the rest are not. We chose to put username, password in the connections group because all fields in the connections group are required.

* [AD-522] bugfix-comment out address field related code in RetrieveConnectionParameters

* [AD-522] rename sslSettings to tlsSettings and add comment for connection settings group

* [AD-522] remove protocol version from config window

* [AD-522] bug fix sshKnownHostsFile not saved when Ok button is pressed

* [AD-522] remove commented out #include headers

* [AD-522] disable  SSH Known Hosts File edit when SSH Strict Host Key Check check box is unchecked

* move SSH Strict Host Key Checking check box above SSH Known Hosts File edit in the config window

* [AD-522] refactor - remove commented out header code

* [AD-522] add comments in configuration.cpp for planning

* modify commented out example code in dsn_configuration_window.cpp for clarity

* [AD-522] change from SSL to TLS for consistency

* SSL_SETTINGS_GROUP_BOX is changed to TLS_SETTINGS_GROUP_BOX

* [AD-522] remove commented out code

Removed commented out code:
* RetrieveAuthParameters
* CreateAuthSettingsGroup
* CreateAdditionalSettingsGroup function and CreateSslSettingsGroup function for 1 column window
* protocol version - related code
* authSettingsGroupBox code

* [AD-522] remove std::auto_ptr<Window> authSettingsGroupBox;

* [AD-522] remove address field auto pointer initialization

* [AD-522] remove address field from config window constructor

* [AD-522] refactor - remove unneeded commented out code in HasText

* [AD-522] refactor - remove white spaces and update comment

* [AD-522] debug scan_method.h

* SpaceToUnderscore is called in scan_method.cpp to make reads better
* added guards to scan_method.h

* [AD-522] implement Schema group settings box

* fixed bug in dsn_config.cpp to save scanLimit correctly

* [AD-522] update readPreference default value to unknown

* removed unneeded commented out code
* removed unnecessary code to get string value on readPreference

* [AD-522] refactor - remove unnecessary comments

* [AD-522] adjust window size and additional settings group label size

* additional settings group label size is now the same as other settings group in the same column

* Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window"

This reverts commit 8d609dac52d3e3fc0442f2e8ec8526ec3eb2d6ab, reversing
changes made to 0aa20527606ccc11a7a99d6bd6f8d249fa8d1f61.

* [AD-522] keyboard user interface design + disable DSN empty strimg warning dialog

* make cursor go to checkboxes on the Config window and not skip them when tab key is pressed
* when DSN field is empty, Ok Button is disabled
* make default replicaSet value empty string (default is disable repliaSet)
* refactor - removed unneeded comments

* [AD-522] add end_point header to resolve build errors

end_point related code still exist in connection.cpp, so I readded the header for end_point

* Revert "Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window""

This reverts commit df0cad5490612c695ca28cc8ee44c73dbb1b68bd.

* [AD-522] resolve errors after merging develop branch

* GetAddresses() is deprecated, replaced it with GetHostname() and GetTcpPort() to get hostname and port number, respectively.
* replaced GetSchema() with GetSchemaName()
* removed commented out code
* refactor with dsn_configuration_window.cpp

* [AD-512] Resolve issue with missing include file.

* [AD-522] make BoolParseResult recognizable

* [AD-522] fix build errors after develop branch merge

* update schema checkbox string
* make edit row height single
* update SetTcpPort to SetPort etc
* define default value for sshEnable

* [AD-522] enable encrypt password for ssh private key passphrase

* modify refresh schema checkbox string to fit better
* remove log message for ssh private key passphrase to increase security

* [AD-521] add comments and notes for starting AD-521

* [AD-509] update readMe to include directions about saving Java bin and server directories.

* reason: ODBC JNI calls have a dependency on `jvm.dll`, as a result, the ODBC driver cannot operate properly unless the Java bin and server directories are included in the path.

* [AD-522] reduce space between ssh private key passphrase and the checkbox below

* [AD-521] define constants for Java GetSshLocalPort method call

* [AD-521] integrate code review feedback from Andie

* refactors with comment changes and log changes

* [AD-521] refactor code

* make open brace bracket start on new line for JVMException
* remove excess space

* [AD-427] Tracer Code - Limited Capability to load metadata - work-in-progress.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-522] remove space and add new line at the end of enum types

* [AD-522] add new lines at the end of Enum type files

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] add changes for Java.cpp from Bruce's AD-427 branch

* those changes are not included in the previous merge, and are now added

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] JNI wrapper calls to iSshTunnelActive and getSshLocalPort

* some draft comments are left to be cleaned up

* [AD-521] debug getSshLocalPort

* change function type signature from optional to int
* refactor - remove comments

* [AD-521] change return value in getSshLocalPort from boolean to a 0

* try to fix access memory issue in TestDriverManagerGetConnection

* [AD-522] resolve build errors after merge

* fix bug for schema name not correctly loaded on the config window
* removed unnecessary headers

* [AD-427] Added ResultSet.next and ResultSet.GetString()

* [AD-522] address code review comments

* change to enum class type for read_preference.h and scan_method.h
* change the way enum class objects are read
* add static cast to enum types so SetSelection function can work with it
* refactor - removed unnecessary comments
* refactor - changes code doc in connection_string_parser.h

* [AD-521] implement tests for JNI wrapper code

* test for TestDocumentDbConnectionGetSshTunnelPortSshTunnelNotActive is not yet active, need to be enabled when we can get external SSH tunnel working.
* bug fix: re-implemented DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.
connection.Get()->GetRef() is passed as first parameter because jobject is required for CallIntMethod and CallBooleanMethod.
* better JNI wrapper code is needed in the future so warnings/errors pop up when we pass jobject instead of jclass to the methods.

* [AD-521] refactor - remove comments and commented out code

* [AD-589] implement JNI method call for GetDatabaseMetadata

* define the method constant for DocumentDbConnection.getDatabaseMetadata()
* create JNI wrapper function for DocumentDbConnection.getMetaData

* [AD-589] implement unit test for DocumentDbConnection.getMetaData

* [AD-521] add calls to AutoCloseConnection in unit tests

* pass & errInfo instead of * errInfo in DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.

* [AD-521] remove unnecessary comment

* [AD-589] fix merge issues

* I missed this part of code when I was resolving the merge conflicts. Now they are corrected

* [AD-589] update getMetaData JNI wrapper code to pass &errInfo

* implement unit test for getMetaData

* [AD-589] implement JNI wrapper for DocumentDbDatabaseSchemaMetadataGetSchemaName

* implement Java class for
* define constant for DocumentDbDatabaseSchemaMetadataGetSchemaName
*  add empty test function for TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* [AD-589] implement unit test for DbDatabaseSchemaMetadataGetSchemaName

* [AD-521] refactor - change case of ssh to SSH for consistency

* [AD-589] address code review comments

* rename DocumentDbConnectionGetMetaData to DocumentDbConnectionGetDatabaseMetaData

* [AD-589] change case from MetaData to Metadata to match Java method name

* [AD-589] refactor: change from metaData to metadata

changes occurred in:
* DocumentDbConnectionGetDatabaseMetadata
* DocumentDbDatabaseSchemaMetadataGetSchemaName
* TestDocumentDbConnectionGetDatabaseMetadata
* TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* Birschick bq/sync up (#21)

* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

Co-authored-by: affonsoBQ <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>

* [AD-735] large dataset crash issue (#23)

* first test

* fix performance test crash

* fix performance test crash

* fix whitespace issue

* rework based on comments

* SQLPrimaryKey using JNI

* odbc test failure fix

* Revert "odbc test failure fix"

This reverts commit edb94599c77b9d60d68cbad9489838742f31805c.

* Revert "SQLPrimaryKey using JNI"

This reverts commit ba4b68f082542878524e9100d27f31045a2d14dc.

* [AD-550] Adapt Foreign Keys (#24)

* [AD-550] JNI implementation for getImportedKeys

* [AD-550] update Pull Request Template

* added reviewees Roy Zhang and Micthell Elholm

* [AD-550] add todo note to unit test

* [AD-550] define GetImportedKeys in database_metadata.h/.cpp

* add ODBC wrapper code to the JNI call for GetImportedKeys

* [AD-550] initialize string vars to be empty string in column_metadata_query

* [AD-550] modify ForeignKeysQuery to accept 3 arguments only

* modified ForeignKeysQuery to only accept catalog, schema, and table, as other fields are not needed.

* [AD-550] update column metadata for foreign keys

* [AD-550] fix typo in primary_key_meta.h

* [AD-550] define vars for foreign key meta

* [AD-550] add getter functions for vars in foreign_key_meta.h

* [AD-550] support vars in foreign key meta to be optional

* [AD-550] add headers for boost optional

* [AD-550] add headers and constructors for foreign key meta

* added ForeignKeyMeta constructor, and copy constructor
*added ForeignKeyMeta destructor
* define ForeignKeyMetaVector
* basically, complete foreign_key_meta.h

* [AD-550] implement resultset.getSmallInt

* implement resultset.getSmallInt taking column indices or column names as parameters
* make ColumnMeta::dataType be updated with  resultSet.Get()->GetSmallInt to simplify code and readbility

* [AD-550] Add foreign_key_meta.cpp

* implemented functions:
ReadForeignKeysColumnMetaVector
ForeignKeyMeta::Read

* [AD-550] update CMakeLists to include foreign_key_meta.cpp

* [AD-550] implement MakeRequestGetForeignKeysMeta

* MakeRequestGetForeignKeysMeta calls GetImportedKeys to get Jni ResultSet object for foreign keys, and then reads the resultSet object to fill in the meta object.

* [AD-550] update ForeignKeysQuery::DataAvailable and ForeignKeysQuery::Close

* update meta object accordingly whenForeignKeysQuery::Close() is called.
* return boolean for whether data is available based on meta object

* [AD-550] implement ForeignKeysQuery::Execute and FetchNextRow

* the code for ForeignKeysQuery::Execute and ForeignKeysQuery::FetchNextRow is based on ColumnMetadataQuery::Execute and ColumnMetadataQuery::FetchNextRow

* [AD-550] fix Mac and Linux build

* remove extra qualification on GetSmallInt function

* [AD-550] implement ForeignKeysQuery::GetColumn

* had formatting changes as well

* [AD-550] JNI implementation for getImportedKeys

* [AD-550] update Pull Request Template

* added reviewees Roy Zhang and Micthell Elholm

* [AD-550] add todo note to unit test

* [AD-550] define GetImportedKeys in database_metadata.h/.cpp

* add ODBC wrapper code to the JNI call for GetImportedKeys

* [AD-550] initialize string vars to be empty string in column_metadata_query

* [AD-550] modify ForeignKeysQuery to accept 3 arguments only

* modified ForeignKeysQuery to only accept catalog, schema, and table, as other fields are not needed.

* [AD-550] update column metadata for foreign keys

* [AD-550] fix typo in primary_key_meta.h

* [AD-550] define vars for foreign key meta

* [AD-550] add getter functions for vars in foreign_key_meta.h

* [AD-550] support vars in foreign key meta to be optional

* [AD-550] add headers for boost optional

* [AD-550] add headers and constructors for foreign key meta

* added ForeignKeyMeta constructor, and copy constructor
*added ForeignKeyMeta destructor
* define ForeignKeyMetaVector
* basically, complete foreign_key_meta.h

* [AD-550] implement resultset.getSmallInt

* implement resultset.getSmallInt taking column indices or column names as parameters
* make ColumnMeta::dataType be updated with  resultSet.Get()->GetSmallInt to simplify code and readbility

* [AD-550] Add foreign_key_meta.cpp

* implemented functions:
ReadForeignKeysColumnMetaVector
ForeignKeyMeta::Read

* [AD-550] update CMakeLists to include foreign_key_meta.cpp

* [AD-550] implement MakeRequestGetForeignKeysMeta

* MakeRequestGetForeignKeysMeta calls GetImportedKeys to get Jni ResultSet object for foreign keys, and then reads the resultSet object to fill in the meta object.

* [AD-550] update ForeignKeysQuery::DataAvailable and ForeignKeysQuery::Close

* update meta object accordingly whenForeignKeysQuery::Close() is called.
* return boolean for whether data is available based on meta object

* [AD-550] implement ForeignKeysQuery::Execute and FetchNextRow

* the code for ForeignKeysQuery::Execute and ForeignKeysQuery::FetchNextRow is based on ColumnMetadataQuery::Execute and ColumnMetadataQuery::FetchNextRow

* [AD-550] fix Mac and Linux build

* remove extra qualification on GetSmallInt function

* [AD-550] implement ForeignKeysQuery::GetColumn

* had formatting changes as well

* [AD-550] update docs for foreign_keys_query.h

* [AD-550] refine SQLForeignKey call

* [AD-550] add draft foreign key test for JNI test

* [AD-550] add test tables for jni test

* [AD-550] update test TestDocumentDbDatabaseMetaDataGetImportedKeys

* update test to query virtual table jni_test_001_sub_doc

* [AD-550] add SQLForeignKeys sql api test

* [AD-550] add logs for ReadForeignKeysColumnMetaVector

* PK* variables will contain the list of foreign keys in the specified table

* [AD-550] reformat jni_test

* [AD-550] implement TestDatabaseMetaDataGetImportedKeys for java_test

* [AD-550] add test document meta_queries_test_002_with_array

* this document will be used to test SQLForeignKeys in meta_queries_test

* [AD-550] refactor TestSQLForeignKeys test

* reason: I see that `SQLCHAR empty[] = "";` is used in meta_queries_test, and I think that might be a better way of writing the parameters

* [AD-550] add test for SQLForeignKeys in meta_queries_test

tests added:
* TestGetDataWithForeignKeysReturnsOneFromLocalServer
* TestGetDataWithForeignKeysReturnsNone
* they use test table meta_queries_test_002_with_array

* [AD-550] clean up

* add doc for SQLForeignKeys
* remove comments

* [AD-550] remove commented out code

* [AD-550] remove unneeded commented out code

* [AD-550] make ODBC pass nullptr for JString catalog and schema for SQLForeignKeys

*  in getImportedKeys, null boost::optional strings will be passed as nullptr to JDBC
* make jni test and java test pass null boost::optional strings to JNI calls for getImportedKeys
* ODBC now passes boost::optional strings foreignCatalog and foreignSchema to ExecuteGetForeignKeysQuery function.

* [AD-550] add if check for sqlStrLen

* if sqlString is empty, return boost::none

* [AD-550] debug `choco install cppcheck -y` not working on GitHub Actions

* [AD-550] add tests for testing empty string parameters

* added Java test TestDatabaseMetaDataGetImportedKeysReturnsNone
* added Jni test TestDocumentDbDatabaseMetaDataGetImportedKeysReturnsNone

* [AD-550] disable cppcheck

* created [AD-752](https://bitquill.atlassian.net/browse/AD-752) to investigate it further.

* [AD-550] change the place for code doc for function SQLForeignKeys

* [AD-550] update if statement check of SqlStringToOptString

* to resolve code review comment

* [AD-550] resolve code review comment

* The sqlStrLen is an int32_t, so "!sqlStrLen" can be removed

* [AD-550] make boost optional strings constant where needed

* previously, I changed `const std::string` to `boost::optional< std::string >` in some areas, and this is now fixed by replacing the latter with `boost::optional< const std::string >`

* [AD-550] SqlStringToOptString fix

* also fixed SqlStringToConstOptString
* reason: SQL_NTS is a flag that indicates that the string passed is a null-terminated string.

* [AD-550] make tests pass null to SQLForeignKeys

* [AD-550] add test case for TestGetDataWithForeignKeysReturnsNone

*  even with the correct table name, as long as empty strings are passed as catalog/schema, SQL_NO_DATA should be returned

* [AD-550] update SqlStringToOptString

* [AD-550] update TestSQLForeignKeys to pass NULL as parameters properly

* [AD-550] move `const` out of `boost::optional< const std::string >`

* reason: `const boost::optional< std::string >` works better than `boost::optional< const std::string >`.
* this commit is to resolve code review comments

* [AD-550] add meta_queries test that passes catalog as empty string

* [AD-550] Set `fetched` to false in ForeignKeysQuery::Close()

* [AD-550] add explicit conversion to boost::optional variable initialization

* [AD-550] resolve code review comment

* remove duplicate code

* [AD-550] remove function

* removed unneeded function: SqlStringToConstOptString

* [AD-649] Add missing documentation (#29)

### Summary

[AD-649] Add missing documentation

### Description
Update ODBC driver documentation

- [x] Documentation about connections string ( Parameters description)
- [x] Documentation about DSN configuration window ( with screenshots)
- [x] Documentation how the ODBC driver works ( ODBC and JDBC integration)
- [x] Documentation what is supported ( link with JDBC driver)

### Related Issue

https://bitquill.atlassian.net/browse/AD-649

* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

* [AD-735] large dataset crash issue (#74)

### Summary

ODBC driver will not run on large document tests

### Description
The performance test crashes for large document tests. 

1. The root cause is the wrong memory is passed to SQLBindCol(). The parameter TargetValuePtr is passed &cols[i][0].data_dat[i]. The i could exceed 255 for large table while its max valid value should be 254. The correct value should be 0.
2. The SQLExtendedFetch is deprecated. Replace it with SQLFetch.

### Related Issue

https://bitquill.atlassian.net/browse/AD-735

* [AD-509] Update mac developer environment setup

* Adjust formatting

* Add note about llvm

* Add note about iodbc

* Update README.md

change the install options for OpenSSL, since vcpkg is a preferred option

* Update README.md

remove the WiX Toolset v4 requirement

* Update README.md

add steps for the fix for ignite-odbc-tests.profraw error in README.

* [AD-517] Remove old properties + add new properties

* remove SSL settings and add TLS checkbox on the Configuration Window

* add comments for my own work

added some comments for my own convenience. Will remove later

* fix tls checkbox on Configuration Window

fixed by updating ChildId in tlsCheckBox = CreateCheckBox

* add TlsAllowInvalidHostnames checkbox and TLS CA edit to the Configuration Window

* Update configuration.cpp

add comment to illustrate plan on what to do for the configuration window

* Update dsn_configuration_window.cpp

bugfix to make tlsCheckBox and tlsAllowInvalidHostnamesCheckBox read into the saved values

* change defaultFetchSize to fetchSize in configuration.h

* change Default DSN name to DocumentDB DSN

* add App Name, Fetch Size, Read Preference, and login timeout to configuration window

* [AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h

Files that had the change connection_string_parser.cpp, connection_string_parser.h, dsn_config.cpp, batch_query.cpp, data_query.cpp.

* [AD-522] save read preference settings

* [AD-522] remove commented out code

* [AD-522] Implement replicaSet and retryReads on Configuration Window

* [AD-517] Re-enable unit tests - WIP -  still need to cleanup

* [AD-522] add space to code lines for format consistency in configuration_window.h

* Add more unit tests

* Remove extra file

* [AD-522] Add small letter case to keep format consistency in dsn_configuration_window.h

 Add small letter case to keep format consistency in dsn_configuration_window.h
fixed one typo (Create authentication settings group box)

* Remove redundant declaration

* [AD-522] add variable definitions for SSH tunnel settings for config UI

* [AD-522] add function definition for SSH Tunnel

added SSH User, SSH Host. SSH Strict Host Key Checking, and SSH Known Hosts File onto the UI. However, the code to save the written values would be done in later commits.

* [AD-522] code draft for configuration.cpp

add draft variable definition to Enable ssh tunnel boolean value

* Revert "change defaultFetchSize to fetchSize in configuration.h"

This reverts commit f311e3bc7df1fd66d7be66c8e60170a41d078c18.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"

This reverts commit 2bcd2a492bd69fbde5de986a03c5a407a729ba47.

* [AD-517] * Change the C++ version to use to compile.

* [AD-522] change fetchSize to defaultFetchSize on configuration window for consistency with JDBC driver

* [AD-517] * Changed checks.yml so that it doesn't fail on code review errors.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h""

This reverts commit 124b7256d8f96fb31363aa2efb0423b115b11b0a.

* [AD-522] make TLS allow invalid hostnames checkbox enabled only when tls Check box is checked

* Revert "Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"""

This reverts commit aa7731a67f123c8942b89cba8334efe15776f6c8.

* Improvements from review

* Updated comments

* [AD-522] save SSH values for re-read, make settings window into 2 columns

Make ssl and additional settings groups to be on the right side of the column on the configuration window. This is subject to change later.
I created the function
void DsnConfigurationWindow::RetrieveSshParameters(config::Configuration& cfg) const
to save SSH values.
The width value in the DsnConfigurationWindow constructor is doubled from 360 to 720 and added the margin value. The margins currently look imbalanced on the settings box, and will be fixed in later commits.
Make Ok button and Cancel buttons aligned with the right column
bugfix - allow the SSH strict host checking checkbox to be checked on and off by adding the case ChildId::SSH_STRICT_HOST_KEY_CHECKING_CHECK_BOX definition.

* Removed includes no longer being used in configuration.h

* Some formatting improvements

* [Ad-522] add sshEnable variable in DSN config

- added sshEnable variable definition and getter/setter for sshEnable.
- added code for parsing sshEnable in the connection string parser

* [AD-522] change from GetSshEnable to IsSshEnable for consistency

* [AD-522] comment out deprecated readPreference variable

start on transitioning from readPreferenceEdit to readPreference combo box

* [AD-522] add SSH enable checkbox, SSH private key passphrase, and SSH private key file

* add SSH Enable variable in configuration.h and configuration.cpp
* add SSH checkbox in SSH group setting
* add SSH private key file edit in SSH group setting
* add SSH private key pass phrase in SSH group setting
** SSH private key passphrase label requires double the row height due to the label being long.
* make SSH setting items disabled/enabled as SSH enable checkbox is unchecked/checked
* save SSH variables to configuration when Ok button is pressed.

* [AD-522] read_preference.h fix

* add guards to read_preference.h fix
* include read_preference.h in dsn_configuration_window.cpp
* add draft code for read preference in dsn_configuration_window.cpp

* [AD-522] update fields in configuration window

* modified order of fields in the configuration window.
- Retry reads checkbox is now in the first row under "Additional Settings".
- SSH Strict host key check is now in the last row under "Internal SSH Tunnel Settings"
- Allow invalid hostnames checkbox now is in 2nd row under "TLS/SSL settings"
* added warning sentences for Allow invalid hostnames checkbox and SSH strict host key check

* Improvements from code review + address some warnings

* Change connection _test to use hostname key instead of address

* Change connection_test to use databse key instead of schema key

* [AD-522] implement read Preference

* add SpaceToUnderscore function
* implement read Preference in Config window and save the value

* Attempt to fix windows 32 build

* [AD-522] refactor dsn_configuration_window.cpp

refactor code format; remove spaces and  unnecessary comments

* [AD-522] fix config window margins

now the config window is symmetric

* Fix formatting

* [AD-522] add HasText() function to window.h

* previously, the definition of HasText was mistakenly committed in commit cbaeedd0cde8b82bc29134efcad28dba943751c2.
* add header of HasText() to resolve building errors in origin
* update HasText() function to make code simpler

* [AD-522] make "rs0" the default value of replicaSet

* [AD-522] implement database, hostname, port fields. And disable ok button unless all required fields are filled

* implement database, hostname, port fields.
* disable ok button unless all required fields (database, hostname, port, username, password) are filled
* added boolean created to indicate whether the configuration window has been created. If has, then check for disabling/enabling the Ok button

* [AD-522] rename SSH Known Hosts File label for clarity

* [AD-522] refactor logs for retrieving TSL settings

Make the sentences align

* [AD-522] rename TLS CA File label for clarity

* change label length to the same label length as connection settings group

* [AD-522] move authorization setting fields to connection fields

reason: only username and password are authorization settings, the rest are not. We chose to put username, password in the connections group because all fields in the connections group are required.

* [AD-522] bugfix-comment out address field related code in RetrieveConnectionParameters

* [AD-522] rename sslSettings to tlsSettings and add comment for connection settings group

* [AD-522] remove protocol version from config window

* [AD-522] bug fix sshKnownHostsFile not saved when Ok button is pressed

* [AD-522] remove commented out #include headers

* [AD-522] disable  SSH Known Hosts File edit when SSH Strict Host Key Check check box is unchecked

* move SSH Strict Host Key Checking check box above SSH Known Hosts File edit in the config window

* [AD-522] refactor - remove commented out header code

* [AD-522] add comments in configuration.cpp for planning

* modify commented out example code in dsn_configuration_window.cpp for clarity

* [AD-522] change from SSL to TLS for consistency

* SSL_SETTINGS_GROUP_BOX is changed to TLS_SETTINGS_GROUP_BOX

* [AD-522] remove commented out code

Removed commented out code:
* RetrieveAuthParameters
* CreateAuthSettingsGroup
* CreateAdditionalSettingsGroup function and CreateSslSettingsGroup function for 1 column window
* protocol version - related code
* authSettingsGroupBox code

* [AD-522] remove std::auto_ptr<Window> authSettingsGroupBox;

* [AD-522] remove address field auto pointer initialization

* [AD-522] remove address field from config window constructor

* [AD-522] refactor - remove unneeded commented out code in HasText

* [AD-522] refactor - remove white spaces and update comment

* [AD-522] debug scan_method.h

* SpaceToUnderscore is called in scan_method.cpp to make reads better
* added guards to scan_method.h

* [AD-522] implement Schema group settings box

* fixed bug in dsn_config.cpp to save scanLimit correctly

* [AD-522] update readPreference default value to unknown

* removed unneeded commented out code
* removed unnecessary code to get string value on readPreference

* [AD-522] refactor - remove unnecessary comments

* [AD-522] adjust window size and additional settings group label size

* additional settings group label size is now the same as other settings group in the same column

* Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window"

This reverts commit 8d609dac52d3e3fc0442f2e8ec8526ec3eb2d6ab, reversing
changes made to 0aa20527606ccc11a7a99d6bd6f8d249fa8d1f61.

* [AD-522] keyboard user interface design + disable DSN empty strimg warning dialog

* make cursor go to checkboxes on the Config window and not skip them when tab key is pressed
* when DSN field is empty, Ok Button is disabled
* make default replicaSet value empty string (default is disable repliaSet)
* refactor - removed unneeded comments

* [AD-522] add end_point header to resolve build errors

end_point related code still exist in connection.cpp, so I readded the header for end_point

* Revert "Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window""

This reverts commit df0cad5490612c695ca28cc8ee44c73dbb1b68bd.

* [AD-522] resolve errors after merging develop branch

* GetAddresses() is deprecated, replaced it with GetHostname() and GetTcpPort() to get hostname and port number, respectively.
* replaced GetSchema() with GetSchemaName()
* removed commented out code
* refactor with dsn_configuration_window.cpp

* [AD-512] Resolve issue with missing include file.

* [AD-522] make BoolParseResult recognizable

* [AD-522] fix build errors after develop branch merge

* update schema checkbox string
* make edit row height single
* update SetTcpPort to SetPort etc
* define default value for sshEnable

* [AD-522] enable encrypt password for ssh private key passphrase

* modify refresh schema checkbox string to fit better
* remove log message for ssh private key passphrase to increase security

* [AD-521] add comments and notes for starting AD-521

* [AD-509] update readMe to include directions about saving Java bin and server directories.

* reason: ODBC JNI calls have a dependency on `jvm.dll`, as a result, the ODBC driver cannot operate properly unless the Java bin and server directories are included in the path.

* [AD-522] reduce space between ssh private key passphrase and the checkbox below

* [AD-521] define constants for Java GetSshLocalPort method call

* [AD-521] integrate code review feedback from Andie

* refactors with comment changes and log changes

* [AD-521] refactor code

* make open brace bracket start on new line for JVMException
* remove excess space

* [AD-427] Tracer Code - Limited Capability to load metadata - work-in-progress.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-522] remove space and add new line at the end of enum types

* [AD-522] add new lines at the end of Enum type files

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] add changes for Java.cpp from Bruce's AD-427 branch

* those changes are not included in the previous merge, and are now added

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] JNI wrapper calls to iSshTunnelActive and getSshLocalPort

* some draft comments are left to be cleaned up

* [AD-521] debug getSshLocalPort

* change function type signature from optional to int
* refactor - remove comments

* [AD-521] change return value in getSshLocalPort from boolean to a 0

* try to fix access memory issue in TestDriverManagerGetConnection

* [AD-522] resolve build errors after merge

* fix bug for schema name not correctly loaded on the config window
* removed unnecessary headers

* [AD-427] Added ResultSet.next and ResultSet.GetString()

* [AD-522] address code review comments

* change to enum class type for read_preference.h and scan_method.h
* change the way enum class objects are read
* add static cast to enum types so SetSelection function can work with it
* refactor - removed unnecessary comments
* refactor - changes code doc in connection_string_parser.h

* [AD-521] implement tests for JNI wrapper code

* test for TestDocumentDbConnectionGetSshTunnelPortSshTunnelNotActive is not yet active, need to be enabled when we can get external SSH tunnel working.
* bug fix: re-implemented DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.
connection.Get()->GetRef() is passed as first parameter because jobject is required for CallIntMethod and CallBooleanMethod.
* better JNI wrapper code is needed in the future so warnings/errors pop up when we pass jobject instead of jclass to the methods.

* [AD-521] refactor - remove comments and commented out code

* [AD-589] implement JNI method call for GetDatabaseMetadata

* define the method constant for DocumentDbConnection.getDatabaseMetadata()
* create JNI wrapper function for DocumentDbConnection.getMetaData

* [AD-589] implement unit test for DocumentDbConnection.getMetaData

* [AD-521] add calls to AutoCloseConnection in unit tests

* pass & errInfo instead of * errInfo in DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.

* [AD-521] remove unnecessary comment

* [AD-589] fix merge issues

* I missed this part of code when I was resolving the merge conflicts. Now they are corrected

* [AD-589] update getMetaData JNI wrapper code to pass &errInfo

* implement unit test for getMetaData

* [AD-589] implement JNI wrapper for DocumentDbDatabaseSchemaMetadataGetSchemaName

* implement Java class for
* define constant for DocumentDbDatabaseSchemaMetadataGetSchemaName
*  add empty test function for TestDocumentDbDatabaseS…
* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

* [AD-735] large dataset crash issue (#74)

### Summary

ODBC driver will not run on large document tests

### Description
The performance test crashes for large document tests. 

1. The root cause is the wrong memory is passed to SQLBindCol(). The parameter TargetValuePtr is passed &cols[i][0].data_dat[i]. The i could exceed 255 for large table while its max valid value should be 254. The correct value should be 0.
2. The SQLExtendedFetch is deprecated. Replace it with SQLFetch.

### Related Issue

https://bitquill.atlassian.net/browse/AD-735

* [AD-509] Update mac developer environment setup

* Adjust formatting

* Add note about llvm

* Add note about iodbc

* Update README.md

change the install options for OpenSSL, since vcpkg is a preferred option

* Update README.md

remove the WiX Toolset v4 requirement

* Update README.md

add steps for the fix for ignite-odbc-tests.profraw error in README.

* [AD-517] Remove old properties + add new properties

* remove SSL settings and add TLS checkbox on the Configuration Window

* add comments for my own work

added some comments for my own convenience. Will remove later

* fix tls checkbox on Configuration Window

fixed by updating ChildId in tlsCheckBox = CreateCheckBox

* add TlsAllowInvalidHostnames checkbox and TLS CA edit to the Configuration Window

* Update configuration.cpp

add comment to illustrate plan on what to do for the configuration window

* Update dsn_configuration_window.cpp

bugfix to make tlsCheckBox and tlsAllowInvalidHostnamesCheckBox read into the saved values

* change defaultFetchSize to fetchSize in configuration.h

* change Default DSN name to DocumentDB DSN

* add App Name, Fetch Size, Read Preference, and login timeout to configuration window

* [AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h

Files that had the change connection_string_parser.cpp, connection_string_parser.h, dsn_config.cpp, batch_query.cpp, data_query.cpp.

* [AD-522] save read preference settings

* [AD-522] remove commented out code

* [AD-522] Implement replicaSet and retryReads on Configuration Window

* [AD-517] Re-enable unit tests - WIP -  still need to cleanup

* [AD-522] add space to code lines for format consistency in configuration_window.h

* Add more unit tests

* Remove extra file

* [AD-522] Add small letter case to keep format consistency in dsn_configuration_window.h

 Add small letter case to keep format consistency in dsn_configuration_window.h
fixed one typo (Create authentication settings group box)

* Remove redundant declaration

* [AD-522] add variable definitions for SSH tunnel settings for config UI

* [AD-522] add function definition for SSH Tunnel

added SSH User, SSH Host. SSH Strict Host Key Checking, and SSH Known Hosts File onto the UI. However, the code to save the written values would be done in later commits.

* [AD-522] code draft for configuration.cpp

add draft variable definition to Enable ssh tunnel boolean value

* Revert "change defaultFetchSize to fetchSize in configuration.h"

This reverts commit f311e3bc7df1fd66d7be66c8e60170a41d078c18.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"

This reverts commit 2bcd2a492bd69fbde5de986a03c5a407a729ba47.

* [AD-517] * Change the C++ version to use to compile.

* [AD-522] change fetchSize to defaultFetchSize on configuration window for consistency with JDBC driver

* [AD-517] * Changed checks.yml so that it doesn't fail on code review errors.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h""

This reverts commit 124b7256d8f96fb31363aa2efb0423b115b11b0a.

* [AD-522] make TLS allow invalid hostnames checkbox enabled only when tls Check box is checked

* Revert "Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"""

This reverts commit aa7731a67f123c8942b89cba8334efe15776f6c8.

* Improvements from review

* Updated comments

* [AD-522] save SSH values for re-read, make settings window into 2 columns

Make ssl and additional settings groups to be on the right side of the column on the configuration window. This is subject to change later.
I created the function
void DsnConfigurationWindow::RetrieveSshParameters(config::Configuration& cfg) const
to save SSH values.
The width value in the DsnConfigurationWindow constructor is doubled from 360 to 720 and added the margin value. The margins currently look imbalanced on the settings box, and will be fixed in later commits.
Make Ok button and Cancel buttons aligned with the right column
bugfix - allow the SSH strict host checking checkbox to be checked on and off by adding the case ChildId::SSH_STRICT_HOST_KEY_CHECKING_CHECK_BOX definition.

* Removed includes no longer being used in configuration.h

* Some formatting improvements

* [Ad-522] add sshEnable variable in DSN config

- added sshEnable variable definition and getter/setter for sshEnable.
- added code for parsing sshEnable in the connection string parser

* [AD-522] change from GetSshEnable to IsSshEnable for consistency

* [AD-522] comment out deprecated readPreference variable

start on transitioning from readPreferenceEdit to readPreference combo box

* [AD-522] add SSH enable checkbox, SSH private key passphrase, and SSH private key file

* add SSH Enable variable in configuration.h and configuration.cpp
* add SSH checkbox in SSH group setting
* add SSH private key file edit in SSH group setting
* add SSH private key pass phrase in SSH group setting
** SSH private key passphrase label requires double the row height due to the label being long.
* make SSH setting items disabled/enabled as SSH enable checkbox is unchecked/checked
* save SSH variables to configuration when Ok button is pressed.

* [AD-522] read_preference.h fix

* add guards to read_preference.h fix
* include read_preference.h in dsn_configuration_window.cpp
* add draft code for read preference in dsn_configuration_window.cpp

* [AD-522] update fields in configuration window

* modified order of fields in the configuration window.
- Retry reads checkbox is now in the first row under "Additional Settings".
- SSH Strict host key check is now in the last row under "Internal SSH Tunnel Settings"
- Allow invalid hostnames checkbox now is in 2nd row under "TLS/SSL settings"
* added warning sentences for Allow invalid hostnames checkbox and SSH strict host key check

* Improvements from code review + address some warnings

* Change connection _test to use hostname key instead of address

* Change connection_test to use databse key instead of schema key

* [AD-522] implement read Preference

* add SpaceToUnderscore function
* implement read Preference in Config window and save the value

* Attempt to fix windows 32 build

* [AD-522] refactor dsn_configuration_window.cpp

refactor code format; remove spaces and  unnecessary comments

* [AD-522] fix config window margins

now the config window is symmetric

* Fix formatting

* [AD-522] add HasText() function to window.h

* previously, the definition of HasText was mistakenly committed in commit cbaeedd0cde8b82bc29134efcad28dba943751c2.
* add header of HasText() to resolve building errors in origin
* update HasText() function to make code simpler

* [AD-522] make "rs0" the default value of replicaSet

* [AD-522] implement database, hostname, port fields. And disable ok button unless all required fields are filled

* implement database, hostname, port fields.
* disable ok button unless all required fields (database, hostname, port, username, password) are filled
* added boolean created to indicate whether the configuration window has been created. If has, then check for disabling/enabling the Ok button

* [AD-522] rename SSH Known Hosts File label for clarity

* [AD-522] refactor logs for retrieving TSL settings

Make the sentences align

* [AD-522] rename TLS CA File label for clarity

* change label length to the same label length as connection settings group

* [AD-522] move authorization setting fields to connection fields

reason: only username and password are authorization settings, the rest are not. We chose to put username, password in the connections group because all fields in the connections group are required.

* [AD-522] bugfix-comment out address field related code in RetrieveConnectionParameters

* [AD-522] rename sslSettings to tlsSettings and add comment for connection settings group

* [AD-522] remove protocol version from config window

* [AD-522] bug fix sshKnownHostsFile not saved when Ok button is pressed

* [AD-522] remove commented out #include headers

* [AD-522] disable  SSH Known Hosts File edit when SSH Strict Host Key Check check box is unchecked

* move SSH Strict Host Key Checking check box above SSH Known Hosts File edit in the config window

* [AD-522] refactor - remove commented out header code

* [AD-522] add comments in configuration.cpp for planning

* modify commented out example code in dsn_configuration_window.cpp for clarity

* [AD-522] change from SSL to TLS for consistency

* SSL_SETTINGS_GROUP_BOX is changed to TLS_SETTINGS_GROUP_BOX

* [AD-522] remove commented out code

Removed commented out code:
* RetrieveAuthParameters
* CreateAuthSettingsGroup
* CreateAdditionalSettingsGroup function and CreateSslSettingsGroup function for 1 column window
* protocol version - related code
* authSettingsGroupBox code

* [AD-522] remove std::auto_ptr<Window> authSettingsGroupBox;

* [AD-522] remove address field auto pointer initialization

* [AD-522] remove address field from config window constructor

* [AD-522] refactor - remove unneeded commented out code in HasText

* [AD-522] refactor - remove white spaces and update comment

* [AD-522] debug scan_method.h

* SpaceToUnderscore is called in scan_method.cpp to make reads better
* added guards to scan_method.h

* [AD-522] implement Schema group settings box

* fixed bug in dsn_config.cpp to save scanLimit correctly

* [AD-522] update readPreference default value to unknown

* removed unneeded commented out code
* removed unnecessary code to get string value on readPreference

* [AD-522] refactor - remove unnecessary comments

* [AD-522] adjust window size and additional settings group label size

* additional settings group label size is now the same as other settings group in the same column

* Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window"

This reverts commit 8d609dac52d3e3fc0442f2e8ec8526ec3eb2d6ab, reversing
changes made to 0aa20527606ccc11a7a99d6bd6f8d249fa8d1f61.

* [AD-522] keyboard user interface design + disable DSN empty strimg warning dialog

* make cursor go to checkboxes on the Config window and not skip them when tab key is pressed
* when DSN field is empty, Ok Button is disabled
* make default replicaSet value empty string (default is disable repliaSet)
* refactor - removed unneeded comments

* [AD-522] add end_point header to resolve build errors

end_point related code still exist in connection.cpp, so I readded the header for end_point

* Revert "Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window""

This reverts commit df0cad5490612c695ca28cc8ee44c73dbb1b68bd.

* [AD-522] resolve errors after merging develop branch

* GetAddresses() is deprecated, replaced it with GetHostname() and GetTcpPort() to get hostname and port number, respectively.
* replaced GetSchema() with GetSchemaName()
* removed commented out code
* refactor with dsn_configuration_window.cpp

* [AD-512] Resolve issue with missing include file.

* [AD-522] make BoolParseResult recognizable

* [AD-522] fix build errors after develop branch merge

* update schema checkbox string
* make edit row height single
* update SetTcpPort to SetPort etc
* define default value for sshEnable

* [AD-522] enable encrypt password for ssh private key passphrase

* modify refresh schema checkbox string to fit better
* remove log message for ssh private key passphrase to increase security

* [AD-521] add comments and notes for starting AD-521

* [AD-509] update readMe to include directions about saving Java bin and server directories.

* reason: ODBC JNI calls have a dependency on `jvm.dll`, as a result, the ODBC driver cannot operate properly unless the Java bin and server directories are included in the path.

* [AD-522] reduce space between ssh private key passphrase and the checkbox below

* [AD-521] define constants for Java GetSshLocalPort method call

* [AD-521] integrate code review feedback from Andie

* refactors with comment changes and log changes

* [AD-521] refactor code

* make open brace bracket start on new line for JVMException
* remove excess space

* [AD-427] Tracer Code - Limited Capability to load metadata - work-in-progress.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-522] remove space and add new line at the end of enum types

* [AD-522] add new lines at the end of Enum type files

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] add changes for Java.cpp from Bruce's AD-427 branch

* those changes are not included in the previous merge, and are now added

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] JNI wrapper calls to iSshTunnelActive and getSshLocalPort

* some draft comments are left to be cleaned up

* [AD-521] debug getSshLocalPort

* change function type signature from optional to int
* refactor - remove comments

* [AD-521] change return value in getSshLocalPort from boolean to a 0

* try to fix access memory issue in TestDriverManagerGetConnection

* [AD-522] resolve build errors after merge

* fix bug for schema name not correctly loaded on the config window
* removed unnecessary headers

* [AD-427] Added ResultSet.next and ResultSet.GetString()

* [AD-522] address code review comments

* change to enum class type for read_preference.h and scan_method.h
* change the way enum class objects are read
* add static cast to enum types so SetSelection function can work with it
* refactor - removed unnecessary comments
* refactor - changes code doc in connection_string_parser.h

* [AD-521] implement tests for JNI wrapper code

* test for TestDocumentDbConnectionGetSshTunnelPortSshTunnelNotActive is not yet active, need to be enabled when we can get external SSH tunnel working.
* bug fix: re-implemented DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.
connection.Get()->GetRef() is passed as first parameter because jobject is required for CallIntMethod and CallBooleanMethod.
* better JNI wrapper code is needed in the future so warnings/errors pop up when we pass jobject instead of jclass to the methods.

* [AD-521] refactor - remove comments and commented out code

* [AD-589] implement JNI method call for GetDatabaseMetadata

* define the method constant for DocumentDbConnection.getDatabaseMetadata()
* create JNI wrapper function for DocumentDbConnection.getMetaData

* [AD-589] implement unit test for DocumentDbConnection.getMetaData

* [AD-521] add calls to AutoCloseConnection in unit tests

* pass & errInfo instead of * errInfo in DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.

* [AD-521] remove unnecessary comment

* [AD-589] fix merge issues

* I missed this part of code when I was resolving the merge conflicts. Now they are corrected

* [AD-589] update getMetaData JNI wrapper code to pass &errInfo

* implement unit test for getMetaData

* [AD-589] implement JNI wrapper for DocumentDbDatabaseSchemaMetadataGetSchemaName

* implement Java class for
* define constant for DocumentDbDatabaseSchemaMetadataGetSchemaName
*  add empty test function for TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* [AD-589] implement unit test for DbDatabaseSchemaMetadataGetSchemaName

* [AD-521] refactor - change case of ssh to SSH for consistency

* [AD-589] address code review comments

* rename DocumentDbConnectionGetMetaData to DocumentDbConnectionGetDatabaseMetaData

* [AD-589] change case from MetaData to Metadata to match Java method name

* [AD-589] refactor: change from metaData to metadata

changes occurred in:
* DocumentDbConnectionGetDatabaseMetadata
* DocumentDbDatabaseSchemaMetadataGetSchemaName
* TestDocumentDbConnectionGetDatabaseMetadata
* TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* Birschick bq/sync up (#21)

* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

Co-authored-by: affonsoBQ <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>

* [AD-735] large dataset crash issue (#23)

* first test

* fix performance test crash

* fix performance test crash

* fix whitespace issue

* rework based on comments

Co-authored-by: Andie Montoya <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>
Co-authored-by: affonsoBQ <[email protected]>
Co-authored-by: RoyZhang2022 <[email protected]>

* [AD-649] Add missing documentation (#73)

* Initial user/developer documentation
Co-authored-by: andiem-bq <[email protected]>
Co-authored-by: Bruce Irschick <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>

* [AD-550] Adapt Foreign Keys (#75)

Summary
Adapt Foreign Keys (i.e., the SQLForeignKeys function)

Description
 JNI wrapper code for getImportedKeys
 adapt SQLForeignKeys function
 unit test for jni_test
 unit test for java_test
Related Issue
https://bitquill.atlassian.net/browse/AD-550

* [AD-509] Update mac developer environment setup

* Adjust formatting

* Add note about llvm

* Add note about iodbc

* Update README.md

change the install options for OpenSSL, since vcpkg is a preferred option

* Update README.md

remove the WiX Toolset v4 requirement

* Update README.md

add steps for the fix for ignite-odbc-tests.profraw error in README.

* [AD-517] Remove old properties + add new properties

* remove SSL settings and add TLS checkbox on the Configuration Window

* add comments for my own work

added some comments for my own convenience. Will remove later

* fix tls checkbox on Configuration Window

fixed by updating ChildId in tlsCheckBox = CreateCheckBox

* add TlsAllowInvalidHostnames checkbox and TLS CA edit to the Configuration Window

* Update configuration.cpp

add comment to illustrate plan on what to do for the configuration window

* Update dsn_configuration_window.cpp

bugfix to make tlsCheckBox and tlsAllowInvalidHostnamesCheckBox read into the saved values

* change defaultFetchSize to fetchSize in configuration.h

* change Default DSN name to DocumentDB DSN

* add App Name, Fetch Size, Read Preference, and login timeout to configuration window

* [AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h

Files that had the change connection_string_parser.cpp, connection_string_parser.h, dsn_config.cpp, batch_query.cpp, data_query.cpp.

* [AD-522] save read preference settings

* [AD-522] remove commented out code

* [AD-522] Implement replicaSet and retryReads on Configuration Window

* [AD-517] Re-enable unit tests - WIP -  still need to cleanup

* [AD-522] add space to code lines for format consistency in configuration_window.h

* Add more unit tests

* Remove extra file

* [AD-522] Add small letter case to keep format consistency in dsn_configuration_window.h

 Add small letter case to keep format consistency in dsn_configuration_window.h
fixed one typo (Create authentication settings group box)

* Remove redundant declaration

* [AD-522] add variable definitions for SSH tunnel settings for config UI

* [AD-522] add function definition for SSH Tunnel

added SSH User, SSH Host. SSH Strict Host Key Checking, and SSH Known Hosts File onto the UI. However, the code to save the written values would be done in later commits.

* [AD-522] code draft for configuration.cpp

add draft variable definition to Enable ssh tunnel boolean value

* Revert "change defaultFetchSize to fetchSize in configuration.h"

This reverts commit f311e3bc7df1fd66d7be66c8e60170a41d078c18.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"

This reverts commit 2bcd2a492bd69fbde5de986a03c5a407a729ba47.

* [AD-517] * Change the C++ version to use to compile.

* [AD-522] change fetchSize to defaultFetchSize on configuration window for consistency with JDBC driver

* [AD-517] * Changed checks.yml so that it doesn't fail on code review errors.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h""

This reverts commit 124b7256d8f96fb31363aa2efb0423b115b11b0a.

* [AD-522] make TLS allow invalid hostnames checkbox enabled only when tls Check box is checked

* Revert "Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"""

This reverts commit aa7731a67f123c8942b89cba8334efe15776f6c8.

* Improvements from review

* Updated comments

* [AD-522] save SSH values for re-read, make settings window into 2 columns

Make ssl and additional settings groups to be on the right side of the column on the configuration window. This is subject to change later.
I created the function
void DsnConfigurationWindow::RetrieveSshParameters(config::Configuration& cfg) const
to save SSH values.
The width value in the DsnConfigurationWindow constructor is doubled from 360 to 720 and added the margin value. The margins currently look imbalanced on the settings box, and will be fixed in later commits.
Make Ok button and Cancel buttons aligned with the right column
bugfix - allow the SSH strict host checking checkbox to be checked on and off by adding the case ChildId::SSH_STRICT_HOST_KEY_CHECKING_CHECK_BOX definition.

* Removed includes no longer being used in configuration.h

* Some formatting improvements

* [Ad-522] add sshEnable variable in DSN config

- added sshEnable variable definition and getter/setter for sshEnable.
- added code for parsing sshEnable in the connection string parser

* [AD-522] change from GetSshEnable to IsSshEnable for consistency

* [AD-522] comment out deprecated readPreference variable

start on transitioning from readPreferenceEdit to readPreference combo box

* [AD-522] add SSH enable checkbox, SSH private key passphrase, and SSH private key file

* add SSH Enable variable in configuration.h and configuration.cpp
* add SSH checkbox in SSH group setting
* add SSH private key file edit in SSH group setting
* add SSH private key pass phrase in SSH group setting
** SSH private key passphrase label requires double the row height due to the label being long.
* make SSH setting items disabled/enabled as SSH enable checkbox is unchecked/checked
* save SSH variables to configuration when Ok button is pressed.

* [AD-522] read_preference.h fix

* add guards to read_preference.h fix
* include read_preference.h in dsn_configuration_window.cpp
* add draft code for read preference in dsn_configuration_window.cpp

* [AD-522] update fields in configuration window

* modified order of fields in the configuration window.
- Retry reads checkbox is now in the first row under "Additional Settings".
- SSH Strict host key check is now in the last row under "Internal SSH Tunnel Settings"
- Allow invalid hostnames checkbox now is in 2nd row under "TLS/SSL settings"
* added warning sentences for Allow invalid hostnames checkbox and SSH strict host key check

* Improvements from code review + address some warnings

* Change connection _test to use hostname key instead of address

* Change connection_test to use databse key instead of schema key

* [AD-522] implement read Preference

* add SpaceToUnderscore function
* implement read Preference in Config window and save the value

* Attempt to fix windows 32 build

* [AD-522] refactor dsn_configuration_window.cpp

refactor code format; remove spaces and  unnecessary comments

* [AD-522] fix config window margins

now the config window is symmetric

* Fix formatting

* [AD-522] add HasText() function to window.h

* previously, the definition of HasText was mistakenly committed in commit cbaeedd0cde8b82bc29134efcad28dba943751c2.
* add header of HasText() to resolve building errors in origin
* update HasText() function to make code simpler

* [AD-522] make "rs0" the default value of replicaSet

* [AD-522] implement database, hostname, port fields. And disable ok button unless all required fields are filled

* implement database, hostname, port fields.
* disable ok button unless all required fields (database, hostname, port, username, password) are filled
* added boolean created to indicate whether the configuration window has been created. If has, then check for disabling/enabling the Ok button

* [AD-522] rename SSH Known Hosts File label for clarity

* [AD-522] refactor logs for retrieving TSL settings

Make the sentences align

* [AD-522] rename TLS CA File label for clarity

* change label length to the same label length as connection settings group

* [AD-522] move authorization setting fields to connection fields

reason: only username and password are authorization settings, the rest are not. We chose to put username, password in the connections group because all fields in the connections group are required.

* [AD-522] bugfix-comment out address field related code in RetrieveConnectionParameters

* [AD-522] rename sslSettings to tlsSettings and add comment for connection settings group

* [AD-522] remove protocol version from config window

* [AD-522] bug fix sshKnownHostsFile not saved when Ok button is pressed

* [AD-522] remove commented out #include headers

* [AD-522] disable  SSH Known Hosts File edit when SSH Strict Host Key Check check box is unchecked

* move SSH Strict Host Key Checking check box above SSH Known Hosts File edit in the config window

* [AD-522] refactor - remove commented out header code

* [AD-522] add comments in configuration.cpp for planning

* modify commented out example code in dsn_configuration_window.cpp for clarity

* [AD-522] change from SSL to TLS for consistency

* SSL_SETTINGS_GROUP_BOX is changed to TLS_SETTINGS_GROUP_BOX

* [AD-522] remove commented out code

Removed commented out code:
* RetrieveAuthParameters
* CreateAuthSettingsGroup
* CreateAdditionalSettingsGroup function and CreateSslSettingsGroup function for 1 column window
* protocol version - related code
* authSettingsGroupBox code

* [AD-522] remove std::auto_ptr<Window> authSettingsGroupBox;

* [AD-522] remove address field auto pointer initialization

* [AD-522] remove address field from config window constructor

* [AD-522] refactor - remove unneeded commented out code in HasText

* [AD-522] refactor - remove white spaces and update comment

* [AD-522] debug scan_method.h

* SpaceToUnderscore is called in scan_method.cpp to make reads better
* added guards to scan_method.h

* [AD-522] implement Schema group settings box

* fixed bug in dsn_config.cpp to save scanLimit correctly

* [AD-522] update readPreference default value to unknown

* removed unneeded commented out code
* removed unnecessary code to get string value on readPreference

* [AD-522] refactor - remove unnecessary comments

* [AD-522] adjust window size and additional settings group label size

* additional settings group label size is now the same as other settings group in the same column

* Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window"

This reverts commit 8d609dac52d3e3fc0442f2e8ec8526ec3eb2d6ab, reversing
changes made to 0aa20527606ccc11a7a99d6bd6f8d249fa8d1f61.

* [AD-522] keyboard user interface design + disable DSN empty strimg warning dialog

* make cursor go to checkboxes on the Config window and not skip them when tab key is pressed
* when DSN field is empty, Ok Button is disabled
* make default replicaSet value empty string (default is disable repliaSet)
* refactor - removed unneeded comments

* [AD-522] add end_point header to resolve build errors

end_point related code still exist in connection.cpp, so I readded the header for end_point

* Revert "Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window""

This reverts commit df0cad5490612c695ca28cc8ee44c73dbb1b68bd.

* [AD-522] resolve errors after merging develop branch

* GetAddresses() is deprecated, replaced it with GetHostname() and GetTcpPort() to get hostname and port number, respectively.
* replaced GetSchema() with GetSchemaName()
* removed commented out code
* refactor with dsn_configuration_window.cpp

* [AD-512] Resolve issue with missing include file.

* [AD-522] make BoolParseResult recognizable

* [AD-522] fix build errors after develop branch merge

* update schema checkbox string
* make edit row height single
* update SetTcpPort to SetPort etc
* define default value for sshEnable

* [AD-522] enable encrypt password for ssh private key passphrase

* modify refresh schema checkbox string to fit better
* remove log message for ssh private key passphrase to increase security

* [AD-521] add comments and notes for starting AD-521

* [AD-509] update readMe to include directions about saving Java bin and server directories.

* reason: ODBC JNI calls have a dependency on `jvm.dll`, as a result, the ODBC driver cannot operate properly unless the Java bin and server directories are included in the path.

* [AD-522] reduce space between ssh private key passphrase and the checkbox below

* [AD-521] define constants for Java GetSshLocalPort method call

* [AD-521] integrate code review feedback from Andie

* refactors with comment changes and log changes

* [AD-521] refactor code

* make open brace bracket start on new line for JVMException
* remove excess space

* [AD-427] Tracer Code - Limited Capability to load metadata - work-in-progress.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-522] remove space and add new line at the end of enum types

* [AD-522] add new lines at the end of Enum type files

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] add changes for Java.cpp from Bruce's AD-427 branch

* those changes are not included in the previous merge, and are now added

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] JNI wrapper calls to iSshTunnelActive and getSshLocalPort

* some draft comments are left to be cleaned up

* [AD-521] debug getSshLocalPort

* change function type signature from optional to int
* refactor - remove comments

* [AD-521] change return value in getSshLocalPort from boolean to a 0

* try to fix access memory issue in TestDriverManagerGetConnection

* [AD-522] resolve build errors after merge

* fix bug for schema name not correctly loaded on the config window
* removed unnecessary headers

* [AD-427] Added ResultSet.next and ResultSet.GetString()

* [AD-522] address code review comments

* change to enum class type for read_preference.h and scan_method.h
* change the way enum class objects are read
* add static cast to enum types so SetSelection function can work with it
* refactor - removed unnecessary comments
* refactor - changes code doc in connection_string_parser.h

* [AD-521] implement tests for JNI wrapper code

* test for TestDocumentDbConnectionGetSshTunnelPortSshTunnelNotActive is not yet active, need to be enabled when we can get external SSH tunnel working.
* bug fix: re-implemented DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.
connection.Get()->GetRef() is passed as first parameter because jobject is required for CallIntMethod and CallBooleanMethod.
* better JNI wrapper code is needed in the future so warnings/errors pop up when we pass jobject instead of jclass to the methods.

* [AD-521] refactor - remove comments and commented out code

* [AD-589] implement JNI method call for GetDatabaseMetadata

* define the method constant for DocumentDbConnection.getDatabaseMetadata()
* create JNI wrapper function for DocumentDbConnection.getMetaData

* [AD-589] implement unit test for DocumentDbConnection.getMetaData

* [AD-521] add calls to AutoCloseConnection in unit tests

* pass & errInfo instead of * errInfo in DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.

* [AD-521] remove unnecessary comment

* [AD-589] fix merge issues

* I missed this part of code when I was resolving the merge conflicts. Now they are corrected

* [AD-589] update getMetaData JNI wrapper code to pass &errInfo

* implement unit test for getMetaData

* [AD-589] implement JNI wrapper for DocumentDbDatabaseSchemaMetadataGetSchemaName

* implement Java class for
* define constant for DocumentDbDatabaseSchemaMetadataGetSchemaName
*  add empty test function for TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* [AD-589] implement unit test for DbDatabaseSchemaMetadataGetSchemaName

* [AD-521] refactor - change case of ssh to SSH for consistency

* [AD-589] address code review comments

* rename DocumentDbConnectionGetMetaData to DocumentDbConnectionGetDatabaseMetaData

* [AD-589] change case from MetaData to Metadata to match Java method name

* [AD-589] refactor: change from metaData to metadata

changes occurred in:
* DocumentDbConnectionGetDatabaseMetadata
* DocumentDbDatabaseSchemaMetadataGetSchemaName
* TestDocumentDbConnectionGetDatabaseMetadata
* TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* Birschick bq/sync up (#21)

* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

Co-authored-by: affonsoBQ <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>

* [AD-735] large dataset crash issue (#23)

* first test

* fix performance test crash

* fix performance test crash

* fix whitespace issue

* rework based on comments

* SQLPrimaryKey using JNI

* odbc test failure fix

* Revert "odbc test failure fix"

This reverts commit edb94599c77b9d60d68cbad9489838742f31805c.

* Revert "SQLPrimaryKey using JNI"

This reverts commit ba4b68f082542878524e9100d27f31045a2d14dc.

* [AD-550] Adapt Foreign Keys (#24)

* [AD-550] JNI implementation for getImportedKeys

* [AD-550] update Pull Request Template

* added reviewees Roy Zhang and Micthell Elholm

* [AD-550] add todo note to unit test

* [AD-550] define GetImportedKeys in database_metadata.h/.cpp

* add ODBC wrapper code to the JNI call for GetImportedKeys

* [AD-550] initialize string vars to be empty string in column_metadata_query

* [AD-550] modify ForeignKeysQuery to accept 3 arguments only

* modified ForeignKeysQuery to only accept catalog, schema, and table, as other fields are not needed.

* [AD-550] update column metadata for foreign keys

* [AD-550] fix typo in primary_key_meta.h

* [AD-550] define vars for foreign key meta

* [AD-550] add getter functions for vars in foreign_key_meta.h

* [AD-550] support vars in foreign key meta to be optional

* [AD-550] add headers for boost optional

* [AD-550] add headers and constructors for foreign key meta

* added ForeignKeyMeta constructor, and copy constructor
*added ForeignKeyMeta destructor
* define ForeignKeyMetaVector
* basically, complete foreign_key_meta.h

* [AD-550] implement resultset.getSmallInt

* implement resultset.getSmallInt taking column indices or column names as parameters
* make ColumnMeta::dataType be updated with  resultSet.Get()->GetSmallInt to simplify code and readbility

* [AD-550] Add foreign_key_meta.cpp

* implemented functions:
ReadForeignKeysColumnMetaVector
ForeignKeyMeta::Read

* [AD-550] update CMakeLists to include foreign_key_meta.cpp

* [AD-550] implement MakeRequestGetForeignKeysMeta

* MakeRequestGetForeignKeysMeta calls GetImportedKeys to get Jni ResultSet object for foreign keys, and then reads the resultSet object to fill in the meta object.

* [AD-550] update ForeignKeysQuery::DataAvailable and ForeignKeysQuery::Close

* update meta object accordingly whenForeignKeysQuery::Close() is called.
* return boolean for whether data is available based on meta object

* [AD-550] implement ForeignKeysQuery::Execute and FetchNextRow

* the code for ForeignKeysQuery::Execute and ForeignKeysQuery::FetchNextRow is based on ColumnMetadataQuery::Execute and ColumnMetadataQuery::FetchNextRow

* [AD-550] fix Mac and Linux build

* remove extra qualification on GetSmallInt function

* [AD-550] implement ForeignKeysQuery::GetColumn

* had formatting changes as well

* [AD-550] JNI implementation for getImportedKeys

* [AD-550] update Pull Request Template

* added reviewees Roy Zhang and Micthell Elholm

* [AD-550] add todo note to unit test

* [AD-550] define GetImportedKeys in database_metadata.h/.cpp

* add ODBC wrapper code to the JNI call for GetImportedKeys

* [AD-550] initialize string vars to be empty string in column_metadata_query

* [AD-550] modify ForeignKeysQuery to accept 3 arguments only

* modified ForeignKeysQuery to only accept catalog, schema, and table, as other fields are not needed.

* [AD-550] update column metadata for foreign keys

* [AD-550] fix typo in primary_key_meta.h

* [AD-550] define vars for foreign key meta

* [AD-550] add getter functions for vars in foreign_key_meta.h

* [AD-550] support vars in foreign key meta to be optional

* [AD-550] add headers for boost optional

* [AD-550] add headers and constructors for foreign key meta

* added ForeignKeyMeta constructor, and copy constructor
*added ForeignKeyMeta destructor
* define ForeignKeyMetaVector
* basically, complete foreign_key_meta.h

* [AD-550] implement resultset.getSmallInt

* implement resultset.getSmallInt taking column indices or column names as parameters
* make ColumnMeta::dataType be updated with  resultSet.Get()->GetSmallInt to simplify code and readbility

* [AD-550] Add foreign_key_meta.cpp

* implemented functions:
ReadForeignKeysColumnMetaVector
ForeignKeyMeta::Read

* [AD-550] update CMakeLists to include foreign_key_meta.cpp

* [AD-550] implement MakeRequestGetForeignKeysMeta

* MakeRequestGetForeignKeysMeta calls GetImportedKeys to get Jni ResultSet object for foreign keys, and then reads the resultSet object to fill in the meta object.

* [AD-550] update ForeignKeysQuery::DataAvailable and ForeignKeysQuery::Close

* update meta object accordingly whenForeignKeysQuery::Close() is called.
* return boolean for whether data is available based on meta object

* [AD-550] implement ForeignKeysQuery::Execute and FetchNextRow

* the code for ForeignKeysQuery::Execute and ForeignKeysQuery::FetchNextRow is based on ColumnMetadataQuery::Execute and ColumnMetadataQuery::FetchNextRow

* [AD-550] fix Mac and Linux build

* remove extra qualification on GetSmallInt function

* [AD-550] implement ForeignKeysQuery::GetColumn

* had formatting changes as well

* [AD-550] update docs for foreign_keys_query.h

* [AD-550] refine SQLForeignKey call

* [AD-550] add draft foreign key test for JNI test

* [AD-550] add test tables for jni test

* [AD-550] update test TestDocumentDbDatabaseMetaDataGetImportedKeys

* update test to query virtual table jni_test_001_sub_doc

* [AD-550] add SQLForeignKeys sql api test

* [AD-550] add logs for ReadForeignKeysColumnMetaVector

* PK* variables will contain the list of foreign keys in the specified table

* [AD-550] reformat jni_test

* [AD-550] implement TestDatabaseMetaDataGetImportedKeys for java_test

* [AD-550] add test document meta_queries_test_002_with_array

* this document will be used to test SQLForeignKeys in meta_queries_test

* [AD-550] refactor TestSQLForeignKeys test

* reason: I see that `SQLCHAR empty[] = "";` is used in meta_queries_test, and I think that might be a better way of writing the parameters

* [AD-550] add test for SQLForeignKeys in meta_queries_test

tests added:
* TestGetDataWithForeignKeysReturnsOneFromLocalServer
* TestGetDataWithForeignKeysReturnsNone
* they use test table meta_queries_test_002_with_array

* [AD-550] clean up

* add doc for SQLForeignKeys
* remove comments

* [AD-550] remove commented out code

* [AD-550] remove unneeded commented out code

* [AD-550] make ODBC pass nullptr for JString catalog and schema for SQLForeignKeys

*  in getImportedKeys, null boost::optional strings will be passed as nullptr to JDBC
* make jni test and java test pass null boost::optional strings to JNI calls for getImportedKeys
* ODBC now passes boost::optional strings foreignCatalog and foreignSchema to ExecuteGetForeignKeysQuery function.

* [AD-550] add if check for sqlStrLen

* if sqlString is empty, return boost::none

* [AD-550] debug `choco install cppcheck -y` not working on GitHub Actions

* [AD-550] add tests for testing empty string parameters

* added Java test TestDatabaseMetaDataGetImportedKeysReturnsNone
* added Jni test TestDocumentDbDatabaseMetaDataGetImportedKeysReturnsNone

* [AD-550] disable cppcheck

* created [AD-752](https://bitquill.atlassian.net/browse/AD-752) to investigate it further.

* [AD-550] change the place for code doc for function SQLForeignKeys

* [AD-550] update if statement check of SqlStringToOptString

* to resolve code review comment

* [AD-550] resolve code review comment

* The sqlStrLen is an int32_t, so "!sqlStrLen" can be removed

* [AD-550] make boost optional strings constant where needed

* previously, I changed `const std::string` to `boost::optional< std::string >` in some areas, and this is now fixed by replacing the latter with `boost::optional< const std::string >`

* [AD-550] SqlStringToOptString fix

* also fixed SqlStringToConstOptString
* reason: SQL_NTS is a flag that indicates that the string passed is a null-terminated string.

* [AD-550] make tests pass null to SQLForeignKeys

* [AD-550] add test case for TestGetDataWithForeignKeysReturnsNone

*  even with the correct table name, as long as empty strings are passed as catalog/schema, SQL_NO_DATA should be returned

* [AD-550] update SqlStringToOptString

* [AD-550] update TestSQLForeignKeys to pass NULL as parameters properly

* [AD-550] move `const` out of `boost::optional< const std::string >`

* reason: `const boost::optional< std::string >` works better than `boost::optional< const std::string >`.
* this commit is to resolve code review comments

* [AD-550] add meta_queries test that passes catalog as empty string

* [AD-550] Set `fetched` to false in ForeignKeysQuery::Close()

* [AD-550] add explicit conversion to boost::optional variable initialization

* [AD-550] resolve code review comment

* remove duplicate code

* [AD-550] remove function

* removed unneeded function: SqlStringToConstOptString

* [AD-649] Add missing documentation (#29)

### Summary

[AD-649] Add missing documentation

### Description
Update ODBC driver documentation

- [x] Documentation about connections string ( Parameters description)
- [x] Documentation about DSN configuration window ( with screenshots)
- [x] Documentation how the ODBC driver works ( ODBC and JDBC integration)
- [x] Documentation what is supported ( link with JDBC driver)

### Related Issue

https://bitquill.atlassian.net/browse/AD-649

* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

* [AD-735] large dataset crash issue (#74)

### Summary

ODBC driver will not run on large document tests

### Description
The performance test crashes for large document tests. 

1. The root cause is the wrong memory is passed to SQLBindCol(). The parameter TargetValuePtr is passed &cols[i][0].data_dat[i]. The i could exceed 255 for large table while its max valid value should be 254. The correct value should be 0.
2. The SQLExtendedFetch is deprecated. Replace it with SQLFetch.

### Related Issue

https://bitquill.atlassian.net/browse/AD-735

* [AD-509] Update mac developer environment setup

* Adjust formatting

* Add note about llvm

* Add note about iodbc

* Update README.md

change the install options for OpenSSL, since vcpkg is a preferred option

* Update README.md

remove the WiX Toolset v4 requirement

* Update README.md

add steps for the fix for ignite-odbc-tests.profraw error in README.

* [AD-517] Remove old properties + add new properties

* remove SSL settings and add TLS checkbox on the Configuration Window

* add comments for my own work

added some comments for my own convenience. Will remove later

* fix tls checkbox on Configuration Window

fixed by updating ChildId in tlsCheckBox = CreateCheckBox

* add TlsAllowInvalidHostnames checkbox and TLS CA edit to the Configuration Window

* Update configuration.cpp

add comment to illustrate plan on what to do for the configuration window

* Update dsn_configuration_window.cpp

bugfix to make tlsCheckBox and tlsAllowInvalidHostnamesCheckBox read into the saved values

* change defaultFetchSize to fetchSize in configuration.h

* change Default DSN name to DocumentDB DSN

* add App Name, Fetch Size, Read Preference, and login timeout to configuration window

* [AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h

Files that had the change connection_string_parser.cpp, connection_string_parser.h, dsn_config.cpp, batch_query.cpp, data_query.cpp.

* [AD-522] save read preference settings

* [AD-522] remove commented out code

* [AD-522] Implement replicaSet and retryReads on Configuration Window

* [AD-517] Re-enable unit tests - WIP -  still need to cleanup

* [AD-522] add space to code lines for format consistency in configuration_window.h

* Add more unit tests

* Remove extra file

* [AD-522] Add small letter case to keep format consistency in dsn_configuration_window.h

 Add small letter case to keep format consistency in dsn_configuration_window.h
fixed one typo (Create authentication settings group box)

* Remove redundant declaration

* [AD-522] add variable definitions for SSH tunnel settings for config UI

* [AD-522] add function definition for SSH Tunnel

added SSH User, SSH Host. SSH Strict Host Key Checking, and SSH Known Hosts File onto the UI. However, the code to save the written values would be done in later commits.

* [AD-522] code draft for configuration.cpp

add draft variable definition to Enable ssh tunnel boolean value

* Revert "change defaultFetchSize to fetchSize in configuration.h"

This reverts commit f311e3bc7df1fd66d7be66c8e60170a41d078c18.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"

This reverts commit 2bcd2a492bd69fbde5de986a03c5a407a729ba47.

* [AD-517] * Change the C++ version to use to compile.

* [AD-522] change fetchSize to defaultFetchSize on configuration window for consistency with JDBC driver

* [AD-517] * Changed checks.yml so that it doesn't fail on code review errors.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h""

This reverts commit 124b7256d8f96fb31363aa2efb0423b115b11b0a.

* [AD-522] make TLS allow invalid hostnames checkbox enabled only when tls Check box is checked

* Revert "Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"""

This reverts commit aa7731a67f123c8942b89cba8334efe15776f6c8.

* Improvements from review

* Updated comments

* [AD-522] save SSH values for re-read, make settings window into 2 columns

Make ssl and additional settings groups to be on the right side of the column on the configuration window. This is subject to change later.
I created the function
void DsnConfigurationWindow::RetrieveSshParameters(config::Configuration& cfg) const
to save SSH values.
The width value in the DsnConfigurationWindow constructor is doubled from 360 to 720 and added the margin value. The margins currently look imbalanced on the settings box, and will be fixed in later commits.
Make Ok button and Cancel buttons aligned with the right column
bugfix - allow the SSH strict host checking checkbox to be checked on and off by adding the case ChildId::SSH_STRICT_HOST_KEY_CHECKING_CHECK_BOX definition.

* Removed includes no longer being used in configuration.h

* Some formatting improvements

* [Ad-522] add sshEnable variable in DSN config

- added sshEnable variable definition and getter/setter for sshEnable.
- added code for parsing sshEnable in the connection string parser

* [AD-522] change from GetSshEnable to IsSshEnable for consistency

* [AD-522] comment out deprecated readPreference variable

start on transitioning from readPreferenceEdit to readPreference combo box

* [AD-522] add SSH enable checkbox, SSH private key passphrase, and SSH private key file

* add SSH Enable variable in configuration.h and configuration.cpp
* add SSH checkbox in SSH group setting
* add SSH private key file edit in SSH group setting
* add SSH private key pass phrase in SSH group setting
** SSH private key passphrase label requires double the row height due to the label being long.
* make SSH setting items disabled/enabled as SSH enable checkbox is unchecked/checked
* save SSH variables to configuration when Ok button is pressed.

* [AD-522] read_preference.h fix

* add guards to read_preference.h fix
* include read_preference.h in dsn_configuration_window.cpp
* add draft code for read preference in dsn_configuration_window.cpp

* [AD-522] update fields in configuration window

* modified order of fields in the configuration window.
- Retry reads checkbox is now in the first row under "Additional Settings".
- SSH Strict host key check is now in the last row under "Internal SSH Tunnel Settings"
- Allow invalid hostnames checkbox now is in 2nd row under "TLS/SSL settings"
* added warning sentences for Allow invalid hostnames checkbox and SSH strict host key check

* Improvements from code review + address some warnings

* Change connection _test to use hostname key instead of address

* Change connection_test to use databse key instead of schema key

* [AD-522] implement read Preference

* add SpaceToUnderscore function
* implement read Preference in Config window and save the value

* Attempt to fix windows 32 build

* [AD-522] refactor dsn_configuration_window.cpp

refactor code format; remove spaces and  unnecessary comments

* [AD-522] fix config window margins

now the config window is symmetric

* Fix formatting

* [AD-522] add HasText() function to window.h

* previously, the definition of HasText was mistakenly committed in commit cbaeedd0cde8b82bc29134efcad28dba943751c2.
* add header of HasText() to resolve building errors in origin
* update HasText() function to make code simpler

* [AD-522] make "rs0" the default value of replicaSet

* [AD-522] implement database, hostname, port fields. And disable ok button unless all required fields are filled

* implement database, hostname, port fields.
* disable ok button unless all required fields (database, hostname, port, username, password) are filled
* added boolean created to indicate whether the configuration window has been created. If has, then check for disabling/enabling the Ok button

* [AD-522] rename SSH Known Hosts File label for clarity

* [AD-522] refactor logs for retrieving TSL settings

Make the sentences align

* [AD-522] rename TLS CA File label for clarity

* change label length to the same label length as connection settings group

* [AD-522] move authorization setting fields to connection fields

reason: only username and password are authorization settings, the rest are not. We chose to put username, password in the connections group because all fields in the connections group are required.

* [AD-522] bugfix-comment out address field related code in RetrieveConnectionParameters

* [AD-522] rename sslSettings to tlsSettings and add comment for connection settings group

* [AD-522] remove protocol version from config window

* [AD-522] bug fix sshKnownHostsFile not saved when Ok button is pressed

* [AD-522] remove commented out #include headers

* [AD-522] disable  SSH Known Hosts File edit when SSH Strict Host Key Check check box is unchecked

* move SSH Strict Host Key Checking check box above SSH Known Hosts File edit in the config window

* [AD-522] refactor - remove commented out header code

* [AD-522] add comments in configuration.cpp for planning

* modify commented out example code in dsn_configuration_window.cpp for clarity

* [AD-522] change from SSL to TLS for consistency

* SSL_SETTINGS_GROUP_BOX is changed to TLS_SETTINGS_GROUP_BOX

* [AD-522] remove commented out code

Removed commented out code:
* RetrieveAuthParameters
* CreateAuthSettingsGroup
* CreateAdditionalSettingsGroup function and CreateSslSettingsGroup function for 1 column window
* protocol version - related code
* authSettingsGroupBox code

* [AD-522] remove std::auto_ptr<Window> authSettingsGroupBox;

* [AD-522] remove address field auto pointer initialization

* [AD-522] remove address field from config window constructor

* [AD-522] refactor - remove unneeded commented out code in HasText

* [AD-522] refactor - remove white spaces and update comment

* [AD-522] debug scan_method.h

* SpaceToUnderscore is called in scan_method.cpp to make reads better
* added guards to scan_method.h

* [AD-522] implement Schema group settings box

* fixed bug in dsn_config.cpp to save scanLimit correctly

* [AD-522] update readPreference default value to unknown

* removed unneeded commented out code
* removed unnecessary code to get string value on readPreference

* [AD-522] refactor - remove unnecessary comments

* [AD-522] adjust window size and additional settings group label size

* additional settings group label size is now the same as other settings group in the same column

* Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window"

This reverts commit 8d609dac52d3e3fc0442f2e8ec8526ec3eb2d6ab, reversing
changes made to 0aa20527606ccc11a7a99d6bd6f8d249fa8d1f61.

* [AD-522] keyboard user interface design + disable DSN empty strimg warning dialog

* make cursor go to checkboxes on the Config window and not skip them when tab key is pressed
* when DSN field is empty, Ok Button is disabled
* make default replicaSet value empty string (default is disable repliaSet)
* refactor - removed unneeded comments

* [AD-522] add end_point header to resolve build errors

end_point related code still exist in connection.cpp, so I readded the header for end_point

* Revert "Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window""

This reverts commit df0cad5490612c695ca28cc8ee44c73dbb1b68bd.

* [AD-522] resolve errors after merging develop branch

* GetAddresses() is deprecated, replaced it with GetHostname() and GetTcpPort() to get hostname and port number, respectively.
* replaced GetSchema() with GetSchemaName()
* removed commented out code
* refactor with dsn_configuration_window.cpp

* [AD-512] Resolve issue with missing include file.

* [AD-522] make BoolParseResult recognizable

* [AD-522] fix build errors after develop branch merge

* update schema checkbox string
* make edit row height single
* update SetTcpPort to SetPort etc
* define default value for sshEnable

* [AD-522] enable encrypt password for ssh private key passphrase

* modify refresh schema checkbox string to fit better
* remove log message for ssh private key passphrase to increase security

* [AD-521] add comments and notes for starting AD-521

* [AD-509] update readMe to include directions about saving Java bin and server directories.

* reason: ODBC JNI calls have a dependency on `jvm.dll`, as a result, the ODBC driver cannot operate properly unless the Java bin and server directories are included in the path.

* [AD-522] reduce space between ssh private key passphrase and the checkbox below

* [AD-521] define constants for Java GetSshLocalPort method call

* [AD-521] integrate code review feedback from Andie

* refactors with comment changes and log changes

* [AD-521] refactor code

* make open brace bracket start on new line for JVMException
* remove excess space

* [AD-427] Tracer Code - Limited Capability to load metadata - work-in-progress.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-522] remove space and add new line at the end of enum types

* [AD-522] add new lines at the end of Enum type files

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] add changes for Java.cpp from Bruce's AD-427 branch

* those changes are not included in the previous merge, and are now added

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] JNI wrapper calls to iSshTunnelActive and getSshLocalPort

* some draft comments are left to be cleaned up

* [AD-521] debug getSshLocalPort

* change function type signature from optional to int
* refactor - remove comments

* [AD-521] change return value in getSshLocalPort from boolean to a 0

* try to fix access memory issue in TestDriverManagerGetConnection

* [AD-522] resolve build errors after merge

* fix bug for schema name not correctly loaded on the config window
* removed unnecessary headers

* [AD-427] Added ResultSet.next and ResultSet.GetString()

* [AD-522] address code review comments

* change to enum class type for read_preference.h and scan_method.h
* change the way enum class objects are read
* add static cast to enum types so SetSelection function can work with it
* refactor - removed unnecessary comments
* refactor - changes code doc in connection_string_parser.h

* [AD-521] implement tests for JNI wrapper code

* test for TestDocumentDbConnectionGetSshTunnelPortSshTunnelNotActive is not yet active, need to be enabled when we can get external SSH tunnel working.
* bug fix: re-implemented DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.
connection.Get()->GetRef() is passed as first parameter because jobject is required for CallIntMethod and CallBooleanMethod.
* better JNI wrapper code is needed in the future so warnings/errors pop up when we pass jobject instead of jclass to the methods.

* [AD-521] refactor - remove comments and commented out code

* [AD-589] implement JNI method call for GetDatabaseMetadata

* define the method constant for DocumentDbConnection.getDatabaseMetadata()
* create JNI wrapper function for DocumentDbConnection.getMetaData

* [AD-589] implement unit test for DocumentDbConnection.getMetaData

* [AD-521] add calls to AutoCloseConnection in unit tests

* pass & errInfo instead of * errInfo in DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.

* [AD-521] remove unnecessary comment

* [AD-589] fix merge issues

* I missed this part of code when I was resolving the merge conflicts. Now they are corrected

* [AD-589] update getMetaData JNI wrapper code to pass &errInfo

* implement unit test for getMetaData

* [AD-589] implement JNI wrapper for DocumentDbDatabaseSchemaMetadataGetSchemaName

* implement Java class for
* define constant for DocumentDbDatabaseSchemaMetadataGetSchemaName
*  add empty test function for TestDocumentDbDataba…
Copy link
Contributor Author

@birschick-bq birschick-bq left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes consistent with change on mirror repository.

@github-actions
Copy link

MacOS Big Sur 11 Build Unit Test Results

    1 files  ±0      1 suites  ±0   25s ⏱️ ±0s
221 tests ±0  126 ✔️ ±0  95 💤 ±0  0 ±0 
126 runs  ±0    31 ✔️ ±0  95 💤 ±0  0 ±0 

Results for commit 75f62c3. ± Comparison against base commit c19e311.

@github-actions
Copy link

Windows 2022 (x32) Build Unit Test Results

    1 files  ±0      1 suites  ±0   34s ⏱️ ±0s
221 tests ±0  126 ✔️ ±0  95 💤 ±0  0 ±0 
126 runs  ±0    31 ✔️ ±0  95 💤 ±0  0 ±0 

Results for commit 75f62c3. ± Comparison against base commit c19e311.

@github-actions
Copy link

Windows 2022 (x64) Build Unit Test Results

    1 files  ±0      1 suites  ±0   40s ⏱️ +4s
221 tests ±0  126 ✔️ ±0  95 💤 ±0  0 ±0 
126 runs  ±0    31 ✔️ ±0  95 💤 ±0  0 ±0 

Results for commit 75f62c3. ± Comparison against base commit c19e311.

@github-actions
Copy link

Ubuntu 20.04 Build Unit Test Results

    1 files  ±0      1 suites  ±0   8s ⏱️ -1s
221 tests ±0  122 ✔️ ±0  99 💤 ±0  0 ±0 
122 runs  ±0  118 ✔️ ±0    4 💤 ±0  0 ±0 

Results for commit 75f62c3. ± Comparison against base commit c19e311.

Copy link
Contributor

@alinaliBQ alinaliBQ left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@birschick-bq birschick-bq merged commit a4352ca into develop Jun 22, 2022
@birschick-bq birschick-bq deleted the birschick-bq/ad-805/get-error-bug-fix branch June 22, 2022 16:53
affonsov pushed a commit that referenced this pull request Nov 16, 2022
…ation-and-dsn

AT-829/AT-864/AT-874 - Modify sample application for Linux, Fix DSN issues on Linux, Fix driver warnings and enable all warnings
affonsov added a commit that referenced this pull request Nov 16, 2022
* [AD-509] Update mac developer environment setup

* Adjust formatting

* Add note about llvm

* Add note about iodbc

* Update README.md

change the install options for OpenSSL, since vcpkg is a preferred option

* Update README.md

remove the WiX Toolset v4 requirement

* Update README.md

add steps for the fix for ignite-odbc-tests.profraw error in README.

* [AD-517] Remove old properties + add new properties

* remove SSL settings and add TLS checkbox on the Configuration Window

* add comments for my own work

added some comments for my own convenience. Will remove later

* fix tls checkbox on Configuration Window

fixed by updating ChildId in tlsCheckBox = CreateCheckBox

* add TlsAllowInvalidHostnames checkbox and TLS CA edit to the Configuration Window

* Update configuration.cpp

add comment to illustrate plan on what to do for the configuration window

* Update dsn_configuration_window.cpp

bugfix to make tlsCheckBox and tlsAllowInvalidHostnamesCheckBox read into the saved values

* change defaultFetchSize to fetchSize in configuration.h

* change Default DSN name to DocumentDB DSN

* add App Name, Fetch Size, Read Preference, and login timeout to configuration window

* [AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h

Files that had the change connection_string_parser.cpp, connection_string_parser.h, dsn_config.cpp, batch_query.cpp, data_query.cpp.

* [AD-522] save read preference settings

* [AD-522] remove commented out code

* [AD-522] Implement replicaSet and retryReads on Configuration Window

* [AD-517] Re-enable unit tests - WIP -  still need to cleanup

* [AD-522] add space to code lines for format consistency in configuration_window.h

* Add more unit tests

* Remove extra file

* [AD-522] Add small letter case to keep format consistency in dsn_configuration_window.h

 Add small letter case to keep format consistency in dsn_configuration_window.h
fixed one typo (Create authentication settings group box)

* Remove redundant declaration

* [AD-522] add variable definitions for SSH tunnel settings for config UI

* [AD-522] add function definition for SSH Tunnel

added SSH User, SSH Host. SSH Strict Host Key Checking, and SSH Known Hosts File onto the UI. However, the code to save the written values would be done in later commits.

* [AD-522] code draft for configuration.cpp

add draft variable definition to Enable ssh tunnel boolean value

* Revert "change defaultFetchSize to fetchSize in configuration.h"

This reverts commit 8a04166b05161326e68c30d98ca17cdbec0df1dc.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"

This reverts commit f89a7e9516c20924fbc6c3e6d3763f26309c5723.

* [AD-517] * Change the C++ version to use to compile.

* [AD-522] change fetchSize to defaultFetchSize on configuration window for consistency with JDBC driver

* [AD-517] * Changed checks.yml so that it doesn't fail on code review errors.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h""

This reverts commit 05eae8ade2c68607bd8a16bee8f60b5681ad74c6.

* [AD-522] make TLS allow invalid hostnames checkbox enabled only when tls Check box is checked

* Revert "Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"""

This reverts commit 301e04524c1bfcc89db76476171714c69ca1f582.

* Improvements from review

* Updated comments

* [AD-522] save SSH values for re-read, make settings window into 2 columns

Make ssl and additional settings groups to be on the right side of the column on the configuration window. This is subject to change later.
I created the function
void DsnConfigurationWindow::RetrieveSshParameters(config::Configuration& cfg) const
to save SSH values.
The width value in the DsnConfigurationWindow constructor is doubled from 360 to 720 and added the margin value. The margins currently look imbalanced on the settings box, and will be fixed in later commits.
Make Ok button and Cancel buttons aligned with the right column
bugfix - allow the SSH strict host checking checkbox to be checked on and off by adding the case ChildId::SSH_STRICT_HOST_KEY_CHECKING_CHECK_BOX definition.

* Removed includes no longer being used in configuration.h

* Some formatting improvements

* [Ad-522] add sshEnable variable in DSN config

- added sshEnable variable definition and getter/setter for sshEnable.
- added code for parsing sshEnable in the connection string parser

* [AD-522] change from GetSshEnable to IsSshEnable for consistency

* [AD-522] comment out deprecated readPreference variable

start on transitioning from readPreferenceEdit to readPreference combo box

* [AD-522] add SSH enable checkbox, SSH private key passphrase, and SSH private key file

* add SSH Enable variable in configuration.h and configuration.cpp
* add SSH checkbox in SSH group setting
* add SSH private key file edit in SSH group setting
* add SSH private key pass phrase in SSH group setting
** SSH private key passphrase label requires double the row height due to the label being long.
* make SSH setting items disabled/enabled as SSH enable checkbox is unchecked/checked
* save SSH variables to configuration when Ok button is pressed.

* [AD-522] read_preference.h fix

* add guards to read_preference.h fix
* include read_preference.h in dsn_configuration_window.cpp
* add draft code for read preference in dsn_configuration_window.cpp

* [AD-522] update fields in configuration window

* modified order of fields in the configuration window.
- Retry reads checkbox is now in the first row under "Additional Settings".
- SSH Strict host key check is now in the last row under "Internal SSH Tunnel Settings"
- Allow invalid hostnames checkbox now is in 2nd row under "TLS/SSL settings"
* added warning sentences for Allow invalid hostnames checkbox and SSH strict host key check

* Improvements from code review + address some warnings

* Change connection _test to use hostname key instead of address

* Change connection_test to use databse key instead of schema key

* [AD-522] implement read Preference

* add SpaceToUnderscore function
* implement read Preference in Config window and save the value

* Attempt to fix windows 32 build

* [AD-522] refactor dsn_configuration_window.cpp

refactor code format; remove spaces and  unnecessary comments

* [AD-522] fix config window margins

now the config window is symmetric

* Fix formatting

* [AD-522] add HasText() function to window.h

* previously, the definition of HasText was mistakenly committed in commit 74dd190fac5ef642d0d83015766fe33dfefb3489.
* add header of HasText() to resolve building errors in origin
* update HasText() function to make code simpler

* [AD-522] make "rs0" the default value of replicaSet

* [AD-522] implement database, hostname, port fields. And disable ok button unless all required fields are filled

* implement database, hostname, port fields.
* disable ok button unless all required fields (database, hostname, port, username, password) are filled
* added boolean created to indicate whether the configuration window has been created. If has, then check for disabling/enabling the Ok button

* [AD-522] rename SSH Known Hosts File label for clarity

* [AD-522] refactor logs for retrieving TSL settings

Make the sentences align

* [AD-522] rename TLS CA File label for clarity

* change label length to the same label length as connection settings group

* [AD-522] move authorization setting fields to connection fields

reason: only username and password are authorization settings, the rest are not. We chose to put username, password in the connections group because all fields in the connections group are required.

* [AD-522] bugfix-comment out address field related code in RetrieveConnectionParameters

* [AD-522] rename sslSettings to tlsSettings and add comment for connection settings group

* [AD-522] remove protocol version from config window

* [AD-522] bug fix sshKnownHostsFile not saved when Ok button is pressed

* [AD-522] remove commented out #include headers

* [AD-522] disable  SSH Known Hosts File edit when SSH Strict Host Key Check check box is unchecked

* move SSH Strict Host Key Checking check box above SSH Known Hosts File edit in the config window

* [AD-522] refactor - remove commented out header code

* [AD-522] add comments in configuration.cpp for planning

* modify commented out example code in dsn_configuration_window.cpp for clarity

* [AD-522] change from SSL to TLS for consistency

* SSL_SETTINGS_GROUP_BOX is changed to TLS_SETTINGS_GROUP_BOX

* [AD-522] remove commented out code

Removed commented out code:
* RetrieveAuthParameters
* CreateAuthSettingsGroup
* CreateAdditionalSettingsGroup function and CreateSslSettingsGroup function for 1 column window
* protocol version - related code
* authSettingsGroupBox code

* [AD-522] remove std::auto_ptr<Window> authSettingsGroupBox;

* [AD-522] remove address field auto pointer initialization

* [AD-522] remove address field from config window constructor

* [AD-522] refactor - remove unneeded commented out code in HasText

* [AD-522] refactor - remove white spaces and update comment

* [AD-522] debug scan_method.h

* SpaceToUnderscore is called in scan_method.cpp to make reads better
* added guards to scan_method.h

* [AD-522] implement Schema group settings box

* fixed bug in dsn_config.cpp to save scanLimit correctly

* [AD-522] update readPreference default value to unknown

* removed unneeded commented out code
* removed unnecessary code to get string value on readPreference

* [AD-522] refactor - remove unnecessary comments

* [AD-522] adjust window size and additional settings group label size

* additional settings group label size is now the same as other settings group in the same column

* Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window"

This reverts commit 696db387de8f509d846ad6351d5cdfcc9937a514, reversing
changes made to 8d81a183bea353fef47a62e542bf3fd6f53c13ab.

* [AD-522] keyboard user interface design + disable DSN empty strimg warning dialog

* make cursor go to checkboxes on the Config window and not skip them when tab key is pressed
* when DSN field is empty, Ok Button is disabled
* make default replicaSet value empty string (default is disable repliaSet)
* refactor - removed unneeded comments

* [AD-522] add end_point header to resolve build errors

end_point related code still exist in connection.cpp, so I readded the header for end_point

* Revert "Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window""

This reverts commit 788cad79f72a7f99ff66c5032bb1532eb71b0da5.

* [AD-522] resolve errors after merging develop branch

* GetAddresses() is deprecated, replaced it with GetHostname() and GetTcpPort() to get hostname and port number, respectively.
* replaced GetSchema() with GetSchemaName()
* removed commented out code
* refactor with dsn_configuration_window.cpp

* [AD-512] Resolve issue with missing include file.

* [AD-522] make BoolParseResult recognizable

* [AD-522] fix build errors after develop branch merge

* update schema checkbox string
* make edit row height single
* update SetTcpPort to SetPort etc
* define default value for sshEnable

* [AD-522] enable encrypt password for ssh private key passphrase

* modify refresh schema checkbox string to fit better
* remove log message for ssh private key passphrase to increase security

* [AD-521] add comments and notes for starting AD-521

* [AD-509] update readMe to include directions about saving Java bin and server directories.

* reason: ODBC JNI calls have a dependency on `jvm.dll`, as a result, the ODBC driver cannot operate properly unless the Java bin and server directories are included in the path.

* [AD-522] reduce space between ssh private key passphrase and the checkbox below

* [AD-521] define constants for Java GetSshLocalPort method call

* [AD-521] integrate code review feedback from Andie

* refactors with comment changes and log changes

* [AD-521] refactor code

* make open brace bracket start on new line for JVMException
* remove excess space

* [AD-427] Tracer Code - Limited Capability to load metadata - work-in-progress.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-522] remove space and add new line at the end of enum types

* [AD-522] add new lines at the end of Enum type files

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] add changes for Java.cpp from Bruce's AD-427 branch

* those changes are not included in the previous merge, and are now added

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] JNI wrapper calls to iSshTunnelActive and getSshLocalPort

* some draft comments are left to be cleaned up

* [AD-521] debug getSshLocalPort

* change function type signature from optional to int
* refactor - remove comments

* [AD-521] change return value in getSshLocalPort from boolean to a 0

* try to fix access memory issue in TestDriverManagerGetConnection

* [AD-522] resolve build errors after merge

* fix bug for schema name not correctly loaded on the config window
* removed unnecessary headers

* [AD-427] Added ResultSet.next and ResultSet.GetString()

* [AD-522] address code review comments

* change to enum class type for read_preference.h and scan_method.h
* change the way enum class objects are read
* add static cast to enum types so SetSelection function can work with it
* refactor - removed unnecessary comments
* refactor - changes code doc in connection_string_parser.h

* [AD-521] implement tests for JNI wrapper code

* test for TestDocumentDbConnectionGetSshTunnelPortSshTunnelNotActive is not yet active, need to be enabled when we can get external SSH tunnel working.
* bug fix: re-implemented DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.
connection.Get()->GetRef() is passed as first parameter because jobject is required for CallIntMethod and CallBooleanMethod.
* better JNI wrapper code is needed in the future so warnings/errors pop up when we pass jobject instead of jclass to the methods.

* [AD-521] refactor - remove comments and commented out code

* [AD-589] implement JNI method call for GetDatabaseMetadata

* define the method constant for DocumentDbConnection.getDatabaseMetadata()
* create JNI wrapper function for DocumentDbConnection.getMetaData

* [AD-589] implement unit test for DocumentDbConnection.getMetaData

* [AD-521] add calls to AutoCloseConnection in unit tests

* pass & errInfo instead of * errInfo in DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.

* [AD-521] remove unnecessary comment

* [AD-589] fix merge issues

* I missed this part of code when I was resolving the merge conflicts. Now they are corrected

* [AD-589] update getMetaData JNI wrapper code to pass &errInfo

* implement unit test for getMetaData

* [AD-589] implement JNI wrapper for DocumentDbDatabaseSchemaMetadataGetSchemaName

* implement Java class for
* define constant for DocumentDbDatabaseSchemaMetadataGetSchemaName
*  add empty test function for TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* [AD-589] implement unit test for DbDatabaseSchemaMetadataGetSchemaName

* [AD-521] refactor - change case of ssh to SSH for consistency

* [AD-589] address code review comments

* rename DocumentDbConnectionGetMetaData to DocumentDbConnectionGetDatabaseMetaData

* [AD-589] change case from MetaData to Metadata to match Java method name

* [AD-589] refactor: change from metaData to metadata

changes occurred in:
* DocumentDbConnectionGetDatabaseMetadata
* DocumentDbDatabaseSchemaMetadataGetSchemaName
* TestDocumentDbConnectionGetDatabaseMetadata
* TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* Birschick bq/sync up (#21)

* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

Co-authored-by: affonsoBQ <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>

* [AD-735] large dataset crash issue (#23)

* first test

* fix performance test crash

* fix performance test crash

* fix whitespace issue

* rework based on comments

* SQLPrimaryKey using JNI

* odbc test failure fix

* Revert "odbc test failure fix"

This reverts commit c75194688a0969edae20f59cbe6c55cf5eb4a4da.

* Revert "SQLPrimaryKey using JNI"

This reverts commit 02380e9e434a55a9b034da138f7d0d32d1654708.

* [AD-550] Adapt Foreign Keys (#24)

* [AD-550] JNI implementation for getImportedKeys

* [AD-550] update Pull Request Template

* added reviewees Roy Zhang and Micthell Elholm

* [AD-550] add todo note to unit test

* [AD-550] define GetImportedKeys in database_metadata.h/.cpp

* add ODBC wrapper code to the JNI call for GetImportedKeys

* [AD-550] initialize string vars to be empty string in column_metadata_query

* [AD-550] modify ForeignKeysQuery to accept 3 arguments only

* modified ForeignKeysQuery to only accept catalog, schema, and table, as other fields are not needed.

* [AD-550] update column metadata for foreign keys

* [AD-550] fix typo in primary_key_meta.h

* [AD-550] define vars for foreign key meta

* [AD-550] add getter functions for vars in foreign_key_meta.h

* [AD-550] support vars in foreign key meta to be optional

* [AD-550] add headers for boost optional

* [AD-550] add headers and constructors for foreign key meta

* added ForeignKeyMeta constructor, and copy constructor
*added ForeignKeyMeta destructor
* define ForeignKeyMetaVector
* basically, complete foreign_key_meta.h

* [AD-550] implement resultset.getSmallInt

* implement resultset.getSmallInt taking column indices or column names as parameters
* make ColumnMeta::dataType be updated with  resultSet.Get()->GetSmallInt to simplify code and readbility

* [AD-550] Add foreign_key_meta.cpp

* implemented functions:
ReadForeignKeysColumnMetaVector
ForeignKeyMeta::Read

* [AD-550] update CMakeLists to include foreign_key_meta.cpp

* [AD-550] implement MakeRequestGetForeignKeysMeta

* MakeRequestGetForeignKeysMeta calls GetImportedKeys to get Jni ResultSet object for foreign keys, and then reads the resultSet object to fill in the meta object.

* [AD-550] update ForeignKeysQuery::DataAvailable and ForeignKeysQuery::Close

* update meta object accordingly whenForeignKeysQuery::Close() is called.
* return boolean for whether data is available based on meta object

* [AD-550] implement ForeignKeysQuery::Execute and FetchNextRow

* the code for ForeignKeysQuery::Execute and ForeignKeysQuery::FetchNextRow is based on ColumnMetadataQuery::Execute and ColumnMetadataQuery::FetchNextRow

* [AD-550] fix Mac and Linux build

* remove extra qualification on GetSmallInt function

* [AD-550] implement ForeignKeysQuery::GetColumn

* had formatting changes as well

* [AD-550] JNI implementation for getImportedKeys

* [AD-550] update Pull Request Template

* added reviewees Roy Zhang and Micthell Elholm

* [AD-550] add todo note to unit test

* [AD-550] define GetImportedKeys in database_metadata.h/.cpp

* add ODBC wrapper code to the JNI call for GetImportedKeys

* [AD-550] initialize string vars to be empty string in column_metadata_query

* [AD-550] modify ForeignKeysQuery to accept 3 arguments only

* modified ForeignKeysQuery to only accept catalog, schema, and table, as other fields are not needed.

* [AD-550] update column metadata for foreign keys

* [AD-550] fix typo in primary_key_meta.h

* [AD-550] define vars for foreign key meta

* [AD-550] add getter functions for vars in foreign_key_meta.h

* [AD-550] support vars in foreign key meta to be optional

* [AD-550] add headers for boost optional

* [AD-550] add headers and constructors for foreign key meta

* added ForeignKeyMeta constructor, and copy constructor
*added ForeignKeyMeta destructor
* define ForeignKeyMetaVector
* basically, complete foreign_key_meta.h

* [AD-550] implement resultset.getSmallInt

* implement resultset.getSmallInt taking column indices or column names as parameters
* make ColumnMeta::dataType be updated with  resultSet.Get()->GetSmallInt to simplify code and readbility

* [AD-550] Add foreign_key_meta.cpp

* implemented functions:
ReadForeignKeysColumnMetaVector
ForeignKeyMeta::Read

* [AD-550] update CMakeLists to include foreign_key_meta.cpp

* [AD-550] implement MakeRequestGetForeignKeysMeta

* MakeRequestGetForeignKeysMeta calls GetImportedKeys to get Jni ResultSet object for foreign keys, and then reads the resultSet object to fill in the meta object.

* [AD-550] update ForeignKeysQuery::DataAvailable and ForeignKeysQuery::Close

* update meta object accordingly whenForeignKeysQuery::Close() is called.
* return boolean for whether data is available based on meta object

* [AD-550] implement ForeignKeysQuery::Execute and FetchNextRow

* the code for ForeignKeysQuery::Execute and ForeignKeysQuery::FetchNextRow is based on ColumnMetadataQuery::Execute and ColumnMetadataQuery::FetchNextRow

* [AD-550] fix Mac and Linux build

* remove extra qualification on GetSmallInt function

* [AD-550] implement ForeignKeysQuery::GetColumn

* had formatting changes as well

* [AD-550] update docs for foreign_keys_query.h

* [AD-550] refine SQLForeignKey call

* [AD-550] add draft foreign key test for JNI test

* [AD-550] add test tables for jni test

* [AD-550] update test TestDocumentDbDatabaseMetaDataGetImportedKeys

* update test to query virtual table jni_test_001_sub_doc

* [AD-550] add SQLForeignKeys sql api test

* [AD-550] add logs for ReadForeignKeysColumnMetaVector

* PK* variables will contain the list of foreign keys in the specified table

* [AD-550] reformat jni_test

* [AD-550] implement TestDatabaseMetaDataGetImportedKeys for java_test

* [AD-550] add test document meta_queries_test_002_with_array

* this document will be used to test SQLForeignKeys in meta_queries_test

* [AD-550] refactor TestSQLForeignKeys test

* reason: I see that `SQLCHAR empty[] = "";` is used in meta_queries_test, and I think that might be a better way of writing the parameters

* [AD-550] add test for SQLForeignKeys in meta_queries_test

tests added:
* TestGetDataWithForeignKeysReturnsOneFromLocalServer
* TestGetDataWithForeignKeysReturnsNone
* they use test table meta_queries_test_002_with_array

* [AD-550] clean up

* add doc for SQLForeignKeys
* remove comments

* [AD-550] remove commented out code

* [AD-550] remove unneeded commented out code

* [AD-550] make ODBC pass nullptr for JString catalog and schema for SQLForeignKeys

*  in getImportedKeys, null boost::optional strings will be passed as nullptr to JDBC
* make jni test and java test pass null boost::optional strings to JNI calls for getImportedKeys
* ODBC now passes boost::optional strings foreignCatalog and foreignSchema to ExecuteGetForeignKeysQuery function.

* [AD-550] add if check for sqlStrLen

* if sqlString is empty, return boost::none

* [AD-550] debug `choco install cppcheck -y` not working on GitHub Actions

* [AD-550] add tests for testing empty string parameters

* added Java test TestDatabaseMetaDataGetImportedKeysReturnsNone
* added Jni test TestDocumentDbDatabaseMetaDataGetImportedKeysReturnsNone

* [AD-550] disable cppcheck

* created [AD-752](https://bitquill.atlassian.net/browse/AD-752) to investigate it further.

* [AD-550] change the place for code doc for function SQLForeignKeys

* [AD-550] update if statement check of SqlStringToOptString

* to resolve code review comment

* [AD-550] resolve code review comment

* The sqlStrLen is an int32_t, so "!sqlStrLen" can be removed

* [AD-550] make boost optional strings constant where needed

* previously, I changed `const std::string` to `boost::optional< std::string >` in some areas, and this is now fixed by replacing the latter with `boost::optional< const std::string >`

* [AD-550] SqlStringToOptString fix

* also fixed SqlStringToConstOptString
* reason: SQL_NTS is a flag that indicates that the string passed is a null-terminated string.

* [AD-550] make tests pass null to SQLForeignKeys

* [AD-550] add test case for TestGetDataWithForeignKeysReturnsNone

*  even with the correct table name, as long as empty strings are passed as catalog/schema, SQL_NO_DATA should be returned

* [AD-550] update SqlStringToOptString

* [AD-550] update TestSQLForeignKeys to pass NULL as parameters properly

* [AD-550] move `const` out of `boost::optional< const std::string >`

* reason: `const boost::optional< std::string >` works better than `boost::optional< const std::string >`.
* this commit is to resolve code review comments

* [AD-550] add meta_queries test that passes catalog as empty string

* [AD-550] Set `fetched` to false in ForeignKeysQuery::Close()

* [AD-550] add explicit conversion to boost::optional variable initialization

* [AD-550] resolve code review comment

* remove duplicate code

* [AD-550] remove function

* removed unneeded function: SqlStringToConstOptString

* [AD-649] Add missing documentation (#29)

### Summary

[AD-649] Add missing documentation

### Description
Update ODBC driver documentation

- [x] Documentation about connections string ( Parameters description)
- [x] Documentation about DSN configuration window ( with screenshots)
- [x] Documentation how the ODBC driver works ( ODBC and JDBC integration)
- [x] Documentation what is supported ( link with JDBC driver)

### Related Issue

https://bitquill.atlassian.net/browse/AD-649

* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

* [AD-735] large dataset crash issue (#74)

### Summary

ODBC driver will not run on large document tests

### Description
The performance test crashes for large document tests. 

1. The root cause is the wrong memory is passed to SQLBindCol(). The parameter TargetValuePtr is passed &cols[i][0].data_dat[i]. The i could exceed 255 for large table while its max valid value should be 254. The correct value should be 0.
2. The SQLExtendedFetch is deprecated. Replace it with SQLFetch.

### Related Issue

https://bitquill.atlassian.net/browse/AD-735

* [AD-509] Update mac developer environment setup

* Adjust formatting

* Add note about llvm

* Add note about iodbc

* Update README.md

change the install options for OpenSSL, since vcpkg is a preferred option

* Update README.md

remove the WiX Toolset v4 requirement

* Update README.md

add steps for the fix for ignite-odbc-tests.profraw error in README.

* [AD-517] Remove old properties + add new properties

* remove SSL settings and add TLS checkbox on the Configuration Window

* add comments for my own work

added some comments for my own convenience. Will remove later

* fix tls checkbox on Configuration Window

fixed by updating ChildId in tlsCheckBox = CreateCheckBox

* add TlsAllowInvalidHostnames checkbox and TLS CA edit to the Configuration Window

* Update configuration.cpp

add comment to illustrate plan on what to do for the configuration window

* Update dsn_configuration_window.cpp

bugfix to make tlsCheckBox and tlsAllowInvalidHostnamesCheckBox read into the saved values

* change defaultFetchSize to fetchSize in configuration.h

* change Default DSN name to DocumentDB DSN

* add App Name, Fetch Size, Read Preference, and login timeout to configuration window

* [AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h

Files that had the change connection_string_parser.cpp, connection_string_parser.h, dsn_config.cpp, batch_query.cpp, data_query.cpp.

* [AD-522] save read preference settings

* [AD-522] remove commented out code

* [AD-522] Implement replicaSet and retryReads on Configuration Window

* [AD-517] Re-enable unit tests - WIP -  still need to cleanup

* [AD-522] add space to code lines for format consistency in configuration_window.h

* Add more unit tests

* Remove extra file

* [AD-522] Add small letter case to keep format consistency in dsn_configuration_window.h

 Add small letter case to keep format consistency in dsn_configuration_window.h
fixed one typo (Create authentication settings group box)

* Remove redundant declaration

* [AD-522] add variable definitions for SSH tunnel settings for config UI

* [AD-522] add function definition for SSH Tunnel

added SSH User, SSH Host. SSH Strict Host Key Checking, and SSH Known Hosts File onto the UI. However, the code to save the written values would be done in later commits.

* [AD-522] code draft for configuration.cpp

add draft variable definition to Enable ssh tunnel boolean value

* Revert "change defaultFetchSize to fetchSize in configuration.h"

This reverts commit 8a04166b05161326e68c30d98ca17cdbec0df1dc.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"

This reverts commit f89a7e9516c20924fbc6c3e6d3763f26309c5723.

* [AD-517] * Change the C++ version to use to compile.

* [AD-522] change fetchSize to defaultFetchSize on configuration window for consistency with JDBC driver

* [AD-517] * Changed checks.yml so that it doesn't fail on code review errors.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h""

This reverts commit 05eae8ade2c68607bd8a16bee8f60b5681ad74c6.

* [AD-522] make TLS allow invalid hostnames checkbox enabled only when tls Check box is checked

* Revert "Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"""

This reverts commit 301e04524c1bfcc89db76476171714c69ca1f582.

* Improvements from review

* Updated comments

* [AD-522] save SSH values for re-read, make settings window into 2 columns

Make ssl and additional settings groups to be on the right side of the column on the configuration window. This is subject to change later.
I created the function
void DsnConfigurationWindow::RetrieveSshParameters(config::Configuration& cfg) const
to save SSH values.
The width value in the DsnConfigurationWindow constructor is doubled from 360 to 720 and added the margin value. The margins currently look imbalanced on the settings box, and will be fixed in later commits.
Make Ok button and Cancel buttons aligned with the right column
bugfix - allow the SSH strict host checking checkbox to be checked on and off by adding the case ChildId::SSH_STRICT_HOST_KEY_CHECKING_CHECK_BOX definition.

* Removed includes no longer being used in configuration.h

* Some formatting improvements

* [Ad-522] add sshEnable variable in DSN config

- added sshEnable variable definition and getter/setter for sshEnable.
- added code for parsing sshEnable in the connection string parser

* [AD-522] change from GetSshEnable to IsSshEnable for consistency

* [AD-522] comment out deprecated readPreference variable

start on transitioning from readPreferenceEdit to readPreference combo box

* [AD-522] add SSH enable checkbox, SSH private key passphrase, and SSH private key file

* add SSH Enable variable in configuration.h and configuration.cpp
* add SSH checkbox in SSH group setting
* add SSH private key file edit in SSH group setting
* add SSH private key pass phrase in SSH group setting
** SSH private key passphrase label requires double the row height due to the label being long.
* make SSH setting items disabled/enabled as SSH enable checkbox is unchecked/checked
* save SSH variables to configuration when Ok button is pressed.

* [AD-522] read_preference.h fix

* add guards to read_preference.h fix
* include read_preference.h in dsn_configuration_window.cpp
* add draft code for read preference in dsn_configuration_window.cpp

* [AD-522] update fields in configuration window

* modified order of fields in the configuration window.
- Retry reads checkbox is now in the first row under "Additional Settings".
- SSH Strict host key check is now in the last row under "Internal SSH Tunnel Settings"
- Allow invalid hostnames checkbox now is in 2nd row under "TLS/SSL settings"
* added warning sentences for Allow invalid hostnames checkbox and SSH strict host key check

* Improvements from code review + address some warnings

* Change connection _test to use hostname key instead of address

* Change connection_test to use databse key instead of schema key

* [AD-522] implement read Preference

* add SpaceToUnderscore function
* implement read Preference in Config window and save the value

* Attempt to fix windows 32 build

* [AD-522] refactor dsn_configuration_window.cpp

refactor code format; remove spaces and  unnecessary comments

* [AD-522] fix config window margins

now the config window is symmetric

* Fix formatting

* [AD-522] add HasText() function to window.h

* previously, the definition of HasText was mistakenly committed in commit 74dd190fac5ef642d0d83015766fe33dfefb3489.
* add header of HasText() to resolve building errors in origin
* update HasText() function to make code simpler

* [AD-522] make "rs0" the default value of replicaSet

* [AD-522] implement database, hostname, port fields. And disable ok button unless all required fields are filled

* implement database, hostname, port fields.
* disable ok button unless all required fields (database, hostname, port, username, password) are filled
* added boolean created to indicate whether the configuration window has been created. If has, then check for disabling/enabling the Ok button

* [AD-522] rename SSH Known Hosts File label for clarity

* [AD-522] refactor logs for retrieving TSL settings

Make the sentences align

* [AD-522] rename TLS CA File label for clarity

* change label length to the same label length as connection settings group

* [AD-522] move authorization setting fields to connection fields

reason: only username and password are authorization settings, the rest are not. We chose to put username, password in the connections group because all fields in the connections group are required.

* [AD-522] bugfix-comment out address field related code in RetrieveConnectionParameters

* [AD-522] rename sslSettings to tlsSettings and add comment for connection settings group

* [AD-522] remove protocol version from config window

* [AD-522] bug fix sshKnownHostsFile not saved when Ok button is pressed

* [AD-522] remove commented out #include headers

* [AD-522] disable  SSH Known Hosts File edit when SSH Strict Host Key Check check box is unchecked

* move SSH Strict Host Key Checking check box above SSH Known Hosts File edit in the config window

* [AD-522] refactor - remove commented out header code

* [AD-522] add comments in configuration.cpp for planning

* modify commented out example code in dsn_configuration_window.cpp for clarity

* [AD-522] change from SSL to TLS for consistency

* SSL_SETTINGS_GROUP_BOX is changed to TLS_SETTINGS_GROUP_BOX

* [AD-522] remove commented out code

Removed commented out code:
* RetrieveAuthParameters
* CreateAuthSettingsGroup
* CreateAdditionalSettingsGroup function and CreateSslSettingsGroup function for 1 column window
* protocol version - related code
* authSettingsGroupBox code

* [AD-522] remove std::auto_ptr<Window> authSettingsGroupBox;

* [AD-522] remove address field auto pointer initialization

* [AD-522] remove address field from config window constructor

* [AD-522] refactor - remove unneeded commented out code in HasText

* [AD-522] refactor - remove white spaces and update comment

* [AD-522] debug scan_method.h

* SpaceToUnderscore is called in scan_method.cpp to make reads better
* added guards to scan_method.h

* [AD-522] implement Schema group settings box

* fixed bug in dsn_config.cpp to save scanLimit correctly

* [AD-522] update readPreference default value to unknown

* removed unneeded commented out code
* removed unnecessary code to get string value on readPreference

* [AD-522] refactor - remove unnecessary comments

* [AD-522] adjust window size and additional settings group label size

* additional settings group label size is now the same as other settings group in the same column

* Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window"

This reverts commit 696db387de8f509d846ad6351d5cdfcc9937a514, reversing
changes made to 8d81a183bea353fef47a62e542bf3fd6f53c13ab.

* [AD-522] keyboard user interface design + disable DSN empty strimg warning dialog

* make cursor go to checkboxes on the Config window and not skip them when tab key is pressed
* when DSN field is empty, Ok Button is disabled
* make default replicaSet value empty string (default is disable repliaSet)
* refactor - removed unneeded comments

* [AD-522] add end_point header to resolve build errors

end_point related code still exist in connection.cpp, so I readded the header for end_point

* Revert "Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window""

This reverts commit 788cad79f72a7f99ff66c5032bb1532eb71b0da5.

* [AD-522] resolve errors after merging develop branch

* GetAddresses() is deprecated, replaced it with GetHostname() and GetTcpPort() to get hostname and port number, respectively.
* replaced GetSchema() with GetSchemaName()
* removed commented out code
* refactor with dsn_configuration_window.cpp

* [AD-512] Resolve issue with missing include file.

* [AD-522] make BoolParseResult recognizable

* [AD-522] fix build errors after develop branch merge

* update schema checkbox string
* make edit row height single
* update SetTcpPort to SetPort etc
* define default value for sshEnable

* [AD-522] enable encrypt password for ssh private key passphrase

* modify refresh schema checkbox string to fit better
* remove log message for ssh private key passphrase to increase security

* [AD-521] add comments and notes for starting AD-521

* [AD-509] update readMe to include directions about saving Java bin and server directories.

* reason: ODBC JNI calls have a dependency on `jvm.dll`, as a result, the ODBC driver cannot operate properly unless the Java bin and server directories are included in the path.

* [AD-522] reduce space between ssh private key passphrase and the checkbox below

* [AD-521] define constants for Java GetSshLocalPort method call

* [AD-521] integrate code review feedback from Andie

* refactors with comment changes and log changes

* [AD-521] refactor code

* make open brace bracket start on new line for JVMException
* remove excess space

* [AD-427] Tracer Code - Limited Capability to load metadata - work-in-progress.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-522] remove space and add new line at the end of enum types

* [AD-522] add new lines at the end of Enum type files

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] add changes for Java.cpp from Bruce's AD-427 branch

* those changes are not included in the previous merge, and are now added

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] JNI wrapper calls to iSshTunnelActive and getSshLocalPort

* some draft comments are left to be cleaned up

* [AD-521] debug getSshLocalPort

* change function type signature from optional to int
* refactor - remove comments

* [AD-521] change return value in getSshLocalPort from boolean to a 0

* try to fix access memory issue in TestDriverManagerGetConnection

* [AD-522] resolve build errors after merge

* fix bug for schema name not correctly loaded on the config window
* removed unnecessary headers

* [AD-427] Added ResultSet.next and ResultSet.GetString()

* [AD-522] address code review comments

* change to enum class type for read_preference.h and scan_method.h
* change the way enum class objects are read
* add static cast to enum types so SetSelection function can work with it
* refactor - removed unnecessary comments
* refactor - changes code doc in connection_string_parser.h

* [AD-521] implement tests for JNI wrapper code

* test for TestDocumentDbConnectionGetSshTunnelPortSshTunnelNotActive is not yet active, need to be enabled when we can get external SSH tunnel working.
* bug fix: re-implemented DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.
connection.Get()->GetRef() is passed as first parameter because jobject is required for CallIntMethod and CallBooleanMethod.
* better JNI wrapper code is needed in the future so warnings/errors pop up when we pass jobject instead of jclass to the methods.

* [AD-521] refactor - remove comments and commented out code

* [AD-589] implement JNI method call for GetDatabaseMetadata

* define the method constant for DocumentDbConnection.getDatabaseMetadata()
* create JNI wrapper function for DocumentDbConnection.getMetaData

* [AD-589] implement unit test for DocumentDbConnection.getMetaData

* [AD-521] add calls to AutoCloseConnection in unit tests

* pass & errInfo instead of * errInfo in DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.

* [AD-521] remove unnecessary comment

* [AD-589] fix merge issues

* I missed this part of code when I was resolving the merge conflicts. Now they are corrected

* [AD-589] update getMetaData JNI wrapper code to pass &errInfo

* implement unit test for getMetaData

* [AD-589] implement JNI wrapper for DocumentDbDatabaseSchemaMetadataGetSchemaName

* implement Java class for
* define constant for DocumentDbDatabaseSchemaMetadataGetSchemaName
*  add empty test function for TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* [AD-589] implement unit test for DbDatabaseSchemaMetadataGetSchemaName

* [AD-521] refactor - change case of ssh to SSH for consistency

* [AD-589] address code review comments

* rename DocumentDbConnectionGetMetaData to DocumentDbConnectionGetDatabaseMetaData

* [AD-589] change case from MetaData to Metadata to match Java method name

* [AD-589] refactor: change from metaData to metadata

changes occurred in:
* DocumentDbConnectionGetDatabaseMetadata
* DocumentDbDatabaseSchemaMetadataGetSchemaName
* TestDocumentDbConnectionGetDatabaseMetadata
* TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* Birschick bq/sync up (#21)

* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

Co-authored-by: affonsoBQ <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>

* [AD-735] large dataset crash issue (#23)

* first test

* fix performance test crash

* fix performance test crash

* fix whitespace issue

* rework based on comments

Co-authored-by: Andie Montoya <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>
Co-authored-by: affonsoBQ <[email protected]>
Co-authored-by: RoyZhang2022 <[email protected]>

* [AD-649] Add missing documentation (#73)

* Initial user/developer documentation
Co-authored-by: andiem-bq <[email protected]>
Co-authored-by: Bruce Irschick <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>

Co-authored-by: affonsoBQ <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>
Co-authored-by: Andie Montoya <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>
Co-authored-by: RoyZhang2022 <[email protected]>

* Fix README.md (#30)

* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

* [AD-735] large dataset crash issue (#74)

### Summary

ODBC driver will not run on large document tests

### Description
The performance test crashes for large document tests. 

1. The root cause is the wrong memory is passed to SQLBindCol(). The parameter TargetValuePtr is passed &cols[i][0].data_dat[i]. The i could exceed 255 for large table while its max valid value should be 254. The correct value should be 0.
2. The SQLExtendedFetch is deprecated. Replace it with SQLFetch.

### Related Issue

https://bitquill.atlassian.net/browse/AD-735

* [AD-509] Update mac developer environment setup

* Adjust formatting

* Add note about llvm

* Add note about iodbc

* Update README.md

change the install options for OpenSSL, since vcpkg is a preferred option

* Update README.md

remove the WiX Toolset v4 requirement

* Update README.md

add steps for the fix for ignite-odbc-tests.profraw error in README.

* [AD-517] Remove old properties + add new properties

* remove SSL settings and add TLS checkbox on the Configuration Window

* add comments for my own work

added some comments for my own convenience. Will remove later

* fix tls checkbox on Configuration Window

fixed by updating ChildId in tlsCheckBox = CreateCheckBox

* add TlsAllowInvalidHostnames checkbox and TLS CA edit to the Configuration Window

* Update configuration.cpp

add comment to illustrate plan on what to do for the configuration window

* Update dsn_configuration_window.cpp

bugfix to make tlsCheckBox and tlsAllowInvalidHostnamesCheckBox read into the saved values

* change defaultFetchSize to fetchSize in configuration.h

* change Default DSN name to DocumentDB DSN

* add App Name, Fetch Size, Read Preference, and login timeout to configuration window

* [AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h

Files that had the change connection_string_parser.cpp, connection_string_parser.h, dsn_config.cpp, batch_query.cpp, data_query.cpp.

* [AD-522] save read preference settings

* [AD-522] remove commented out code

* [AD-522] Implement replicaSet and retryReads on Configuration Window

* [AD-517] Re-enable unit tests - WIP -  still need to cleanup

* [AD-522] add space to code lines for format consistency in configuration_window.h

* Add more unit tests

* Remove extra file

* [AD-522] Add small letter case to keep format consistency in dsn_configuration_window.h

 Add small letter case to keep format consistency in dsn_configuration_window.h
fixed one typo (Create authentication settings group box)

* Remove redundant declaration

* [AD-522] add variable definitions for SSH tunnel settings for config UI

* [AD-522] add function definition for SSH Tunnel

added SSH User, SSH Host. SSH Strict Host Key Checking, and SSH Known Hosts File onto the UI. However, the code to save the written values would be done in later commits.

* [AD-522] code draft for configuration.cpp

add draft variable definition to Enable ssh tunnel boolean value

* Revert "change defaultFetchSize to fetchSize in configuration.h"

This reverts commit 8a04166b05161326e68c30d98ca17cdbec0df1dc.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"

This reverts commit f89a7e9516c20924fbc6c3e6d3763f26309c5723.

* [AD-517] * Change the C++ version to use to compile.

* [AD-522] change fetchSize to defaultFetchSize on configuration window for consistency with JDBC driver

* [AD-517] * Changed checks.yml so that it doesn't fail on code review errors.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h""

This reverts commit 05eae8ade2c68607bd8a16bee8f60b5681ad74c6.

* [AD-522] make TLS allow invalid hostnames checkbox enabled only when tls Check box is checked

* Revert "Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"""

This reverts commit 301e04524c1bfcc89db76476171714c69ca1f582.

* Improvements from review

* Updated comments

* [AD-522] save SSH values for re-read, make settings window into 2 columns

Make ssl and additional settings groups to be on the right side of the column on the configuration window. This is subject to change later.
I created the function
void DsnConfigurationWindow::RetrieveSshParameters(config::Configuration& cfg) const
to save SSH values.
The width value in the DsnConfigurationWindow constructor is doubled from 360 to 720 and added the margin value. The margins currently look imbalanced on the settings box, and will be fixed in later commits.
Make Ok button and Cancel buttons aligned with the right column
bugfix - allow the SSH strict host checking checkbox to be checked on and off by adding the case ChildId::SSH_STRICT_HOST_KEY_CHECKING_CHECK_BOX definition.

* Removed includes no longer being used in configuration.h

* Some formatting improvements

* [Ad-522] add sshEnable variable in DSN config

- added sshEnable variable definition and getter/setter for sshEnable.
- added code for parsing sshEnable in the connection string parser

* [AD-522] change from GetSshEnable to IsSshEnable for consistency

* [AD-522] comment out deprecated readPreference variable

start on transitioning from readPreferenceEdit to readPreference combo box

* [AD-522] add SSH enable checkbox, SSH private key passphrase, and SSH private key file

* add SSH Enable variable in configuration.h and configuration.cpp
* add SSH checkbox in SSH group setting
* add SSH private key file edit in SSH group setting
* add SSH private key pass phrase in SSH group setting
** SSH private key passphrase label requires double the row height due to the label being long.
* make SSH setting items disabled/enabled as SSH enable checkbox is unchecked/checked
* save SSH variables to configuration when Ok button is pressed.

* [AD-522] read_preference.h fix

* add guards to read_preference.h fix
* include read_preference.h in dsn_configuration_window.cpp
* add draft code for read preference in dsn_configuration_window.cpp

* [AD-522] update fields in configuration window

* modified order of fields in the configuration window.
- Retry reads checkbox is now in the first row under "Additional Settings".
- SSH Strict host key check is now in the last row under "Internal SSH Tunnel Settings"
- Allow invalid hostnames checkbox now is in 2nd row under "TLS/SSL settings"
* added warning sentences for Allow invalid hostnames checkbox and SSH strict host key check

* Improvements from code review + address some warnings

* Change connection _test to use hostname key instead of address

* Change connection_test to use databse key instead of schema key

* [AD-522] implement read Preference

* add SpaceToUnderscore function
* implement read Preference in Config window and save the value

* Attempt to fix windows 32 build

* [AD-522] refactor dsn_configuration_window.cpp

refactor code format; remove spaces and  unnecessary comments

* [AD-522] fix config window margins

now the config window is symmetric

* Fix formatting

* [AD-522] add HasText() function to window.h

* previously, the definition of HasText was mistakenly committed in commit 74dd190fac5ef642d0d83015766fe33dfefb3489.
* add header of HasText() to resolve building errors in origin
* update HasText() function to make code simpler

* [AD-522] make "rs0" the default value of replicaSet

* [AD-522] implement database, hostname, port fields. And disable ok button unless all required fields are filled

* implement database, hostname, port fields.
* disable ok button unless all required fields (database, hostname, port, username, password) are filled
* added boolean created to indicate whether the configuration window has been created. If has, then check for disabling/enabling the Ok button

* [AD-522] rename SSH Known Hosts File label for clarity

* [AD-522] refactor logs for retrieving TSL settings

Make the sentences align

* [AD-522] rename TLS CA File label for clarity

* change label length to the same label length as connection settings group

* [AD-522] move authorization setting fields to connection fields

reason: only username and password are authorization settings, the rest are not. We chose to put username, password in the connections group because all fields in the connections group are required.

* [AD-522] bugfix-comment out address field related code in RetrieveConnectionParameters

* [AD-522] rename sslSettings to tlsSettings and add comment for connection settings group

* [AD-522] remove protocol version from config window

* [AD-522] bug fix sshKnownHostsFile not saved when Ok button is pressed

* [AD-522] remove commented out #include headers

* [AD-522] disable  SSH Known Hosts File edit when SSH Strict Host Key Check check box is unchecked

* move SSH Strict Host Key Checking check box above SSH Known Hosts File edit in the config window

* [AD-522] refactor - remove commented out header code

* [AD-522] add comments in configuration.cpp for planning

* modify commented out example code in dsn_configuration_window.cpp for clarity

* [AD-522] change from SSL to TLS for consistency

* SSL_SETTINGS_GROUP_BOX is changed to TLS_SETTINGS_GROUP_BOX

* [AD-522] remove commented out code

Removed commented out code:
* RetrieveAuthParameters
* CreateAuthSettingsGroup
* CreateAdditionalSettingsGroup function and CreateSslSettingsGroup function for 1 column window
* protocol version - related code
* authSettingsGroupBox code

* [AD-522] remove std::auto_ptr<Window> authSettingsGroupBox;

* [AD-522] remove address field auto pointer initialization

* [AD-522] remove address field from config window constructor

* [AD-522] refactor - remove unneeded commented out code in HasText

* [AD-522] refactor - remove white spaces and update comment

* [AD-522] debug scan_method.h

* SpaceToUnderscore is called in scan_method.cpp to make reads better
* added guards to scan_method.h

* [AD-522] implement Schema group settings box

* fixed bug in dsn_config.cpp to save scanLimit correctly

* [AD-522] update readPreference default value to unknown

* removed unneeded commented out code
* removed unnecessary code to get string value on readPreference

* [AD-522] refactor - remove unnecessary comments

* [AD-522] adjust window size and additional settings group label size

* additional settings group label size is now the same as other settings group in the same column

* Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window"

This reverts commit 696db387de8f509d846ad6351d5cdfcc9937a514, reversing
changes made to 8d81a183bea353fef47a62e542bf3fd6f53c13ab.

* [AD-522] keyboard user interface design + disable DSN empty strimg warning dialog

* make cursor go to checkboxes on the Config window and not skip them when tab key is pressed
* when DSN field is empty, Ok Button is disabled
* make default replicaSet value empty string (default is disable repliaSet)
* refactor - removed unneeded comments

* [AD-522] add end_point header to resolve build errors

end_point related code still exist in connection.cpp, so I readded the header for end_point

* Revert "Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window""

This reverts commit 788cad79f72a7f99ff66c5032bb1532eb71b0da5.

* [AD-522] resolve errors after merging develop branch

* GetAddresses() is deprecated, replaced it with GetHostname() and GetTcpPort() to get hostname and port number, respectively.
* replaced GetSchema() with GetSchemaName()
* removed commented out code
* refactor with dsn_configuration_window.cpp

* [AD-512] Resolve issue with missing include file.

* [AD-522] make BoolParseResult recognizable

* [AD-522] fix build errors after develop branch merge

* update schema checkbox string
* make edit row height single
* update SetTcpPort to SetPort etc
* define default value for sshEnable

* [AD-522] enable encrypt password for ssh private key passphrase

* modify refresh schema checkbox string to fit better
* remove log message for ssh private key passphrase to increase security

* [AD-521] add comments and notes for starting AD-521

* [AD-509] update readMe to include directions about saving Java bin and server directories.

* reason: ODBC JNI calls have a dependency on `jvm.dll`, as a result, the ODBC driver cannot operate properly unless the Java bin and server directories are included in the path.

* [AD-522] reduce space between ssh private key passphrase and the checkbox below

* [AD-521] define constants for Java GetSshLocalPort method call

* [AD-521] integrate code review feedback from Andie

* refactors with comment changes and log changes

* [AD-521] refactor code

* make open brace bracket start on new line for JVMException
* remove excess space

* [AD-427] Tracer Code - Limited Capability to load metadata - work-in-progress.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-522] remove space and add new line at the end of enum types

* [AD-522] add new lines at the end of Enum type files

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] add changes for Java.cpp from Bruce's AD-427 branch

* those changes are not included in the previous merge, and are now added

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] JNI wrapper calls to iSshTunnelActive and getSshLocalPort

* some draft comments are left to be cleaned up

* [AD-521] debug getSshLocalPort

* change function type signature from optional to int
* refactor - remove comments

* [AD-521] change return value in getSshLocalPort from boolean to a 0

* try to fix access memory issue in TestDriverManagerGetConnection

* [AD-522] resolve build errors after merge

* fix bug for schema name not correctly loaded on the config window
* removed unnecessary headers

* [AD-427] Added ResultSet.next and ResultSet.GetString()

* [AD-522] address code review comments

* change to enum class type for read_preference.h and scan_method.h
* change the way enum class objects are read
* add static cast to enum types so SetSelection function can work with it
* refactor - removed unnecessary comments
* refactor - changes code doc in connection_string_parser.h

* [AD-521] implement tests for JNI wrapper code

* test for TestDocumentDbConnectionGetSshTunnelPortSshTunnelNotActive is not yet active, need to be enabled when we can get external SSH tunnel working.
* bug fix: re-implemented DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.
connection.Get()->GetRef() is passed as first parameter because jobject is required for CallIntMethod and CallBooleanMethod.
* better JNI wrapper code is needed in the future so warnings/errors pop up when we pass jobject instead of jclass to the methods.

* [AD-521] refactor - remove comments and commented out code

* [AD-589] implement JNI method call for GetDatabaseMetadata

* define the method constant for DocumentDbConnection.getDatabaseMetadata()
* create JNI wrapper function for DocumentDbConnection.getMetaData

* [AD-589] implement unit test for DocumentDbConnection.getMetaData

* [AD-521] add calls to AutoCloseConnection in unit tests

* pass & errInfo instead of * errInfo in DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.

* [AD-521] remove unnecessary comment

* [AD-589] fix merge issues

* I missed this part of code when I was resolving the merge conflicts. Now they are corrected

* [AD-589] update getMetaData JNI wrapper code to pass &errInfo

* implement unit test for getMetaData

* [AD-589] implement JNI wrapper for DocumentDbDatabaseSchemaMetadataGetSchemaName

* implement Java class for
* define constant for DocumentDbDatabaseSchemaMetadata…
affonsov pushed a commit that referenced this pull request Nov 17, 2022
…ation-and-dsn

AT-829/AT-864/AT-874 - Modify sample application for Linux, Fix DSN issues on Linux, Fix driver warnings and enable all warnings
affonsov added a commit that referenced this pull request Nov 17, 2022
* [AD-509] Update mac developer environment setup

* Adjust formatting

* Add note about llvm

* Add note about iodbc

* Update README.md

change the install options for OpenSSL, since vcpkg is a preferred option

* Update README.md

remove the WiX Toolset v4 requirement

* Update README.md

add steps for the fix for ignite-odbc-tests.profraw error in README.

* [AD-517] Remove old properties + add new properties

* remove SSL settings and add TLS checkbox on the Configuration Window

* add comments for my own work

added some comments for my own convenience. Will remove later

* fix tls checkbox on Configuration Window

fixed by updating ChildId in tlsCheckBox = CreateCheckBox

* add TlsAllowInvalidHostnames checkbox and TLS CA edit to the Configuration Window

* Update configuration.cpp

add comment to illustrate plan on what to do for the configuration window

* Update dsn_configuration_window.cpp

bugfix to make tlsCheckBox and tlsAllowInvalidHostnamesCheckBox read into the saved values

* change defaultFetchSize to fetchSize in configuration.h

* change Default DSN name to DocumentDB DSN

* add App Name, Fetch Size, Read Preference, and login timeout to configuration window

* [AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h

Files that had the change connection_string_parser.cpp, connection_string_parser.h, dsn_config.cpp, batch_query.cpp, data_query.cpp.

* [AD-522] save read preference settings

* [AD-522] remove commented out code

* [AD-522] Implement replicaSet and retryReads on Configuration Window

* [AD-517] Re-enable unit tests - WIP -  still need to cleanup

* [AD-522] add space to code lines for format consistency in configuration_window.h

* Add more unit tests

* Remove extra file

* [AD-522] Add small letter case to keep format consistency in dsn_configuration_window.h

 Add small letter case to keep format consistency in dsn_configuration_window.h
fixed one typo (Create authentication settings group box)

* Remove redundant declaration

* [AD-522] add variable definitions for SSH tunnel settings for config UI

* [AD-522] add function definition for SSH Tunnel

added SSH User, SSH Host. SSH Strict Host Key Checking, and SSH Known Hosts File onto the UI. However, the code to save the written values would be done in later commits.

* [AD-522] code draft for configuration.cpp

add draft variable definition to Enable ssh tunnel boolean value

* Revert "change defaultFetchSize to fetchSize in configuration.h"

This reverts commit 3f58b3995262c22dc6b411cd9e41a6ea38112844.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"

This reverts commit ae1a6047bbab9b3dc8c7869b70c8d4499c6cc7cf.

* [AD-517] * Change the C++ version to use to compile.

* [AD-522] change fetchSize to defaultFetchSize on configuration window for consistency with JDBC driver

* [AD-517] * Changed checks.yml so that it doesn't fail on code review errors.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h""

This reverts commit 52eef4931e022553633b0c7f5f535b26e3b4f940.

* [AD-522] make TLS allow invalid hostnames checkbox enabled only when tls Check box is checked

* Revert "Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"""

This reverts commit 686aa59e7a473a4aa88e7c1e5f32264c3c71a40c.

* Improvements from review

* Updated comments

* [AD-522] save SSH values for re-read, make settings window into 2 columns

Make ssl and additional settings groups to be on the right side of the column on the configuration window. This is subject to change later.
I created the function
void DsnConfigurationWindow::RetrieveSshParameters(config::Configuration& cfg) const
to save SSH values.
The width value in the DsnConfigurationWindow constructor is doubled from 360 to 720 and added the margin value. The margins currently look imbalanced on the settings box, and will be fixed in later commits.
Make Ok button and Cancel buttons aligned with the right column
bugfix - allow the SSH strict host checking checkbox to be checked on and off by adding the case ChildId::SSH_STRICT_HOST_KEY_CHECKING_CHECK_BOX definition.

* Removed includes no longer being used in configuration.h

* Some formatting improvements

* [Ad-522] add sshEnable variable in DSN config

- added sshEnable variable definition and getter/setter for sshEnable.
- added code for parsing sshEnable in the connection string parser

* [AD-522] change from GetSshEnable to IsSshEnable for consistency

* [AD-522] comment out deprecated readPreference variable

start on transitioning from readPreferenceEdit to readPreference combo box

* [AD-522] add SSH enable checkbox, SSH private key passphrase, and SSH private key file

* add SSH Enable variable in configuration.h and configuration.cpp
* add SSH checkbox in SSH group setting
* add SSH private key file edit in SSH group setting
* add SSH private key pass phrase in SSH group setting
** SSH private key passphrase label requires double the row height due to the label being long.
* make SSH setting items disabled/enabled as SSH enable checkbox is unchecked/checked
* save SSH variables to configuration when Ok button is pressed.

* [AD-522] read_preference.h fix

* add guards to read_preference.h fix
* include read_preference.h in dsn_configuration_window.cpp
* add draft code for read preference in dsn_configuration_window.cpp

* [AD-522] update fields in configuration window

* modified order of fields in the configuration window.
- Retry reads checkbox is now in the first row under "Additional Settings".
- SSH Strict host key check is now in the last row under "Internal SSH Tunnel Settings"
- Allow invalid hostnames checkbox now is in 2nd row under "TLS/SSL settings"
* added warning sentences for Allow invalid hostnames checkbox and SSH strict host key check

* Improvements from code review + address some warnings

* Change connection _test to use hostname key instead of address

* Change connection_test to use databse key instead of schema key

* [AD-522] implement read Preference

* add SpaceToUnderscore function
* implement read Preference in Config window and save the value

* Attempt to fix windows 32 build

* [AD-522] refactor dsn_configuration_window.cpp

refactor code format; remove spaces and  unnecessary comments

* [AD-522] fix config window margins

now the config window is symmetric

* Fix formatting

* [AD-522] add HasText() function to window.h

* previously, the definition of HasText was mistakenly committed in commit ff1729d46da780a3ed5654211487da066849ae95.
* add header of HasText() to resolve building errors in origin
* update HasText() function to make code simpler

* [AD-522] make "rs0" the default value of replicaSet

* [AD-522] implement database, hostname, port fields. And disable ok button unless all required fields are filled

* implement database, hostname, port fields.
* disable ok button unless all required fields (database, hostname, port, username, password) are filled
* added boolean created to indicate whether the configuration window has been created. If has, then check for disabling/enabling the Ok button

* [AD-522] rename SSH Known Hosts File label for clarity

* [AD-522] refactor logs for retrieving TSL settings

Make the sentences align

* [AD-522] rename TLS CA File label for clarity

* change label length to the same label length as connection settings group

* [AD-522] move authorization setting fields to connection fields

reason: only username and password are authorization settings, the rest are not. We chose to put username, password in the connections group because all fields in the connections group are required.

* [AD-522] bugfix-comment out address field related code in RetrieveConnectionParameters

* [AD-522] rename sslSettings to tlsSettings and add comment for connection settings group

* [AD-522] remove protocol version from config window

* [AD-522] bug fix sshKnownHostsFile not saved when Ok button is pressed

* [AD-522] remove commented out #include headers

* [AD-522] disable  SSH Known Hosts File edit when SSH Strict Host Key Check check box is unchecked

* move SSH Strict Host Key Checking check box above SSH Known Hosts File edit in the config window

* [AD-522] refactor - remove commented out header code

* [AD-522] add comments in configuration.cpp for planning

* modify commented out example code in dsn_configuration_window.cpp for clarity

* [AD-522] change from SSL to TLS for consistency

* SSL_SETTINGS_GROUP_BOX is changed to TLS_SETTINGS_GROUP_BOX

* [AD-522] remove commented out code

Removed commented out code:
* RetrieveAuthParameters
* CreateAuthSettingsGroup
* CreateAdditionalSettingsGroup function and CreateSslSettingsGroup function for 1 column window
* protocol version - related code
* authSettingsGroupBox code

* [AD-522] remove std::auto_ptr<Window> authSettingsGroupBox;

* [AD-522] remove address field auto pointer initialization

* [AD-522] remove address field from config window constructor

* [AD-522] refactor - remove unneeded commented out code in HasText

* [AD-522] refactor - remove white spaces and update comment

* [AD-522] debug scan_method.h

* SpaceToUnderscore is called in scan_method.cpp to make reads better
* added guards to scan_method.h

* [AD-522] implement Schema group settings box

* fixed bug in dsn_config.cpp to save scanLimit correctly

* [AD-522] update readPreference default value to unknown

* removed unneeded commented out code
* removed unnecessary code to get string value on readPreference

* [AD-522] refactor - remove unnecessary comments

* [AD-522] adjust window size and additional settings group label size

* additional settings group label size is now the same as other settings group in the same column

* Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window"

This reverts commit b4a52d49eba77b8b409878c6d5e1b9ef2bba1750, reversing
changes made to b4d20ff9c2a39de0fe89de14fd40db107b2e98b4.

* [AD-522] keyboard user interface design + disable DSN empty strimg warning dialog

* make cursor go to checkboxes on the Config window and not skip them when tab key is pressed
* when DSN field is empty, Ok Button is disabled
* make default replicaSet value empty string (default is disable repliaSet)
* refactor - removed unneeded comments

* [AD-522] add end_point header to resolve build errors

end_point related code still exist in connection.cpp, so I readded the header for end_point

* Revert "Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window""

This reverts commit 42dd752b23be78058f4b19c5386ac3f61281ff91.

* [AD-522] resolve errors after merging develop branch

* GetAddresses() is deprecated, replaced it with GetHostname() and GetTcpPort() to get hostname and port number, respectively.
* replaced GetSchema() with GetSchemaName()
* removed commented out code
* refactor with dsn_configuration_window.cpp

* [AD-512] Resolve issue with missing include file.

* [AD-522] make BoolParseResult recognizable

* [AD-522] fix build errors after develop branch merge

* update schema checkbox string
* make edit row height single
* update SetTcpPort to SetPort etc
* define default value for sshEnable

* [AD-522] enable encrypt password for ssh private key passphrase

* modify refresh schema checkbox string to fit better
* remove log message for ssh private key passphrase to increase security

* [AD-521] add comments and notes for starting AD-521

* [AD-509] update readMe to include directions about saving Java bin and server directories.

* reason: ODBC JNI calls have a dependency on `jvm.dll`, as a result, the ODBC driver cannot operate properly unless the Java bin and server directories are included in the path.

* [AD-522] reduce space between ssh private key passphrase and the checkbox below

* [AD-521] define constants for Java GetSshLocalPort method call

* [AD-521] integrate code review feedback from Andie

* refactors with comment changes and log changes

* [AD-521] refactor code

* make open brace bracket start on new line for JVMException
* remove excess space

* [AD-427] Tracer Code - Limited Capability to load metadata - work-in-progress.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-522] remove space and add new line at the end of enum types

* [AD-522] add new lines at the end of Enum type files

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] add changes for Java.cpp from Bruce's AD-427 branch

* those changes are not included in the previous merge, and are now added

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] JNI wrapper calls to iSshTunnelActive and getSshLocalPort

* some draft comments are left to be cleaned up

* [AD-521] debug getSshLocalPort

* change function type signature from optional to int
* refactor - remove comments

* [AD-521] change return value in getSshLocalPort from boolean to a 0

* try to fix access memory issue in TestDriverManagerGetConnection

* [AD-522] resolve build errors after merge

* fix bug for schema name not correctly loaded on the config window
* removed unnecessary headers

* [AD-427] Added ResultSet.next and ResultSet.GetString()

* [AD-522] address code review comments

* change to enum class type for read_preference.h and scan_method.h
* change the way enum class objects are read
* add static cast to enum types so SetSelection function can work with it
* refactor - removed unnecessary comments
* refactor - changes code doc in connection_string_parser.h

* [AD-521] implement tests for JNI wrapper code

* test for TestDocumentDbConnectionGetSshTunnelPortSshTunnelNotActive is not yet active, need to be enabled when we can get external SSH tunnel working.
* bug fix: re-implemented DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.
connection.Get()->GetRef() is passed as first parameter because jobject is required for CallIntMethod and CallBooleanMethod.
* better JNI wrapper code is needed in the future so warnings/errors pop up when we pass jobject instead of jclass to the methods.

* [AD-521] refactor - remove comments and commented out code

* [AD-589] implement JNI method call for GetDatabaseMetadata

* define the method constant for DocumentDbConnection.getDatabaseMetadata()
* create JNI wrapper function for DocumentDbConnection.getMetaData

* [AD-589] implement unit test for DocumentDbConnection.getMetaData

* [AD-521] add calls to AutoCloseConnection in unit tests

* pass & errInfo instead of * errInfo in DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.

* [AD-521] remove unnecessary comment

* [AD-589] fix merge issues

* I missed this part of code when I was resolving the merge conflicts. Now they are corrected

* [AD-589] update getMetaData JNI wrapper code to pass &errInfo

* implement unit test for getMetaData

* [AD-589] implement JNI wrapper for DocumentDbDatabaseSchemaMetadataGetSchemaName

* implement Java class for
* define constant for DocumentDbDatabaseSchemaMetadataGetSchemaName
*  add empty test function for TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* [AD-589] implement unit test for DbDatabaseSchemaMetadataGetSchemaName

* [AD-521] refactor - change case of ssh to SSH for consistency

* [AD-589] address code review comments

* rename DocumentDbConnectionGetMetaData to DocumentDbConnectionGetDatabaseMetaData

* [AD-589] change case from MetaData to Metadata to match Java method name

* [AD-589] refactor: change from metaData to metadata

changes occurred in:
* DocumentDbConnectionGetDatabaseMetadata
* DocumentDbDatabaseSchemaMetadataGetSchemaName
* TestDocumentDbConnectionGetDatabaseMetadata
* TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* Birschick bq/sync up (#21)

* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

Co-authored-by: affonsoBQ <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>

* [AD-735] large dataset crash issue (#23)

* first test

* fix performance test crash

* fix performance test crash

* fix whitespace issue

* rework based on comments

* SQLPrimaryKey using JNI

* odbc test failure fix

* Revert "odbc test failure fix"

This reverts commit 57043326d22b6a60bffb029959c3065202120409.

* Revert "SQLPrimaryKey using JNI"

This reverts commit f32bace48fed99164a113193673ff17ba6b1cf22.

* [AD-550] Adapt Foreign Keys (#24)

* [AD-550] JNI implementation for getImportedKeys

* [AD-550] update Pull Request Template

* added reviewees Roy Zhang and Micthell Elholm

* [AD-550] add todo note to unit test

* [AD-550] define GetImportedKeys in database_metadata.h/.cpp

* add ODBC wrapper code to the JNI call for GetImportedKeys

* [AD-550] initialize string vars to be empty string in column_metadata_query

* [AD-550] modify ForeignKeysQuery to accept 3 arguments only

* modified ForeignKeysQuery to only accept catalog, schema, and table, as other fields are not needed.

* [AD-550] update column metadata for foreign keys

* [AD-550] fix typo in primary_key_meta.h

* [AD-550] define vars for foreign key meta

* [AD-550] add getter functions for vars in foreign_key_meta.h

* [AD-550] support vars in foreign key meta to be optional

* [AD-550] add headers for boost optional

* [AD-550] add headers and constructors for foreign key meta

* added ForeignKeyMeta constructor, and copy constructor
*added ForeignKeyMeta destructor
* define ForeignKeyMetaVector
* basically, complete foreign_key_meta.h

* [AD-550] implement resultset.getSmallInt

* implement resultset.getSmallInt taking column indices or column names as parameters
* make ColumnMeta::dataType be updated with  resultSet.Get()->GetSmallInt to simplify code and readbility

* [AD-550] Add foreign_key_meta.cpp

* implemented functions:
ReadForeignKeysColumnMetaVector
ForeignKeyMeta::Read

* [AD-550] update CMakeLists to include foreign_key_meta.cpp

* [AD-550] implement MakeRequestGetForeignKeysMeta

* MakeRequestGetForeignKeysMeta calls GetImportedKeys to get Jni ResultSet object for foreign keys, and then reads the resultSet object to fill in the meta object.

* [AD-550] update ForeignKeysQuery::DataAvailable and ForeignKeysQuery::Close

* update meta object accordingly whenForeignKeysQuery::Close() is called.
* return boolean for whether data is available based on meta object

* [AD-550] implement ForeignKeysQuery::Execute and FetchNextRow

* the code for ForeignKeysQuery::Execute and ForeignKeysQuery::FetchNextRow is based on ColumnMetadataQuery::Execute and ColumnMetadataQuery::FetchNextRow

* [AD-550] fix Mac and Linux build

* remove extra qualification on GetSmallInt function

* [AD-550] implement ForeignKeysQuery::GetColumn

* had formatting changes as well

* [AD-550] JNI implementation for getImportedKeys

* [AD-550] update Pull Request Template

* added reviewees Roy Zhang and Micthell Elholm

* [AD-550] add todo note to unit test

* [AD-550] define GetImportedKeys in database_metadata.h/.cpp

* add ODBC wrapper code to the JNI call for GetImportedKeys

* [AD-550] initialize string vars to be empty string in column_metadata_query

* [AD-550] modify ForeignKeysQuery to accept 3 arguments only

* modified ForeignKeysQuery to only accept catalog, schema, and table, as other fields are not needed.

* [AD-550] update column metadata for foreign keys

* [AD-550] fix typo in primary_key_meta.h

* [AD-550] define vars for foreign key meta

* [AD-550] add getter functions for vars in foreign_key_meta.h

* [AD-550] support vars in foreign key meta to be optional

* [AD-550] add headers for boost optional

* [AD-550] add headers and constructors for foreign key meta

* added ForeignKeyMeta constructor, and copy constructor
*added ForeignKeyMeta destructor
* define ForeignKeyMetaVector
* basically, complete foreign_key_meta.h

* [AD-550] implement resultset.getSmallInt

* implement resultset.getSmallInt taking column indices or column names as parameters
* make ColumnMeta::dataType be updated with  resultSet.Get()->GetSmallInt to simplify code and readbility

* [AD-550] Add foreign_key_meta.cpp

* implemented functions:
ReadForeignKeysColumnMetaVector
ForeignKeyMeta::Read

* [AD-550] update CMakeLists to include foreign_key_meta.cpp

* [AD-550] implement MakeRequestGetForeignKeysMeta

* MakeRequestGetForeignKeysMeta calls GetImportedKeys to get Jni ResultSet object for foreign keys, and then reads the resultSet object to fill in the meta object.

* [AD-550] update ForeignKeysQuery::DataAvailable and ForeignKeysQuery::Close

* update meta object accordingly whenForeignKeysQuery::Close() is called.
* return boolean for whether data is available based on meta object

* [AD-550] implement ForeignKeysQuery::Execute and FetchNextRow

* the code for ForeignKeysQuery::Execute and ForeignKeysQuery::FetchNextRow is based on ColumnMetadataQuery::Execute and ColumnMetadataQuery::FetchNextRow

* [AD-550] fix Mac and Linux build

* remove extra qualification on GetSmallInt function

* [AD-550] implement ForeignKeysQuery::GetColumn

* had formatting changes as well

* [AD-550] update docs for foreign_keys_query.h

* [AD-550] refine SQLForeignKey call

* [AD-550] add draft foreign key test for JNI test

* [AD-550] add test tables for jni test

* [AD-550] update test TestDocumentDbDatabaseMetaDataGetImportedKeys

* update test to query virtual table jni_test_001_sub_doc

* [AD-550] add SQLForeignKeys sql api test

* [AD-550] add logs for ReadForeignKeysColumnMetaVector

* PK* variables will contain the list of foreign keys in the specified table

* [AD-550] reformat jni_test

* [AD-550] implement TestDatabaseMetaDataGetImportedKeys for java_test

* [AD-550] add test document meta_queries_test_002_with_array

* this document will be used to test SQLForeignKeys in meta_queries_test

* [AD-550] refactor TestSQLForeignKeys test

* reason: I see that `SQLCHAR empty[] = "";` is used in meta_queries_test, and I think that might be a better way of writing the parameters

* [AD-550] add test for SQLForeignKeys in meta_queries_test

tests added:
* TestGetDataWithForeignKeysReturnsOneFromLocalServer
* TestGetDataWithForeignKeysReturnsNone
* they use test table meta_queries_test_002_with_array

* [AD-550] clean up

* add doc for SQLForeignKeys
* remove comments

* [AD-550] remove commented out code

* [AD-550] remove unneeded commented out code

* [AD-550] make ODBC pass nullptr for JString catalog and schema for SQLForeignKeys

*  in getImportedKeys, null boost::optional strings will be passed as nullptr to JDBC
* make jni test and java test pass null boost::optional strings to JNI calls for getImportedKeys
* ODBC now passes boost::optional strings foreignCatalog and foreignSchema to ExecuteGetForeignKeysQuery function.

* [AD-550] add if check for sqlStrLen

* if sqlString is empty, return boost::none

* [AD-550] debug `choco install cppcheck -y` not working on GitHub Actions

* [AD-550] add tests for testing empty string parameters

* added Java test TestDatabaseMetaDataGetImportedKeysReturnsNone
* added Jni test TestDocumentDbDatabaseMetaDataGetImportedKeysReturnsNone

* [AD-550] disable cppcheck

* created [AD-752](https://bitquill.atlassian.net/browse/AD-752) to investigate it further.

* [AD-550] change the place for code doc for function SQLForeignKeys

* [AD-550] update if statement check of SqlStringToOptString

* to resolve code review comment

* [AD-550] resolve code review comment

* The sqlStrLen is an int32_t, so "!sqlStrLen" can be removed

* [AD-550] make boost optional strings constant where needed

* previously, I changed `const std::string` to `boost::optional< std::string >` in some areas, and this is now fixed by replacing the latter with `boost::optional< const std::string >`

* [AD-550] SqlStringToOptString fix

* also fixed SqlStringToConstOptString
* reason: SQL_NTS is a flag that indicates that the string passed is a null-terminated string.

* [AD-550] make tests pass null to SQLForeignKeys

* [AD-550] add test case for TestGetDataWithForeignKeysReturnsNone

*  even with the correct table name, as long as empty strings are passed as catalog/schema, SQL_NO_DATA should be returned

* [AD-550] update SqlStringToOptString

* [AD-550] update TestSQLForeignKeys to pass NULL as parameters properly

* [AD-550] move `const` out of `boost::optional< const std::string >`

* reason: `const boost::optional< std::string >` works better than `boost::optional< const std::string >`.
* this commit is to resolve code review comments

* [AD-550] add meta_queries test that passes catalog as empty string

* [AD-550] Set `fetched` to false in ForeignKeysQuery::Close()

* [AD-550] add explicit conversion to boost::optional variable initialization

* [AD-550] resolve code review comment

* remove duplicate code

* [AD-550] remove function

* removed unneeded function: SqlStringToConstOptString

* [AD-649] Add missing documentation (#29)

### Summary

[AD-649] Add missing documentation

### Description
Update ODBC driver documentation

- [x] Documentation about connections string ( Parameters description)
- [x] Documentation about DSN configuration window ( with screenshots)
- [x] Documentation how the ODBC driver works ( ODBC and JDBC integration)
- [x] Documentation what is supported ( link with JDBC driver)

### Related Issue

https://bitquill.atlassian.net/browse/AD-649

* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

* [AD-735] large dataset crash issue (#74)

### Summary

ODBC driver will not run on large document tests

### Description
The performance test crashes for large document tests. 

1. The root cause is the wrong memory is passed to SQLBindCol(). The parameter TargetValuePtr is passed &cols[i][0].data_dat[i]. The i could exceed 255 for large table while its max valid value should be 254. The correct value should be 0.
2. The SQLExtendedFetch is deprecated. Replace it with SQLFetch.

### Related Issue

https://bitquill.atlassian.net/browse/AD-735

* [AD-509] Update mac developer environment setup

* Adjust formatting

* Add note about llvm

* Add note about iodbc

* Update README.md

change the install options for OpenSSL, since vcpkg is a preferred option

* Update README.md

remove the WiX Toolset v4 requirement

* Update README.md

add steps for the fix for ignite-odbc-tests.profraw error in README.

* [AD-517] Remove old properties + add new properties

* remove SSL settings and add TLS checkbox on the Configuration Window

* add comments for my own work

added some comments for my own convenience. Will remove later

* fix tls checkbox on Configuration Window

fixed by updating ChildId in tlsCheckBox = CreateCheckBox

* add TlsAllowInvalidHostnames checkbox and TLS CA edit to the Configuration Window

* Update configuration.cpp

add comment to illustrate plan on what to do for the configuration window

* Update dsn_configuration_window.cpp

bugfix to make tlsCheckBox and tlsAllowInvalidHostnamesCheckBox read into the saved values

* change defaultFetchSize to fetchSize in configuration.h

* change Default DSN name to DocumentDB DSN

* add App Name, Fetch Size, Read Preference, and login timeout to configuration window

* [AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h

Files that had the change connection_string_parser.cpp, connection_string_parser.h, dsn_config.cpp, batch_query.cpp, data_query.cpp.

* [AD-522] save read preference settings

* [AD-522] remove commented out code

* [AD-522] Implement replicaSet and retryReads on Configuration Window

* [AD-517] Re-enable unit tests - WIP -  still need to cleanup

* [AD-522] add space to code lines for format consistency in configuration_window.h

* Add more unit tests

* Remove extra file

* [AD-522] Add small letter case to keep format consistency in dsn_configuration_window.h

 Add small letter case to keep format consistency in dsn_configuration_window.h
fixed one typo (Create authentication settings group box)

* Remove redundant declaration

* [AD-522] add variable definitions for SSH tunnel settings for config UI

* [AD-522] add function definition for SSH Tunnel

added SSH User, SSH Host. SSH Strict Host Key Checking, and SSH Known Hosts File onto the UI. However, the code to save the written values would be done in later commits.

* [AD-522] code draft for configuration.cpp

add draft variable definition to Enable ssh tunnel boolean value

* Revert "change defaultFetchSize to fetchSize in configuration.h"

This reverts commit 3f58b3995262c22dc6b411cd9e41a6ea38112844.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"

This reverts commit ae1a6047bbab9b3dc8c7869b70c8d4499c6cc7cf.

* [AD-517] * Change the C++ version to use to compile.

* [AD-522] change fetchSize to defaultFetchSize on configuration window for consistency with JDBC driver

* [AD-517] * Changed checks.yml so that it doesn't fail on code review errors.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h""

This reverts commit 52eef4931e022553633b0c7f5f535b26e3b4f940.

* [AD-522] make TLS allow invalid hostnames checkbox enabled only when tls Check box is checked

* Revert "Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"""

This reverts commit 686aa59e7a473a4aa88e7c1e5f32264c3c71a40c.

* Improvements from review

* Updated comments

* [AD-522] save SSH values for re-read, make settings window into 2 columns

Make ssl and additional settings groups to be on the right side of the column on the configuration window. This is subject to change later.
I created the function
void DsnConfigurationWindow::RetrieveSshParameters(config::Configuration& cfg) const
to save SSH values.
The width value in the DsnConfigurationWindow constructor is doubled from 360 to 720 and added the margin value. The margins currently look imbalanced on the settings box, and will be fixed in later commits.
Make Ok button and Cancel buttons aligned with the right column
bugfix - allow the SSH strict host checking checkbox to be checked on and off by adding the case ChildId::SSH_STRICT_HOST_KEY_CHECKING_CHECK_BOX definition.

* Removed includes no longer being used in configuration.h

* Some formatting improvements

* [Ad-522] add sshEnable variable in DSN config

- added sshEnable variable definition and getter/setter for sshEnable.
- added code for parsing sshEnable in the connection string parser

* [AD-522] change from GetSshEnable to IsSshEnable for consistency

* [AD-522] comment out deprecated readPreference variable

start on transitioning from readPreferenceEdit to readPreference combo box

* [AD-522] add SSH enable checkbox, SSH private key passphrase, and SSH private key file

* add SSH Enable variable in configuration.h and configuration.cpp
* add SSH checkbox in SSH group setting
* add SSH private key file edit in SSH group setting
* add SSH private key pass phrase in SSH group setting
** SSH private key passphrase label requires double the row height due to the label being long.
* make SSH setting items disabled/enabled as SSH enable checkbox is unchecked/checked
* save SSH variables to configuration when Ok button is pressed.

* [AD-522] read_preference.h fix

* add guards to read_preference.h fix
* include read_preference.h in dsn_configuration_window.cpp
* add draft code for read preference in dsn_configuration_window.cpp

* [AD-522] update fields in configuration window

* modified order of fields in the configuration window.
- Retry reads checkbox is now in the first row under "Additional Settings".
- SSH Strict host key check is now in the last row under "Internal SSH Tunnel Settings"
- Allow invalid hostnames checkbox now is in 2nd row under "TLS/SSL settings"
* added warning sentences for Allow invalid hostnames checkbox and SSH strict host key check

* Improvements from code review + address some warnings

* Change connection _test to use hostname key instead of address

* Change connection_test to use databse key instead of schema key

* [AD-522] implement read Preference

* add SpaceToUnderscore function
* implement read Preference in Config window and save the value

* Attempt to fix windows 32 build

* [AD-522] refactor dsn_configuration_window.cpp

refactor code format; remove spaces and  unnecessary comments

* [AD-522] fix config window margins

now the config window is symmetric

* Fix formatting

* [AD-522] add HasText() function to window.h

* previously, the definition of HasText was mistakenly committed in commit ff1729d46da780a3ed5654211487da066849ae95.
* add header of HasText() to resolve building errors in origin
* update HasText() function to make code simpler

* [AD-522] make "rs0" the default value of replicaSet

* [AD-522] implement database, hostname, port fields. And disable ok button unless all required fields are filled

* implement database, hostname, port fields.
* disable ok button unless all required fields (database, hostname, port, username, password) are filled
* added boolean created to indicate whether the configuration window has been created. If has, then check for disabling/enabling the Ok button

* [AD-522] rename SSH Known Hosts File label for clarity

* [AD-522] refactor logs for retrieving TSL settings

Make the sentences align

* [AD-522] rename TLS CA File label for clarity

* change label length to the same label length as connection settings group

* [AD-522] move authorization setting fields to connection fields

reason: only username and password are authorization settings, the rest are not. We chose to put username, password in the connections group because all fields in the connections group are required.

* [AD-522] bugfix-comment out address field related code in RetrieveConnectionParameters

* [AD-522] rename sslSettings to tlsSettings and add comment for connection settings group

* [AD-522] remove protocol version from config window

* [AD-522] bug fix sshKnownHostsFile not saved when Ok button is pressed

* [AD-522] remove commented out #include headers

* [AD-522] disable  SSH Known Hosts File edit when SSH Strict Host Key Check check box is unchecked

* move SSH Strict Host Key Checking check box above SSH Known Hosts File edit in the config window

* [AD-522] refactor - remove commented out header code

* [AD-522] add comments in configuration.cpp for planning

* modify commented out example code in dsn_configuration_window.cpp for clarity

* [AD-522] change from SSL to TLS for consistency

* SSL_SETTINGS_GROUP_BOX is changed to TLS_SETTINGS_GROUP_BOX

* [AD-522] remove commented out code

Removed commented out code:
* RetrieveAuthParameters
* CreateAuthSettingsGroup
* CreateAdditionalSettingsGroup function and CreateSslSettingsGroup function for 1 column window
* protocol version - related code
* authSettingsGroupBox code

* [AD-522] remove std::auto_ptr<Window> authSettingsGroupBox;

* [AD-522] remove address field auto pointer initialization

* [AD-522] remove address field from config window constructor

* [AD-522] refactor - remove unneeded commented out code in HasText

* [AD-522] refactor - remove white spaces and update comment

* [AD-522] debug scan_method.h

* SpaceToUnderscore is called in scan_method.cpp to make reads better
* added guards to scan_method.h

* [AD-522] implement Schema group settings box

* fixed bug in dsn_config.cpp to save scanLimit correctly

* [AD-522] update readPreference default value to unknown

* removed unneeded commented out code
* removed unnecessary code to get string value on readPreference

* [AD-522] refactor - remove unnecessary comments

* [AD-522] adjust window size and additional settings group label size

* additional settings group label size is now the same as other settings group in the same column

* Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window"

This reverts commit b4a52d49eba77b8b409878c6d5e1b9ef2bba1750, reversing
changes made to b4d20ff9c2a39de0fe89de14fd40db107b2e98b4.

* [AD-522] keyboard user interface design + disable DSN empty strimg warning dialog

* make cursor go to checkboxes on the Config window and not skip them when tab key is pressed
* when DSN field is empty, Ok Button is disabled
* make default replicaSet value empty string (default is disable repliaSet)
* refactor - removed unneeded comments

* [AD-522] add end_point header to resolve build errors

end_point related code still exist in connection.cpp, so I readded the header for end_point

* Revert "Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window""

This reverts commit 42dd752b23be78058f4b19c5386ac3f61281ff91.

* [AD-522] resolve errors after merging develop branch

* GetAddresses() is deprecated, replaced it with GetHostname() and GetTcpPort() to get hostname and port number, respectively.
* replaced GetSchema() with GetSchemaName()
* removed commented out code
* refactor with dsn_configuration_window.cpp

* [AD-512] Resolve issue with missing include file.

* [AD-522] make BoolParseResult recognizable

* [AD-522] fix build errors after develop branch merge

* update schema checkbox string
* make edit row height single
* update SetTcpPort to SetPort etc
* define default value for sshEnable

* [AD-522] enable encrypt password for ssh private key passphrase

* modify refresh schema checkbox string to fit better
* remove log message for ssh private key passphrase to increase security

* [AD-521] add comments and notes for starting AD-521

* [AD-509] update readMe to include directions about saving Java bin and server directories.

* reason: ODBC JNI calls have a dependency on `jvm.dll`, as a result, the ODBC driver cannot operate properly unless the Java bin and server directories are included in the path.

* [AD-522] reduce space between ssh private key passphrase and the checkbox below

* [AD-521] define constants for Java GetSshLocalPort method call

* [AD-521] integrate code review feedback from Andie

* refactors with comment changes and log changes

* [AD-521] refactor code

* make open brace bracket start on new line for JVMException
* remove excess space

* [AD-427] Tracer Code - Limited Capability to load metadata - work-in-progress.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-522] remove space and add new line at the end of enum types

* [AD-522] add new lines at the end of Enum type files

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] add changes for Java.cpp from Bruce's AD-427 branch

* those changes are not included in the previous merge, and are now added

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] JNI wrapper calls to iSshTunnelActive and getSshLocalPort

* some draft comments are left to be cleaned up

* [AD-521] debug getSshLocalPort

* change function type signature from optional to int
* refactor - remove comments

* [AD-521] change return value in getSshLocalPort from boolean to a 0

* try to fix access memory issue in TestDriverManagerGetConnection

* [AD-522] resolve build errors after merge

* fix bug for schema name not correctly loaded on the config window
* removed unnecessary headers

* [AD-427] Added ResultSet.next and ResultSet.GetString()

* [AD-522] address code review comments

* change to enum class type for read_preference.h and scan_method.h
* change the way enum class objects are read
* add static cast to enum types so SetSelection function can work with it
* refactor - removed unnecessary comments
* refactor - changes code doc in connection_string_parser.h

* [AD-521] implement tests for JNI wrapper code

* test for TestDocumentDbConnectionGetSshTunnelPortSshTunnelNotActive is not yet active, need to be enabled when we can get external SSH tunnel working.
* bug fix: re-implemented DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.
connection.Get()->GetRef() is passed as first parameter because jobject is required for CallIntMethod and CallBooleanMethod.
* better JNI wrapper code is needed in the future so warnings/errors pop up when we pass jobject instead of jclass to the methods.

* [AD-521] refactor - remove comments and commented out code

* [AD-589] implement JNI method call for GetDatabaseMetadata

* define the method constant for DocumentDbConnection.getDatabaseMetadata()
* create JNI wrapper function for DocumentDbConnection.getMetaData

* [AD-589] implement unit test for DocumentDbConnection.getMetaData

* [AD-521] add calls to AutoCloseConnection in unit tests

* pass & errInfo instead of * errInfo in DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.

* [AD-521] remove unnecessary comment

* [AD-589] fix merge issues

* I missed this part of code when I was resolving the merge conflicts. Now they are corrected

* [AD-589] update getMetaData JNI wrapper code to pass &errInfo

* implement unit test for getMetaData

* [AD-589] implement JNI wrapper for DocumentDbDatabaseSchemaMetadataGetSchemaName

* implement Java class for
* define constant for DocumentDbDatabaseSchemaMetadataGetSchemaName
*  add empty test function for TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* [AD-589] implement unit test for DbDatabaseSchemaMetadataGetSchemaName

* [AD-521] refactor - change case of ssh to SSH for consistency

* [AD-589] address code review comments

* rename DocumentDbConnectionGetMetaData to DocumentDbConnectionGetDatabaseMetaData

* [AD-589] change case from MetaData to Metadata to match Java method name

* [AD-589] refactor: change from metaData to metadata

changes occurred in:
* DocumentDbConnectionGetDatabaseMetadata
* DocumentDbDatabaseSchemaMetadataGetSchemaName
* TestDocumentDbConnectionGetDatabaseMetadata
* TestDocumentDbDatabaseSchemaMetadataGetSchemaName

* Birschick bq/sync up (#21)

* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

Co-authored-by: affonsoBQ <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>

* [AD-735] large dataset crash issue (#23)

* first test

* fix performance test crash

* fix performance test crash

* fix whitespace issue

* rework based on comments

Co-authored-by: Andie Montoya <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>
Co-authored-by: affonsoBQ <[email protected]>
Co-authored-by: RoyZhang2022 <[email protected]>

* [AD-649] Add missing documentation (#73)

* Initial user/developer documentation
Co-authored-by: andiem-bq <[email protected]>
Co-authored-by: Bruce Irschick <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>

Co-authored-by: affonsoBQ <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>
Co-authored-by: Andie Montoya <[email protected]>
Co-authored-by: Alina (Xi) Li <[email protected]>
Co-authored-by: RoyZhang2022 <[email protected]>

* Fix README.md (#30)

* Updating JDBC version (#72)

* [AD-370] upload odbc driver build on push to develop (#71)

* [AD-730] upload odbc driver build at push to develop

* [AD-730] update github actions to upload with v3

* [AD-730] Test artifact upload action

* temporarily comment out if statement guard to test upload-artifact github action

* [AD-730] upload performance test executable

* [AD-730] update readme

* [AD-730] upload Release folder as artifact

* our odbc needs more than just the ignite.odbc.dll to run properly

* [AD-730] update to upload artifacts for release build

* previously, I uploaded the Debug builds, but the Release build is the one that requires less dependencies.

* [AD-730] add back if statment

* add the if statement back in win-build.yml to ensure that the odbc driver performance artifact is only published when pushed to develop

* [AD-730] fix typo of performance test plan

* [AD-735] large dataset crash issue (#74)

### Summary

ODBC driver will not run on large document tests

### Description
The performance test crashes for large document tests. 

1. The root cause is the wrong memory is passed to SQLBindCol(). The parameter TargetValuePtr is passed &cols[i][0].data_dat[i]. The i could exceed 255 for large table while its max valid value should be 254. The correct value should be 0.
2. The SQLExtendedFetch is deprecated. Replace it with SQLFetch.

### Related Issue

https://bitquill.atlassian.net/browse/AD-735

* [AD-509] Update mac developer environment setup

* Adjust formatting

* Add note about llvm

* Add note about iodbc

* Update README.md

change the install options for OpenSSL, since vcpkg is a preferred option

* Update README.md

remove the WiX Toolset v4 requirement

* Update README.md

add steps for the fix for ignite-odbc-tests.profraw error in README.

* [AD-517] Remove old properties + add new properties

* remove SSL settings and add TLS checkbox on the Configuration Window

* add comments for my own work

added some comments for my own convenience. Will remove later

* fix tls checkbox on Configuration Window

fixed by updating ChildId in tlsCheckBox = CreateCheckBox

* add TlsAllowInvalidHostnames checkbox and TLS CA edit to the Configuration Window

* Update configuration.cpp

add comment to illustrate plan on what to do for the configuration window

* Update dsn_configuration_window.cpp

bugfix to make tlsCheckBox and tlsAllowInvalidHostnamesCheckBox read into the saved values

* change defaultFetchSize to fetchSize in configuration.h

* change Default DSN name to DocumentDB DSN

* add App Name, Fetch Size, Read Preference, and login timeout to configuration window

* [AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h

Files that had the change connection_string_parser.cpp, connection_string_parser.h, dsn_config.cpp, batch_query.cpp, data_query.cpp.

* [AD-522] save read preference settings

* [AD-522] remove commented out code

* [AD-522] Implement replicaSet and retryReads on Configuration Window

* [AD-517] Re-enable unit tests - WIP -  still need to cleanup

* [AD-522] add space to code lines for format consistency in configuration_window.h

* Add more unit tests

* Remove extra file

* [AD-522] Add small letter case to keep format consistency in dsn_configuration_window.h

 Add small letter case to keep format consistency in dsn_configuration_window.h
fixed one typo (Create authentication settings group box)

* Remove redundant declaration

* [AD-522] add variable definitions for SSH tunnel settings for config UI

* [AD-522] add function definition for SSH Tunnel

added SSH User, SSH Host. SSH Strict Host Key Checking, and SSH Known Hosts File onto the UI. However, the code to save the written values would be done in later commits.

* [AD-522] code draft for configuration.cpp

add draft variable definition to Enable ssh tunnel boolean value

* Revert "change defaultFetchSize to fetchSize in configuration.h"

This reverts commit 3f58b3995262c22dc6b411cd9e41a6ea38112844.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"

This reverts commit ae1a6047bbab9b3dc8c7869b70c8d4499c6cc7cf.

* [AD-517] * Change the C++ version to use to compile.

* [AD-522] change fetchSize to defaultFetchSize on configuration window for consistency with JDBC driver

* [AD-517] * Changed checks.yml so that it doesn't fail on code review errors.

* Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h""

This reverts commit 52eef4931e022553633b0c7f5f535b26e3b4f940.

* [AD-522] make TLS allow invalid hostnames checkbox enabled only when tls Check box is checked

* Revert "Revert "[AD-522] bugfix - change DefaultFetchSize to fetchSize in all related files to be consistent with configuration.h"""

This reverts commit 686aa59e7a473a4aa88e7c1e5f32264c3c71a40c.

* Improvements from review

* Updated comments

* [AD-522] save SSH values for re-read, make settings window into 2 columns

Make ssl and additional settings groups to be on the right side of the column on the configuration window. This is subject to change later.
I created the function
void DsnConfigurationWindow::RetrieveSshParameters(config::Configuration& cfg) const
to save SSH values.
The width value in the DsnConfigurationWindow constructor is doubled from 360 to 720 and added the margin value. The margins currently look imbalanced on the settings box, and will be fixed in later commits.
Make Ok button and Cancel buttons aligned with the right column
bugfix - allow the SSH strict host checking checkbox to be checked on and off by adding the case ChildId::SSH_STRICT_HOST_KEY_CHECKING_CHECK_BOX definition.

* Removed includes no longer being used in configuration.h

* Some formatting improvements

* [Ad-522] add sshEnable variable in DSN config

- added sshEnable variable definition and getter/setter for sshEnable.
- added code for parsing sshEnable in the connection string parser

* [AD-522] change from GetSshEnable to IsSshEnable for consistency

* [AD-522] comment out deprecated readPreference variable

start on transitioning from readPreferenceEdit to readPreference combo box

* [AD-522] add SSH enable checkbox, SSH private key passphrase, and SSH private key file

* add SSH Enable variable in configuration.h and configuration.cpp
* add SSH checkbox in SSH group setting
* add SSH private key file edit in SSH group setting
* add SSH private key pass phrase in SSH group setting
** SSH private key passphrase label requires double the row height due to the label being long.
* make SSH setting items disabled/enabled as SSH enable checkbox is unchecked/checked
* save SSH variables to configuration when Ok button is pressed.

* [AD-522] read_preference.h fix

* add guards to read_preference.h fix
* include read_preference.h in dsn_configuration_window.cpp
* add draft code for read preference in dsn_configuration_window.cpp

* [AD-522] update fields in configuration window

* modified order of fields in the configuration window.
- Retry reads checkbox is now in the first row under "Additional Settings".
- SSH Strict host key check is now in the last row under "Internal SSH Tunnel Settings"
- Allow invalid hostnames checkbox now is in 2nd row under "TLS/SSL settings"
* added warning sentences for Allow invalid hostnames checkbox and SSH strict host key check

* Improvements from code review + address some warnings

* Change connection _test to use hostname key instead of address

* Change connection_test to use databse key instead of schema key

* [AD-522] implement read Preference

* add SpaceToUnderscore function
* implement read Preference in Config window and save the value

* Attempt to fix windows 32 build

* [AD-522] refactor dsn_configuration_window.cpp

refactor code format; remove spaces and  unnecessary comments

* [AD-522] fix config window margins

now the config window is symmetric

* Fix formatting

* [AD-522] add HasText() function to window.h

* previously, the definition of HasText was mistakenly committed in commit ff1729d46da780a3ed5654211487da066849ae95.
* add header of HasText() to resolve building errors in origin
* update HasText() function to make code simpler

* [AD-522] make "rs0" the default value of replicaSet

* [AD-522] implement database, hostname, port fields. And disable ok button unless all required fields are filled

* implement database, hostname, port fields.
* disable ok button unless all required fields (database, hostname, port, username, password) are filled
* added boolean created to indicate whether the configuration window has been created. If has, then check for disabling/enabling the Ok button

* [AD-522] rename SSH Known Hosts File label for clarity

* [AD-522] refactor logs for retrieving TSL settings

Make the sentences align

* [AD-522] rename TLS CA File label for clarity

* change label length to the same label length as connection settings group

* [AD-522] move authorization setting fields to connection fields

reason: only username and password are authorization settings, the rest are not. We chose to put username, password in the connections group because all fields in the connections group are required.

* [AD-522] bugfix-comment out address field related code in RetrieveConnectionParameters

* [AD-522] rename sslSettings to tlsSettings and add comment for connection settings group

* [AD-522] remove protocol version from config window

* [AD-522] bug fix sshKnownHostsFile not saved when Ok button is pressed

* [AD-522] remove commented out #include headers

* [AD-522] disable  SSH Known Hosts File edit when SSH Strict Host Key Check check box is unchecked

* move SSH Strict Host Key Checking check box above SSH Known Hosts File edit in the config window

* [AD-522] refactor - remove commented out header code

* [AD-522] add comments in configuration.cpp for planning

* modify commented out example code in dsn_configuration_window.cpp for clarity

* [AD-522] change from SSL to TLS for consistency

* SSL_SETTINGS_GROUP_BOX is changed to TLS_SETTINGS_GROUP_BOX

* [AD-522] remove commented out code

Removed commented out code:
* RetrieveAuthParameters
* CreateAuthSettingsGroup
* CreateAdditionalSettingsGroup function and CreateSslSettingsGroup function for 1 column window
* protocol version - related code
* authSettingsGroupBox code

* [AD-522] remove std::auto_ptr<Window> authSettingsGroupBox;

* [AD-522] remove address field auto pointer initialization

* [AD-522] remove address field from config window constructor

* [AD-522] refactor - remove unneeded commented out code in HasText

* [AD-522] refactor - remove white spaces and update comment

* [AD-522] debug scan_method.h

* SpaceToUnderscore is called in scan_method.cpp to make reads better
* added guards to scan_method.h

* [AD-522] implement Schema group settings box

* fixed bug in dsn_config.cpp to save scanLimit correctly

* [AD-522] update readPreference default value to unknown

* removed unneeded commented out code
* removed unnecessary code to get string value on readPreference

* [AD-522] refactor - remove unnecessary comments

* [AD-522] adjust window size and additional settings group label size

* additional settings group label size is now the same as other settings group in the same column

* Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window"

This reverts commit b4a52d49eba77b8b409878c6d5e1b9ef2bba1750, reversing
changes made to b4d20ff9c2a39de0fe89de14fd40db107b2e98b4.

* [AD-522] keyboard user interface design + disable DSN empty strimg warning dialog

* make cursor go to checkboxes on the Config window and not skip them when tab key is pressed
* when DSN field is empty, Ok Button is disabled
* make default replicaSet value empty string (default is disable repliaSet)
* refactor - removed unneeded comments

* [AD-522] add end_point header to resolve build errors

end_point related code still exist in connection.cpp, so I readded the header for end_point

* Revert "Revert "Merge branch 'develop' into alinaliBQ/AD-522/config_window""

This reverts commit 42dd752b23be78058f4b19c5386ac3f61281ff91.

* [AD-522] resolve errors after merging develop branch

* GetAddresses() is deprecated, replaced it with GetHostname() and GetTcpPort() to get hostname and port number, respectively.
* replaced GetSchema() with GetSchemaName()
* removed commented out code
* refactor with dsn_configuration_window.cpp

* [AD-512] Resolve issue with missing include file.

* [AD-522] make BoolParseResult recognizable

* [AD-522] fix build errors after develop branch merge

* update schema checkbox string
* make edit row height single
* update SetTcpPort to SetPort etc
* define default value for sshEnable

* [AD-522] enable encrypt password for ssh private key passphrase

* modify refresh schema checkbox string to fit better
* remove log message for ssh private key passphrase to increase security

* [AD-521] add comments and notes for starting AD-521

* [AD-509] update readMe to include directions about saving Java bin and server directories.

* reason: ODBC JNI calls have a dependency on `jvm.dll`, as a result, the ODBC driver cannot operate properly unless the Java bin and server directories are included in the path.

* [AD-522] reduce space between ssh private key passphrase and the checkbox below

* [AD-521] define constants for Java GetSshLocalPort method call

* [AD-521] integrate code review feedback from Andie

* refactors with comment changes and log changes

* [AD-521] refactor code

* make open brace bracket start on new line for JVMException
* remove excess space

* [AD-427] Tracer Code - Limited Capability to load metadata - work-in-progress.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-427] Fix Windows build.

* [AD-522] remove space and add new line at the end of enum types

* [AD-522] add new lines at the end of Enum type files

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] add changes for Java.cpp from Bruce's AD-427 branch

* those changes are not included in the previous merge, and are now added

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-427] Fix Mac build.

* [AD-521] JNI wrapper calls to iSshTunnelActive and getSshLocalPort

* some draft comments are left to be cleaned up

* [AD-521] debug getSshLocalPort

* change function type signature from optional to int
* refactor - remove comments

* [AD-521] change return value in getSshLocalPort from boolean to a 0

* try to fix access memory issue in TestDriverManagerGetConnection

* [AD-522] resolve build errors after merge

* fix bug for schema name not correctly loaded on the config window
* removed unnecessary headers

* [AD-427] Added ResultSet.next and ResultSet.GetString()

* [AD-522] address code review comments

* change to enum class type for read_preference.h and scan_method.h
* change the way enum class objects are read
* add static cast to enum types so SetSelection function can work with it
* refactor - removed unnecessary comments
* refactor - changes code doc in connection_string_parser.h

* [AD-521] implement tests for JNI wrapper code

* test for TestDocumentDbConnectionGetSshTunnelPortSshTunnelNotActive is not yet active, need to be enabled when we can get external SSH tunnel working.
* bug fix: re-implemented DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.
connection.Get()->GetRef() is passed as first parameter because jobject is required for CallIntMethod and CallBooleanMethod.
* better JNI wrapper code is needed in the future so warnings/errors pop up when we pass jobject instead of jclass to the methods.

* [AD-521] refactor - remove comments and commented out code

* [AD-589] implement JNI method call for GetDatabaseMetadata

* define the method constant for DocumentDbConnection.getDatabaseMetadata()
* create JNI wrapper function for DocumentDbConnection.getMetaData

* [AD-589] implement unit test for DocumentDbConnection.getMetaData

* [AD-521] add calls to AutoCloseConnection in unit tests

* pass & errInfo instead of * errInfo in DocumentDbConnectionGetSshLocalPort and DocumentDbConnectionIsSshTunnelActive.

* [AD-521] remove unnecessary comment

* [AD-589] fix merge issues

* I missed this part of code when I was resolving the merge conflicts. Now they are corrected

* [AD-589] update getMetaData JNI wrapper code to pass &errInfo

* implement unit test for getMetaData

* [AD-589] implement JNI wrapper for DocumentDbDatabaseSchemaMetadataGetSchemaName

* implement Java class for
* define constant for DocumentDbDatabaseSchemaMetadata…
alexey-temnikov pushed a commit that referenced this pull request Jan 14, 2023
…ation-and-dsn

AT-829/AT-864/AT-874 - Modify sample application for Linux, Fix DSN issues on Linux, Fix driver warnings and enable all warnings
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants