SqlValue.sql 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /* syntax version 1 */
  2. -- Plain cases
  3. $path = Json2::CompilePath("strict $.x");
  4. $empty_object = CAST("{}" as Json);
  5. $empty_array = CAST("[]" as Json);
  6. $null_key = CAST(@@{
  7. "x": null
  8. }@@ as Json);
  9. $string_json = CAST(@@{
  10. "x": "some string value"
  11. }@@ as Json);
  12. SELECT
  13. Json2::SqlValueUtf8($string_json, $path, AsDict()),
  14. Json2::SqlValueUtf8($empty_object, $path, AsDict()),
  15. Json2::SqlValueUtf8($empty_array, $path, AsDict()),
  16. Json2::SqlValueUtf8($null_key, $path, AsDict()),
  17. Json2::SqlValueUtf8(NULL, $path, AsDict());
  18. $int64_json = CAST(@@{
  19. "x": 2856
  20. }@@ as Json);
  21. SELECT
  22. Json2::SqlValueInt64($int64_json, $path, AsDict()),
  23. Json2::SqlValueInt64($empty_object, $path, AsDict()),
  24. Json2::SqlValueInt64($empty_array, $path, AsDict()),
  25. Json2::SqlValueInt64($null_key, $path, AsDict()),
  26. Json2::SqlValueInt64(NULL, $path, AsDict());
  27. $double_json = CAST(@@{
  28. "x": 2.71828
  29. }@@ as Json);
  30. SELECT
  31. Json2::SqlValueNumber($double_json, $path, AsDict()),
  32. Json2::SqlValueNumber($empty_object, $path, AsDict()),
  33. Json2::SqlValueNumber($empty_array, $path, AsDict()),
  34. Json2::SqlValueNumber($null_key, $path, AsDict()),
  35. Json2::SqlValueNumber(NULL, $path, AsDict());
  36. $bool_json = CAST(@@{
  37. "x": true
  38. }@@ as Json);
  39. SELECT
  40. Json2::SqlValueBool($bool_json, $path, AsDict()),
  41. Json2::SqlValueBool($empty_object, $path, AsDict()),
  42. Json2::SqlValueBool($empty_array, $path, AsDict()),
  43. Json2::SqlValueBool($null_key, $path, AsDict()),
  44. Json2::SqlValueBool(NULL, $path, AsDict());
  45. -- Convert cases
  46. SELECT
  47. Json2::SqlValueConvertToUtf8($string_json, $path, AsDict()),
  48. Json2::SqlValueConvertToUtf8($int64_json, $path, AsDict()),
  49. Json2::SqlValueConvertToUtf8($double_json, $path, AsDict()),
  50. Json2::SqlValueConvertToUtf8($bool_json, $path, AsDict()),
  51. -- NOTE: Here SQL null must be returned, not "null" string
  52. Json2::SqlValueConvertToUtf8($null_key, $path, AsDict()),
  53. Json2::SqlValueConvertToUtf8(NULL, $path, AsDict());
  54. -- Error cases
  55. SELECT
  56. Json2::SqlValueUtf8($int64_json, $path, AsDict()),
  57. Json2::SqlValueUtf8($double_json, $path, AsDict()),
  58. Json2::SqlValueUtf8($bool_json, $path, AsDict());
  59. SELECT
  60. Json2::SqlValueInt64($string_json, $path, AsDict()),
  61. Json2::SqlValueInt64($double_json, $path, AsDict()),
  62. Json2::SqlValueInt64($bool_json, $path, AsDict());
  63. SELECT
  64. Json2::SqlValueNumber($string_json, $path, AsDict()),
  65. -- NOTE: Here int64 is automatically converted to double as it is possible without precision loss
  66. Json2::SqlValueNumber($int64_json, $path, AsDict()),
  67. Json2::SqlValueNumber($bool_json, $path, AsDict());
  68. SELECT
  69. Json2::SqlValueBool($string_json, $path, AsDict()),
  70. Json2::SqlValueBool($int64_json, $path, AsDict()),
  71. Json2::SqlValueBool($double_json, $path, AsDict());
  72. $nested_object_json = CAST(@@{
  73. "x": {
  74. "a": 1
  75. }
  76. }@@ as Json);
  77. $nested_array_json = CAST(@@{
  78. "x": [29, 32, "some string"]
  79. }@@ as Json);
  80. SELECT
  81. Json2::SqlValueBool($nested_object_json, $path, AsDict()),
  82. Json2::SqlValueBool($nested_array_json, $path, AsDict());