Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] incorrect conversion of batch insertion in Datastore #875

Closed
dg3feiko opened this issue Sep 20, 2015 · 2 comments
Closed

[Bug] incorrect conversion of batch insertion in Datastore #875

dg3feiko opened this issue Sep 20, 2015 · 2 comments
Assignees
Labels
api: datastore Issues related to the Datastore API. type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns.

Comments

@dg3feiko
Copy link

Env

Node: 2.3.3
gcloud: 0.21.0

Problem

for single insert

var res;

        data = [
            {
                name: "foo",
                value: {
                    bar: [
                        {hello: 1},
                        {hello: 2}
                    ]
                }
            }
        ];

        //save to datastore
        res = yield dataset.saveAsync([
                {
                    key: dataset.key({
                        path: ['MyKind', "123"]
                    }),
                    data: data
                },

            ]
        );

        res = yield dataset.getAsync(
            dataset.key(['MyKind', "123"])
        );

        console.log(JSON.stringify(res, null, 2));

output

{
  "key": {
    "path": [
      "MyKind",
      123
    ]
  },
  "data": {
    "foo": {
      "bar": [
        {
          "hello": 1
        },
        {
          "hello": 2
        }
      ]
    }
  }
}

but for multiple inserts

var res;

        data = [
            {
                name: "foo",
                value: {
                    bar: [
                        {hello: 1},
                        {hello: 2}
                    ]
                }
            }
        ];

        //save to datastore
        res = yield dataset.saveAsync([
                {
                    key: dataset.key({
                        path: ['MyKind', "123"]
                    }),
                    data: data
                },
                {
                    key: dataset.key({
                        path: ['MyKind', "234"]
                    }),
                    data: data
                }
            ]
        );

        res = yield dataset.getAsync(
            dataset.key(['MyKind', "123"])
        );

        console.log(JSON.stringify(res, null, 2));

the output is

{
  "key": {
    "path": [
      "MyKind",
      123
    ]
  },
  "data": {
    "foo": {
      "entity_value": {
        "property": [
          {
            "name": "bar",
            "value": {
              "list_value": [
                {
                  "entity_value": {
                    "property": [
                      {
                        "name": "hello",
                        "value": {
                          "integer_value": 1
                        }
                      }
                    ]
                  },
                  "indexed": false
                },
                {
                  "entity_value": {
                    "property": [
                      {
                        "name": "hello",
                        "value": {
                          "integer_value": 2
                        }
                      }
                    ]
                  },
                  "indexed": false
                }
              ]
            }
          }
        ]
      },
      "indexed": false
    }
  }
}
@dg3feiko
Copy link
Author

for single insert
the raw request body is

{
    "mutation": {
        "insert": [],
        "update": [],
        "upsert": [
            {
                "property": [
                    {
                        "name": "foo",
                        "value": {
                            "entity_value": {
                                "property": [
                                    {
                                        "name": "bar",
                                        "value": {
                                            "list_value": [
                                                {
                                                    "entity_value": {
                                                        "property": [
                                                            {
                                                                "name": "hello",
                                                                "value": {
                                                                    "integer_value": 1
                                                                }
                                                            }
                                                        ]
                                                    },
                                                    "indexed": false
                                                },
                                                {
                                                    "entity_value": {
                                                        "property": [
                                                            {
                                                                "name": "hello",
                                                                "value": {
                                                                    "integer_value": 2
                                                                }
                                                            }
                                                        ]
                                                    },
                                                    "indexed": false
                                                }
                                            ]
                                        }
                                    }
                                ]
                            },
                            "indexed": false
                        }
                    }
                ],
                "key": {
                    "path_element": [
                        {
                            "kind": "MyKind",
                            "id": "123"
                        }
                    ]
                }
            }
        ],
        "insert_auto_id": []
    }
}

for multiple one
the body is

{
    "mutation": {
        "insert": [],
        "update": [],
        "upsert": [
            {
                "property": [
                    {
                        "name": "foo",
                        "value": {
                            "entity_value": {
                                "property": [
                                    {
                                        "name": "entity_value",
                                        "value": {
                                            "entity_value": {
                                                "property": [
                                                    {
                                                        "name": "property",
                                                        "value": {
                                                            "list_value": [
                                                                {
                                                                    "entity_value": {
                                                                        "property": [
                                                                            {
                                                                                "name": "name",
                                                                                "value": {
                                                                                    "string_value": "bar"
                                                                                }
                                                                            },
                                                                            {
                                                                                "name": "value",
                                                                                "value": {
                                                                                    "entity_value": {
                                                                                        "property": [
                                                                                            {
                                                                                                "name": "list_value",
                                                                                                "value": {
                                                                                                    "list_value": [
                                                                                                        {
                                                                                                            "entity_value": {
                                                                                                                "property": [
                                                                                                                    {
                                                                                                                        "name": "entity_value",
                                                                                                                        "value": {
                                                                                                                            "entity_value": {
                                                                                                                                "property": [
                                                                                                                                    {
                                                                                                                                        "name": "property",
                                                                                                                                        "value": {
                                                                                                                                            "list_value": [
                                                                                                                                                {
                                                                                                                                                    "entity_value": {
                                                                                                                                                        "property": [
                                                                                                                                                            {
                                                                                                                                                                "name": "name",
                                                                                                                                                                "value": {
                                                                                                                                                                    "string_value": "hello"
                                                                                                                                                                }
                                                                                                                                                            },
                                                                                                                                                            {
                                                                                                                                                                "name": "value",
                                                                                                                                                                "value": {
                                                                                                                                                                    "entity_value": {
                                                                                                                                                                        "property": [
                                                                                                                                                                            {
                                                                                                                                                                                "name": "integer_value",
                                                                                                                                                                                "value": {
                                                                                                                                                                                    "integer_value": 1
                                                                                                                                                                                }
                                                                                                                                                                            }
                                                                                                                                                                        ]
                                                                                                                                                                    },
                                                                                                                                                                    "indexed": false
                                                                                                                                                                }
                                                                                                                                                            }
                                                                                                                                                        ]
                                                                                                                                                    },
                                                                                                                                                    "indexed": false
                                                                                                                                                }
                                                                                                                                            ]
                                                                                                                                        }
                                                                                                                                    }
                                                                                                                                ]
                                                                                                                            },
                                                                                                                            "indexed": false
                                                                                                                        }
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "name": "indexed",
                                                                                                                        "value": {
                                                                                                                            "boolean_value": false
                                                                                                                        }
                                                                                                                    }
                                                                                                                ]
                                                                                                            },
                                                                                                            "indexed": false
                                                                                                        },
                                                                                                        {
                                                                                                            "entity_value": {
                                                                                                                "property": [
                                                                                                                    {
                                                                                                                        "name": "entity_value",
                                                                                                                        "value": {
                                                                                                                            "entity_value": {
                                                                                                                                "property": [
                                                                                                                                    {
                                                                                                                                        "name": "property",
                                                                                                                                        "value": {
                                                                                                                                            "list_value": [
                                                                                                                                                {
                                                                                                                                                    "entity_value": {
                                                                                                                                                        "property": [
                                                                                                                                                            {
                                                                                                                                                                "name": "name",
                                                                                                                                                                "value": {
                                                                                                                                                                    "string_value": "hello"
                                                                                                                                                                }
                                                                                                                                                            },
                                                                                                                                                            {
                                                                                                                                                                "name": "value",
                                                                                                                                                                "value": {
                                                                                                                                                                    "entity_value": {
                                                                                                                                                                        "property": [
                                                                                                                                                                            {
                                                                                                                                                                                "name": "integer_value",
                                                                                                                                                                                "value": {
                                                                                                                                                                                    "integer_value": 2
                                                                                                                                                                                }
                                                                                                                                                                            }
                                                                                                                                                                        ]
                                                                                                                                                                    },
                                                                                                                                                                    "indexed": false
                                                                                                                                                                }
                                                                                                                                                            }
                                                                                                                                                        ]
                                                                                                                                                    },
                                                                                                                                                    "indexed": false
                                                                                                                                                }
                                                                                                                                            ]
                                                                                                                                        }
                                                                                                                                    }
                                                                                                                                ]
                                                                                                                            },
                                                                                                                            "indexed": false
                                                                                                                        }
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "name": "indexed",
                                                                                                                        "value": {
                                                                                                                            "boolean_value": false
                                                                                                                        }
                                                                                                                    }
                                                                                                                ]
                                                                                                            },
                                                                                                            "indexed": false
                                                                                                        }
                                                                                                    ]
                                                                                                }
                                                                                            }
                                                                                        ]
                                                                                    },
                                                                                    "indexed": false
                                                                                }
                                                                            }
                                                                        ]
                                                                    },
                                                                    "indexed": false
                                                                }
                                                            ]
                                                        }
                                                    }
                                                ]
                                            },
                                            "indexed": false
                                        }
                                    },
                                    {
                                        "name": "indexed",
                                        "value": {
                                            "boolean_value": false
                                        }
                                    }
                                ]
                            },
                            "indexed": false
                        }
                    }
                ],
                "key": {
                    "path_element": [
                        {
                            "kind": "MyKind",
                            "id": "123"
                        }
                    ]
                }
            },
            {
                "property": [
                    {
                        "name": "foo",
                        "value": {
                            "entity_value": {
                                "property": [
                                    {
                                        "name": "entity_value",
                                        "value": {
                                            "entity_value": {
                                                "property": [
                                                    {
                                                        "name": "property",
                                                        "value": {
                                                            "list_value": [
                                                                {
                                                                    "entity_value": {
                                                                        "property": [
                                                                            {
                                                                                "name": "name",
                                                                                "value": {
                                                                                    "string_value": "bar"
                                                                                }
                                                                            },
                                                                            {
                                                                                "name": "value",
                                                                                "value": {
                                                                                    "entity_value": {
                                                                                        "property": [
                                                                                            {
                                                                                                "name": "list_value",
                                                                                                "value": {
                                                                                                    "list_value": [
                                                                                                        {
                                                                                                            "entity_value": {
                                                                                                                "property": [
                                                                                                                    {
                                                                                                                        "name": "entity_value",
                                                                                                                        "value": {
                                                                                                                            "entity_value": {
                                                                                                                                "property": [
                                                                                                                                    {
                                                                                                                                        "name": "property",
                                                                                                                                        "value": {
                                                                                                                                            "list_value": [
                                                                                                                                                {
                                                                                                                                                    "entity_value": {
                                                                                                                                                        "property": [
                                                                                                                                                            {
                                                                                                                                                                "name": "name",
                                                                                                                                                                "value": {
                                                                                                                                                                    "string_value": "hello"
                                                                                                                                                                }
                                                                                                                                                            },
                                                                                                                                                            {
                                                                                                                                                                "name": "value",
                                                                                                                                                                "value": {
                                                                                                                                                                    "entity_value": {
                                                                                                                                                                        "property": [
                                                                                                                                                                            {
                                                                                                                                                                                "name": "integer_value",
                                                                                                                                                                                "value": {
                                                                                                                                                                                    "integer_value": 1
                                                                                                                                                                                }
                                                                                                                                                                            }
                                                                                                                                                                        ]
                                                                                                                                                                    },
                                                                                                                                                                    "indexed": false
                                                                                                                                                                }
                                                                                                                                                            }
                                                                                                                                                        ]
                                                                                                                                                    },
                                                                                                                                                    "indexed": false
                                                                                                                                                }
                                                                                                                                            ]
                                                                                                                                        }
                                                                                                                                    }
                                                                                                                                ]
                                                                                                                            },
                                                                                                                            "indexed": false
                                                                                                                        }
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "name": "indexed",
                                                                                                                        "value": {
                                                                                                                            "boolean_value": false
                                                                                                                        }
                                                                                                                    }
                                                                                                                ]
                                                                                                            },
                                                                                                            "indexed": false
                                                                                                        },
                                                                                                        {
                                                                                                            "entity_value": {
                                                                                                                "property": [
                                                                                                                    {
                                                                                                                        "name": "entity_value",
                                                                                                                        "value": {
                                                                                                                            "entity_value": {
                                                                                                                                "property": [
                                                                                                                                    {
                                                                                                                                        "name": "property",
                                                                                                                                        "value": {
                                                                                                                                            "list_value": [
                                                                                                                                                {
                                                                                                                                                    "entity_value": {
                                                                                                                                                        "property": [
                                                                                                                                                            {
                                                                                                                                                                "name": "name",
                                                                                                                                                                "value": {
                                                                                                                                                                    "string_value": "hello"
                                                                                                                                                                }
                                                                                                                                                            },
                                                                                                                                                            {
                                                                                                                                                                "name": "value",
                                                                                                                                                                "value": {
                                                                                                                                                                    "entity_value": {
                                                                                                                                                                        "property": [
                                                                                                                                                                            {
                                                                                                                                                                                "name": "integer_value",
                                                                                                                                                                                "value": {
                                                                                                                                                                                    "integer_value": 2
                                                                                                                                                                                }
                                                                                                                                                                            }
                                                                                                                                                                        ]
                                                                                                                                                                    },
                                                                                                                                                                    "indexed": false
                                                                                                                                                                }
                                                                                                                                                            }
                                                                                                                                                        ]
                                                                                                                                                    },
                                                                                                                                                    "indexed": false
                                                                                                                                                }
                                                                                                                                            ]
                                                                                                                                        }
                                                                                                                                    }
                                                                                                                                ]
                                                                                                                            },
                                                                                                                            "indexed": false
                                                                                                                        }
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "name": "indexed",
                                                                                                                        "value": {
                                                                                                                            "boolean_value": false
                                                                                                                        }
                                                                                                                    }
                                                                                                                ]
                                                                                                            },
                                                                                                            "indexed": false
                                                                                                        }
                                                                                                    ]
                                                                                                }
                                                                                            }
                                                                                        ]
                                                                                    },
                                                                                    "indexed": false
                                                                                }
                                                                            }
                                                                        ]
                                                                    },
                                                                    "indexed": false
                                                                }
                                                            ]
                                                        }
                                                    }
                                                ]
                                            },
                                            "indexed": false
                                        }
                                    },
                                    {
                                        "name": "indexed",
                                        "value": {
                                            "boolean_value": false
                                        }
                                    }
                                ]
                            },
                            "indexed": false
                        }
                    }
                ],
                "key": {
                    "path_element": [
                        {
                            "kind": "MyKind",
                            "id": "234"
                        }
                    ]
                }
            }
        ],
        "insert_auto_id": []
    }
}

@stephenplusplus stephenplusplus added api: datastore Issues related to the Datastore API. type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns. labels Sep 20, 2015
@stephenplusplus
Copy link
Contributor

Fix incoming!

sofisl pushed a commit that referenced this issue Nov 10, 2022
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@types/node](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped)) | [`^16.0.0` -> `^18.0.0`](https://renovatebot.com/diffs/npm/@types%2fnode/16.18.3/18.11.9) | [![age](https://badges.renovateapi.com/packages/npm/@types%2fnode/18.11.9/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@types%2fnode/18.11.9/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@types%2fnode/18.11.9/compatibility-slim/16.18.3)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@types%2fnode/18.11.9/confidence-slim/16.18.3)](https://docs.renovatebot.com/merge-confidence/) |

---

### Configuration

📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-translate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4yNDEuMTEiLCJ1cGRhdGVkSW5WZXIiOiIzNC4xMS4xIn0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: datastore Issues related to the Datastore API. type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns.
Projects
None yet
Development

No branches or pull requests

3 participants