@@ -417,7 +417,7 @@ static int firebird_alloc_prepare_stmt(pdo_dbh_t *dbh, const char *sql, size_t s
417
417
}
418
418
419
419
/* prepare the statement */
420
- if (isc_dsql_prepare (H -> isc_status , & H -> tr , s , 0 , new_sql , PDO_FB_DIALECT , out_sqlda )) {
420
+ if (isc_dsql_prepare (H -> isc_status , & H -> tr , s , 0 , new_sql , H -> sql_dialect , out_sqlda )) {
421
421
RECORD_ERROR (dbh );
422
422
efree (new_sql );
423
423
return 0 ;
@@ -624,6 +624,7 @@ static int pdo_firebird_handle_factory(pdo_dbh_t *dbh, zval *driver_options) /*
624
624
{ "dbname" , NULL , 0 },
625
625
{ "charset" , NULL , 0 },
626
626
{ "role" , NULL , 0 },
627
+ { "dialect" , "3" , 0 },
627
628
{ "user" , NULL , 0 },
628
629
{ "password" , NULL , 0 }
629
630
};
@@ -632,14 +633,14 @@ static int pdo_firebird_handle_factory(pdo_dbh_t *dbh, zval *driver_options) /*
632
633
633
634
pdo_firebird_db_handle * H = dbh -> driver_data = pecalloc (1 ,sizeof (* H ),dbh -> is_persistent );
634
635
635
- php_pdo_parse_data_source (dbh -> data_source , dbh -> data_source_len , vars , 5 );
636
+ php_pdo_parse_data_source (dbh -> data_source , dbh -> data_source_len , vars , 6 );
636
637
637
- if (!dbh -> username && vars [3 ].optval ) {
638
- dbh -> username = pestrdup (vars [3 ].optval , dbh -> is_persistent );
638
+ if (!dbh -> username && vars [4 ].optval ) {
639
+ dbh -> username = pestrdup (vars [4 ].optval , dbh -> is_persistent );
639
640
}
640
641
641
- if (!dbh -> password && vars [4 ].optval ) {
642
- dbh -> password = pestrdup (vars [4 ].optval , dbh -> is_persistent );
642
+ if (!dbh -> password && vars [5 ].optval ) {
643
+ dbh -> password = pestrdup (vars [5 ].optval , dbh -> is_persistent );
643
644
}
644
645
645
646
do {
@@ -660,6 +661,11 @@ static int pdo_firebird_handle_factory(pdo_dbh_t *dbh, zval *driver_options) /*
660
661
}
661
662
}
662
663
664
+ H -> sql_dialect = PDO_FB_DIALECT ;
665
+ if (vars [3 ].optval ) {
666
+ H -> sql_dialect = atoi (vars [3 ].optval );
667
+ }
668
+
663
669
/* fire it up baby! */
664
670
if (isc_attach_database (H -> isc_status , 0 , vars [0 ].optval , & H -> db ,(short )(dpb - dpb_buffer ), dpb_buffer )) {
665
671
break ;
0 commit comments