[ 
https://issues.apache.org/jira/browse/GEODE-6640?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

xiaojian zhou updated GEODE-6640:
---------------------------------
    Description: 
{noformat}

      PdxInstance pdxEmployee1 =
          
ClusterStartupRule.getCache().createPdxInstanceFactory(Employee.class.getName())
              .writeString("id", "id1").writeString("name", 
"Emp1").writeInt("age", 55).create();

      String pdxkey1 = "pdxkey1";
      Region<Object, Object> region = 
ClusterStartupRule.getCache().getRegion(REGION_NAME);
      region.put(pdxkey1, pdxEmployee1);
      region.put("key1", new Employee("key1", "name1", 30));
      region.invalidate(pdxkey1);
      region.invalidate("key1");
      await().untilAsserted(() -> {
        assertThat(region.get(pdxkey1)).isNotNull();
        assertThat(region.get("key1")).isNotNull();
      });
{noformat}

  was:
{noformat}

If run following test, 
  @Test
  public void serverStartupSucceedsForPartitionedRegionAfterMappingIsCreated()
      throws Exception {
    createTable();
//    createPartitionRegionUsingGfsh();
    createRegionUsingGfsh();
    createJdbcDataSource();
    createMapping(REGION_NAME, DATA_SOURCE_NAME, true); // could be false

    server.invoke(() -> {
      final String key = "emp1";
      final java.sql.Date sqlDate = java.sql.Date.valueOf("1982-09-11");
      final Date jdkDate = new Date(sqlDate.getTime());
      PdxInstance testDateInput =
          
ClusterStartupRule.getCache().createPdxInstanceFactory(TestDate.class.getName())
              .writeString("id", "key1").writeDate(TestDate.DATE_FIELD_NAME, 
jdkDate).create();

      Region<Object, Object> region = 
ClusterStartupRule.getCache().getRegion(REGION_NAME);
      region.put(key, testDateInput);
      region.invalidate(key);
      Object entry = region.get(key);
      assertThat(entry).isNotNull();
    });

It will fail with 
        at 
org.apache.geode.test.dunit.rules.ClusterStartupRule$1.evaluate(ClusterStartupRule.java:146)
        at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)
        at org.junit.rules.RunRules.evaluate(RunRules.java:20)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
        at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
        at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
        at org.junit.rules.RunRules.evaluate(RunRules.java:20)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
        at 
com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
        at 
com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
        at 
com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
        at 
com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: org.apache.geode.connectors.jdbc.JdbcConnectorException: You have an 
error in your SQL syntax; check the manual that corresponds to your MySQL 
server version for the right syntax to use near 'WHERE `id` = 'emp1'' at line 1
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in 
your SQL syntax; check the manual that corresponds to your MySQL server version 
for the right syntax to use near 'WHERE `id` = 'emp1'' at line 1
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
        at com.mysql.jdbc.Util.getInstance(Util.java:408)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486)
        at 
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)
        at 
com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2079)
        at 
com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2013)
        at 
com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5104)
        at 
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1998)
        at 
com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
        at 
com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
        at 
org.apache.geode.connectors.jdbc.internal.SqlHandler.executeWriteStatement(SqlHandler.java:251)
        at 
org.apache.geode.connectors.jdbc.internal.SqlHandler.write(SqlHandler.java:235)
        at 
org.apache.geode.connectors.jdbc.JdbcWriter.writeEvent(JdbcWriter.java:85)
        at 
org.apache.geode.connectors.jdbc.JdbcWriter.beforeCreate(JdbcWriter.java:60)
        at 
org.apache.geode.internal.cache.SearchLoadAndWriteProcessor.doLocalWrite(SearchLoadAndWriteProcessor.java:878)
        at 
org.apache.geode.internal.cache.SearchLoadAndWriteProcessor.doNetWrite(SearchLoadAndWriteProcessor.java:209)
        at 
org.apache.geode.internal.cache.DistributedRegion.cacheWriteBeforePut(DistributedRegion.java:2638)
        at 
org.apache.geode.internal.cache.map.RegionMapPut.invokeCacheWriter(RegionMapPut.java:230)

{noformat}


        Summary: Need to add a integration test case to do put then get to 
region with Jdbc mapping  (was: put an entry to region with Jdbc mapping and 
get back fail with JdbcConnectorException)

> Need to add a integration test case to do put then get to region with Jdbc 
> mapping
> ----------------------------------------------------------------------------------
>
>                 Key: GEODE-6640
>                 URL: https://issues.apache.org/jira/browse/GEODE-6640
>             Project: Geode
>          Issue Type: Bug
>            Reporter: xiaojian zhou
>            Priority: Major
>
> {noformat}
>       PdxInstance pdxEmployee1 =
>           
> ClusterStartupRule.getCache().createPdxInstanceFactory(Employee.class.getName())
>               .writeString("id", "id1").writeString("name", 
> "Emp1").writeInt("age", 55).create();
>       String pdxkey1 = "pdxkey1";
>       Region<Object, Object> region = 
> ClusterStartupRule.getCache().getRegion(REGION_NAME);
>       region.put(pdxkey1, pdxEmployee1);
>       region.put("key1", new Employee("key1", "name1", 30));
>       region.invalidate(pdxkey1);
>       region.invalidate("key1");
>       await().untilAsserted(() -> {
>         assertThat(region.get(pdxkey1)).isNotNull();
>         assertThat(region.get("key1")).isNotNull();
>       });
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to