[ 
https://issues.apache.org/jira/browse/GEODE-2662?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15959481#comment-15959481
 ] 

Kevin Duling commented on GEODE-2662:
-------------------------------------

In {{DataCommandFunction.java}} at line 781 is the following code block:

{code}
  private static String pdxToJson(PdxInstance obj) {
    if (obj != null) {
      try {
        GfJsonObject json = new GfJsonObject();
        for (String field : obj.getFieldNames()) {
          Object fieldValue = obj.getField(field);
          if (fieldValue != null) {
            if (JsonUtil.isPrimitiveOrWrapper(fieldValue.getClass())) {
              json.put(field, fieldValue);
            } else {
              json.put(field, fieldValue.getClass());
            }
          }
        }
        return json.toString();
      } catch (GfJsonException e) {
        return null;
      }
    }
    return null;
  }
{code}

The issue here is the JSON that is being built for the first two objects lacks 
the phone number because that version of the object doesn't contain the field.  
When we get to the third object, the {{telephone}} field is created.

> Gfsh displays field value on wrong line!
> ----------------------------------------
>
>                 Key: GEODE-2662
>                 URL: https://issues.apache.org/jira/browse/GEODE-2662
>             Project: Geode
>          Issue Type: Bug
>          Components: gfsh
>            Reporter: Eitan Suez
>
> scenario:
> start a locator, a server
> write a client that stores several records of a given type, using pdx 
> serialization
> modify the type in question by adding a field
> write one more record to gemfire, populating all fields, including the new 
> field
> invoke a gfsh query command "select * from /<Region>"
> the new field value will display always on the first line of the result set, 
> not on the line associated with the object it actually belongs to.
> example:
> Customer
>  firstName, lastName
> write a customer object:
>  John Doe
> now modify Customer, add telephoneNumber
>  write another customer object:
> Sam Smith, 512.333.4444
> now run:
> query --query="select c from /Customer c"
> will print:
> firstName | lastName | telephoneNumber
> --------- | -------- | ---------------
> John      | Doe      | 512.333.4444
> Sam       | Smith    | null
> even though the query "select c from /Customer c where c.firstName = 'Sam'" 
> clearly shows the phone number is associated with sam.
> this bug has existed in gemfire at least since v8 and verified to still exist 
> in latest version 9.0.1



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to