@@ -53,16 +53,8 @@ func (conn *redshiftDataConn) Begin() (driver.Tx, error) {
5353
5454func (conn * redshiftDataConn ) QueryContext (ctx context.Context , query string , args []driver.NamedValue ) (driver.Rows , error ) {
5555 params := & redshiftdata.ExecuteStatementInput {
56- Sql : nullif (query ),
57- }
58- if len (args ) > 0 {
59- params .Parameters = make ([]types.SqlParameter , 0 , len (args ))
60- for _ , arg := range args {
61- params .Parameters = append (params .Parameters , types.SqlParameter {
62- Name : aws .String (arg .Name ),
63- Value : aws .String (fmt .Sprintf ("%v" , arg .Value )),
64- })
65- }
56+ Sql : nullif (query ),
57+ Parameters : convertArgsToParameters (args ),
6658 }
6759 p , output , err := conn .executeStatement (ctx , params )
6860 if err != nil {
@@ -74,16 +66,8 @@ func (conn *redshiftDataConn) QueryContext(ctx context.Context, query string, ar
7466
7567func (conn * redshiftDataConn ) ExecContext (ctx context.Context , query string , args []driver.NamedValue ) (driver.Result , error ) {
7668 params := & redshiftdata.ExecuteStatementInput {
77- Sql : nullif (query ),
78- }
79- if len (args ) > 0 {
80- params .Parameters = make ([]types.SqlParameter , 0 , len (args ))
81- for _ , arg := range args {
82- params .Parameters = append (params .Parameters , types.SqlParameter {
83- Name : aws .String (arg .Name ),
84- Value : aws .String (fmt .Sprintf ("%v" , arg .Value )),
85- })
86- }
69+ Sql : nullif (query ),
70+ Parameters : convertArgsToParameters (args ),
8771 }
8872 _ , output , err := conn .executeStatement (ctx , params )
8973 if err != nil {
@@ -92,6 +76,20 @@ func (conn *redshiftDataConn) ExecContext(ctx context.Context, query string, arg
9276 return newResult (output ), nil
9377}
9478
79+ func convertArgsToParameters (args []driver.NamedValue ) []types.SqlParameter {
80+ if len (args ) == 0 {
81+ return nil
82+ }
83+ params := make ([]types.SqlParameter , 0 , len (args ))
84+ for _ , arg := range args {
85+ params = append (params , types.SqlParameter {
86+ Name : aws .String (coalesce (nullif (arg .Name ), aws .String (fmt .Sprintf ("%d" , arg .Ordinal )))),
87+ Value : aws .String (fmt .Sprintf ("%v" , arg .Value )),
88+ })
89+ }
90+ return params
91+ }
92+
9593func (conn * redshiftDataConn ) executeStatement (ctx context.Context , params * redshiftdata.ExecuteStatementInput ) (* redshiftdata.GetStatementResultPaginator , * redshiftdata.DescribeStatementOutput , error ) {
9694 debugLogger .Printf ("query: %s" , coalesce (params .Sql ))
9795 params .ClusterIdentifier = conn .cfg .ClusterIdentifier
0 commit comments