Repository: GlareDB/glaredb (language: python)

Issue:
Chore: Make argument specification consistent
## Description
Currently, we have two different ways of specifying arguments/options in GlareDB, `=` and `=>`. The following example fails with `=` and works with `=>`

```
SELECT * FROM read_parquet('s3://glaredb-sandbox/f55363e2587849bcb25c057be706c69d-0.parquet',
    my_aws_creds,
    region='us-east-2');
```

But this example only works with `=` and fails with `=>`
```
CREATE CREDENTIALS my_aws_creds PROVIDER aws
     OPTIONS (
         access_key_id = 'my_key',
         secret_access_key = 'my_secret_key'
     );
```

Ideally, we would be able to use `=` in all of these cases. If there are shortcomings with the parser, we could instead use `=>` in all cases. But having these be inconsistent is confusing.


Discussion / hints:

Fix patch:
diff --git a/crates/parser/src/lib.rs b/crates/parser/src/lib.rs
index 01f9f9de2..5eb982089 100644
--- a/crates/parser/src/lib.rs
+++ b/crates/parser/src/lib.rs
@@ -895,8 +895,12 @@ impl<'a> GlareDbParser<'a> {
             // normalize it.
             let key = self.parser.parse_identifier(false)?.value;
 
-            // Optional `=`
-            let _ = self.parser.consume_token(&Token::Eq);
+            // Optional `=` or `=>`
+            for token in [Token::Eq, Token::RArrow] {
+                if self.parser.consume_token(&token) {
+                    break;
+                }
+            }
 
             let value = self.parse_options_value()?;
 


Test patch:
diff --git a/testdata/sqllogictests/credential.slt b/testdata/sqllogictests/credential.slt
index 84438575d..98c7d7340 100644
--- a/testdata/sqllogictests/credential.slt
+++ b/testdata/sqllogictests/credential.slt
@@ -28,6 +28,11 @@ CREATE OR REPLACE CREDENTIALS slt_cred PROVIDER debug
 	OPTIONS (table_type = 'never_ending')
 	COMMENT 'creds-for-slt-2';
 
+statement ok
+CREATE OR REPLACE CREDENTIALS slt_cred PROVIDER debug
+	OPTIONS (table_type => 'never_ending')
+	COMMENT 'creds-for-slt-2';
+
 query TT rowsort
 SELECT credentials_name, comment
 	FROM glare_catalog.credentials
diff --git a/testdata/sqllogictests/xlsx.slt b/testdata/sqllogictests/xlsx.slt
index 5cabb7075..bbdec689a 100644
--- a/testdata/sqllogictests/xlsx.slt
+++ b/testdata/sqllogictests/xlsx.slt
@@ -66,6 +66,9 @@ create external table multi_report from excel options(location='./testdata/xlsx/
 statement ok
 create external table quarter_projection from excel options(location='./testdata/xlsx/multiple_sheets.xlsx', sheet_name='cost_projection', has_header='true');
 
+statement ok
+create external table arrow_options from excel options(location=>'./testdata/xlsx/multiple_sheets.xlsx', sheet_name='cost_projection', has_header='true');
+
 statement ok
 create external table basic_report from excel options(location='./testdata/xlsx/userdata1.xlsx', has_header='false');
 
@@ -98,6 +101,15 @@ select "Resources", "Cost", "Revenue" from quarter_projection;
 4 40 400
 5 50 500
 
+query
+select "Resources", "Cost", "Revenue" from arrow_options;
+----
+1 10 100
+2 20 200
+3 30 300
+4 40 400
+5 50 500
+
 statement ok
 drop table basic_report;
 
diff --git a/testdata/sqllogictests_bigquery/large_table.slt b/testdata/sqllogictests_bigquery/large_table.slt
index 337622595..be3430e2e 100644
--- a/testdata/sqllogictests_bigquery/large_table.slt
+++ b/testdata/sqllogictests_bigquery/large_table.slt
@@ -10,4 +10,14 @@ CREATE EXTERNAL TABLE large_table
 		table_id = 'bikeshare_trips'
 	);
 
+statement ok
+CREATE EXTERNAL TABLE large_table_arrow_options
+	FROM bigquery
+	OPTIONS (
+		service_account_key => '${GCP_SERVICE_ACCOUNT_KEY}',
+		project_id => '${GCP_PROJECT_ID}',
+		dataset_id => '${BIGQUERY_DATASET_ID}',
+		table_id => 'bikeshare_trips'
+	);
+
 include ${PWD}/testdata/sqllogictests_datasources_common/include/large_table.slti
diff --git a/testdata/sqllogictests_iceberg/s3.slt b/testdata/sqllogictests_iceberg/s3.slt
index 0f61a2410..61bd928f4 100644
--- a/testdata/sqllogictests_iceberg/s3.slt
+++ b/testdata/sqllogictests_iceberg/s3.slt
@@ -8,6 +8,14 @@ CREATE CREDENTIALS aws_creds
         secret_access_key = '${AWS_SECRET_ACCESS_KEY}',
 	);
 
+statement ok
+CREATE CREDENTIALS aws_creds_arrow_specification
+	PROVIDER aws
+	OPTIONS (
+        access_key_id => '${AWS_ACCESS_KEY_ID}',
+        secret_access_key => '${AWS_SECRET_ACCESS_KEY}',
+	);
+
 
 # iceberg_snapshots
 
diff --git a/testdata/sqllogictests_postgres/basic.slt b/testdata/sqllogictests_postgres/basic.slt
index 2b5cdaa17..f500b3e16 100644
--- a/testdata/sqllogictests_postgres/basic.slt
+++ b/testdata/sqllogictests_postgres/basic.slt
@@ -9,4 +9,13 @@ CREATE EXTERNAL TABLE basic
 		table = 'bikeshare_stations'
 	);
 
+statement ok
+CREATE EXTERNAL TABLE basic_arrow_specification
+	FROM postgres
+	OPTIONS (
+		connection_string => '${POSTGRES_CONN_STRING}',
+		schema => 'public',
+		table => 'bikeshare_stations'
+	);
+
 include ${PWD}/testdata/sqllogictests_datasources_common/include/basic.slti