[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-14 UTC."],[[["\u003cp\u003eThe latest version of the \u003ccode\u003eProfileDmlResult\u003c/code\u003e class is 2.37.0-rc, which is part of the Cloud Spanner C++ client library.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eProfileDmlResult\u003c/code\u003e provides information about a data-modifying operation such as \u003ccode\u003eINSERT\u003c/code\u003e, \u003ccode\u003eUPDATE\u003c/code\u003e, or \u003ccode\u003eDELETE\u003c/code\u003e in Cloud Spanner.\u003c/p\u003e\n"],["\u003cp\u003eThis class allows retrieving the number of rows modified via \u003ccode\u003eRowsModified()\u003c/code\u003e, with the ability to provide only a lower bound for partitioned DML, but an exact count for all others.\u003c/p\u003e\n"],["\u003cp\u003eIt can also provide detailed execution statistics via \u003ccode\u003eExecutionStats()\u003c/code\u003e and the query execution plan via \u003ccode\u003eExecutionPlan()\u003c/code\u003e, but only if the SQL statement has already been executed.\u003c/p\u003e\n"],["\u003cp\u003eThe documentation covers versions from 2.11.0 up to the latest 2.37.0-rc, each of which contains the class \u003ccode\u003eProfileDmlResult\u003c/code\u003e and the corresponding functions described.\u003c/p\u003e\n"]]],[],null,["# Class ProfileDmlResult (2.42.0-rc)\n\nVersion latestkeyboard_arrow_down\n\n- [2.42.0-rc (latest)](/cpp/docs/reference/spanner/latest/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.41.0](/cpp/docs/reference/spanner/2.41.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.40.0](/cpp/docs/reference/spanner/2.40.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.39.0](/cpp/docs/reference/spanner/2.39.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.38.0](/cpp/docs/reference/spanner/2.38.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.37.0](/cpp/docs/reference/spanner/2.37.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.36.0](/cpp/docs/reference/spanner/2.36.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.35.0](/cpp/docs/reference/spanner/2.35.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.34.0](/cpp/docs/reference/spanner/2.34.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.33.0](/cpp/docs/reference/spanner/2.33.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.32.0](/cpp/docs/reference/spanner/2.32.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.31.0](/cpp/docs/reference/spanner/2.31.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.30.0](/cpp/docs/reference/spanner/2.30.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.29.0](/cpp/docs/reference/spanner/2.29.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.28.0](/cpp/docs/reference/spanner/2.28.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.27.0](/cpp/docs/reference/spanner/2.27.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.26.0](/cpp/docs/reference/spanner/2.26.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.25.1](/cpp/docs/reference/spanner/2.25.1/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.24.0](/cpp/docs/reference/spanner/2.24.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.23.0](/cpp/docs/reference/spanner/2.23.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.22.1](/cpp/docs/reference/spanner/2.22.1/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.21.0](/cpp/docs/reference/spanner/2.21.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.20.0](/cpp/docs/reference/spanner/2.20.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.19.0](/cpp/docs/reference/spanner/2.19.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.18.0](/cpp/docs/reference/spanner/2.18.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.17.0](/cpp/docs/reference/spanner/2.17.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.16.0](/cpp/docs/reference/spanner/2.16.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.15.1](/cpp/docs/reference/spanner/2.15.1/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.14.0](/cpp/docs/reference/spanner/2.14.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.13.0](/cpp/docs/reference/spanner/2.13.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.12.0](/cpp/docs/reference/spanner/2.12.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult)\n- [2.11.0](/cpp/docs/reference/spanner/2.11.0/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult) \nRepresents the result and profile stats of a data modifying operation using [`spanner::Client::ProfileDml()`](/cpp/docs/reference/spanner/latest/classgoogle_1_1cloud_1_1spanner_1_1Client#classgoogle_1_1cloud_1_1spanner_1_1Client_1a5628f7c60f46d6d49408245cd9fe8fc1). \nThis class encapsulates the result of a Cloud Spanner DML operation, i.e., `INSERT`, `UPDATE`, or `DELETE`.\n| **Note:** [`ProfileDmlResult`](/cpp/docs/reference/spanner/latest/classgoogle_1_1cloud_1_1spanner_1_1ProfileDmlResult) returns the number of rows modified, execution statistics, and query plan.\n\n###### Example:\n\n spanner::ProfileDmlResult dml_result;\n auto commit_result = client.Commit(\n [&client,\n &dml_result](spanner::Transaction txn) -\u003e StatusOr\u003cspanner::Mutations\u003e {\n auto update = client.ProfileDml(\n std::move(txn),\n spanner::SqlStatement(\n \"UPDATE Albums SET MarketingBudget = MarketingBudget * 2\"\n \" WHERE SingerId = 1 AND AlbumId = 1\"));\n if (!update) return std::move(update).status();\n dml_result = *std::move(update);\n return spanner::Mutations{};\n });\n if (!commit_result) throw std::move(commit_result).status();\n\n // Stats only available after statement has been executed.\n std::cout \u003c\u003c \"Rows modified: \" \u003c\u003c dml_result.RowsModified();\n auto execution_stats = dml_result.ExecutionStats();\n if (execution_stats) {\n for (auto const& stat : *execution_stats) {\n std::cout \u003c\u003c stat.first \u003c\u003c \":\\t\" \u003c\u003c stat.second \u003c\u003c \"\\n\";\n }\n }\n\nConstructors\n------------\n\n### ProfileDmlResult()\n\n### ProfileDmlResult(std::unique_ptr\\\u003c ResultSourceInterface \\\u003e)\n\n### ProfileDmlResult(ProfileDmlResult \\&\\&)\n\nOperators\n---------\n\n### operator=(ProfileDmlResult \\&\\&)\n\nFunctions\n---------\n\n### RowsModified() const\n\nReturns the number of rows modified by the DML statement. \n| **Note:** Partitioned DML only provides a lower bound of the rows modified, all other DML statements provide an exact count.\n\n### ExecutionStats() const\n\nReturns a collection of key value pair statistics for the SQL statement execution. \n| **Note:** Only available when the SQL statement is executed.\n\n### ExecutionPlan() const\n\nReturns the plan of execution for the SQL statement."]]