@@ -4897,7 +4897,7 @@ public void testMetadataUnknownTypes() {
48974897 }
48984898
48994899 @ Test
4900- public void testStatementWithIUnnamedParametersParameter () {
4900+ public void testStatementWithUnnamedParameters () {
49014901 DatabaseClient client =
49024902 spanner .getDatabaseClient (DatabaseId .of (TEST_PROJECT , TEST_INSTANCE , TEST_DATABASE ));
49034903
@@ -4914,6 +4914,126 @@ public void testStatementWithIUnnamedParametersParameter() {
49144914 }
49154915 }
49164916
4917+ @ Test
4918+ public void testStatementWithUnnamedParametersAndSingleLineComment () {
4919+ DatabaseClient client =
4920+ spanner .getDatabaseClient (DatabaseId .of (TEST_PROJECT , TEST_INSTANCE , TEST_DATABASE ));
4921+
4922+ Statement statement =
4923+ client
4924+ .getStatementFactory ()
4925+ .withUnnamedParameters (
4926+ "-- comment about ? in the statement\n select id from test where b=?" , true );
4927+ Statement generatedStatement =
4928+ Statement .newBuilder ("-- comment about ? in the statement\n select id from test where b=@p1" )
4929+ .bind ("p1" )
4930+ .to (true )
4931+ .build ();
4932+ mockSpanner .putStatementResult (StatementResult .query (generatedStatement , SELECT1_RESULTSET ));
4933+
4934+ try (ResultSet resultSet = client .singleUse ().executeQuery (statement )) {
4935+ assertTrue (resultSet .next ());
4936+ assertEquals (1L , resultSet .getLong (0 ));
4937+ assertFalse (resultSet .next ());
4938+ }
4939+ }
4940+
4941+ @ Test
4942+ public void testStatementWithUnnamedParametersAndSingleLineCommentWithHash () {
4943+ DatabaseClient client =
4944+ spanner .getDatabaseClient (DatabaseId .of (TEST_PROJECT , TEST_INSTANCE , TEST_DATABASE ));
4945+
4946+ Statement statement =
4947+ client
4948+ .getStatementFactory ()
4949+ .withUnnamedParameters (
4950+ "# comment about ? in the statement\n select id from test where b=?" , true );
4951+ Statement generatedStatement =
4952+ Statement .newBuilder ("# comment about ? in the statement\n select id from test where b=@p1" )
4953+ .bind ("p1" )
4954+ .to (true )
4955+ .build ();
4956+ mockSpanner .putStatementResult (StatementResult .query (generatedStatement , SELECT1_RESULTSET ));
4957+
4958+ try (ResultSet resultSet = client .singleUse ().executeQuery (statement )) {
4959+ assertTrue (resultSet .next ());
4960+ assertEquals (1L , resultSet .getLong (0 ));
4961+ assertFalse (resultSet .next ());
4962+ }
4963+ }
4964+
4965+ @ Test
4966+ public void testStatementWithUnnamedParametersAndMultiLineComment () {
4967+ DatabaseClient client =
4968+ spanner .getDatabaseClient (DatabaseId .of (TEST_PROJECT , TEST_INSTANCE , TEST_DATABASE ));
4969+
4970+ Statement statement =
4971+ client
4972+ .getStatementFactory ()
4973+ .withUnnamedParameters (
4974+ "# comment about ? in the statement\n select id from test\n /* This is a ? comment \n about ? */ \n where b=? # this is a inline command about ?" ,
4975+ true );
4976+ Statement generatedStatement =
4977+ Statement .newBuilder (
4978+ "# comment about ? in the statement\n select id from test\n /* This is a ? comment \n about ? */ \n where b=@p1 # this is a inline command about ?" )
4979+ .bind ("p1" )
4980+ .to (true )
4981+ .build ();
4982+ mockSpanner .putStatementResult (StatementResult .query (generatedStatement , SELECT1_RESULTSET ));
4983+
4984+ try (ResultSet resultSet = client .singleUse ().executeQuery (statement )) {
4985+ assertTrue (resultSet .next ());
4986+ assertEquals (1L , resultSet .getLong (0 ));
4987+ assertFalse (resultSet .next ());
4988+ }
4989+ }
4990+
4991+ @ Test
4992+ public void testStatementWithUnnamedParametersAndStringLiteralWithQuestionMark () {
4993+ DatabaseClient client =
4994+ spanner .getDatabaseClient (DatabaseId .of (TEST_PROJECT , TEST_INSTANCE , TEST_DATABASE ));
4995+
4996+ Statement statement =
4997+ client
4998+ .getStatementFactory ()
4999+ .withUnnamedParameters ("select id from test where name = \" abc?\" AND b=?" , true );
5000+ Statement generatedStatement =
5001+ Statement .newBuilder ("select id from test where name = \" abc?\" AND b=@p1" )
5002+ .bind ("p1" )
5003+ .to (true )
5004+ .build ();
5005+ mockSpanner .putStatementResult (StatementResult .query (generatedStatement , SELECT1_RESULTSET ));
5006+
5007+ try (ResultSet resultSet = client .singleUse ().executeQuery (statement )) {
5008+ assertTrue (resultSet .next ());
5009+ assertEquals (1L , resultSet .getLong (0 ));
5010+ assertFalse (resultSet .next ());
5011+ }
5012+ }
5013+
5014+ @ Test
5015+ public void testStatementWithUnnamedParametersAndHint () {
5016+ DatabaseClient client =
5017+ spanner .getDatabaseClient (DatabaseId .of (TEST_PROJECT , TEST_INSTANCE , TEST_DATABASE ));
5018+
5019+ Statement statement =
5020+ client
5021+ .getStatementFactory ()
5022+ .withUnnamedParameters ("@{FORCE_INDEX=ABCDEF} select id from test where b=?" , true );
5023+ Statement generatedStatement =
5024+ Statement .newBuilder ("@{FORCE_INDEX=ABCDEF} select id from test where b=@p1" )
5025+ .bind ("p1" )
5026+ .to (true )
5027+ .build ();
5028+ mockSpanner .putStatementResult (StatementResult .query (generatedStatement , SELECT1_RESULTSET ));
5029+
5030+ try (ResultSet resultSet = client .singleUse ().executeQuery (statement )) {
5031+ assertTrue (resultSet .next ());
5032+ assertEquals (1L , resultSet .getLong (0 ));
5033+ assertFalse (resultSet .next ());
5034+ }
5035+ }
5036+
49175037 @ Test
49185038 public void testStatementWithBytesArrayParameter () {
49195039 Statement statement =
0 commit comments