yt_mode_variant.sql 10 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /*
  2. syntax='proto3';
  3. import "yt/yt_proto/yt/formats/extension.proto";
  4. message Test {
  5. option (NYT.default_field_flags) = SERIALIZATION_YT;
  6. option (NYT.default_oneof_flags) = VARIANT;
  7. oneof Var {
  8. Test test = 1 [(NYT.column_name) = "_test"];
  9. string a = 2;
  10. }
  11. string Name = 3 [(NYT.column_name) = "name"];;
  12. }
  13. */
  14. $configVar = @@{
  15. "name": "Test",
  16. "format": "json",
  17. "skip": 0,
  18. "lists": {
  19. "optional": false
  20. },
  21. "meta": "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",
  22. "view": {
  23. "recursion": "bytes",
  24. "enum": "number",
  25. "yt_mode": true
  26. }
  27. }
  28. @@;
  29. /*
  30. syntax='proto3';
  31. import "yt/yt_proto/yt/formats/extension.proto";
  32. message Test {
  33. option (NYT.default_field_flags) = SERIALIZATION_YT;
  34. option (NYT.default_oneof_flags) = SEPARATE_FIELDS;
  35. oneof Var {
  36. Test test = 1 [(NYT.column_name) = "_test"];
  37. string a = 2;
  38. }
  39. string Name = 3 [(NYT.column_name) = "name"];;
  40. }
  41. */
  42. $configSeparate = @@{
  43. "name": "Test",
  44. "format": "json",
  45. "skip": 0,
  46. "lists": {
  47. "optional": false
  48. },
  49. "meta": "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",
  50. "view": {
  51. "recursion": "bytes",
  52. "enum": "number",
  53. "yt_mode": true
  54. }
  55. }
  56. @@;
  57. $udfParseVar = Udf(Protobuf::Parse, $configVar as TypeConfig);
  58. $udfSerializeVar = Udf(Protobuf::Serialize, $configVar as TypeConfig);
  59. $udfParseSep = Udf(Protobuf::Parse, $configSeparate as TypeConfig);
  60. $udfSerializeSep = Udf(Protobuf::Serialize, $configSeparate as TypeConfig);
  61. SELECT
  62. TestField,
  63. $udfParseVar(TestField),
  64. $udfSerializeVar($udfParseVar(TestField)),
  65. Ensure("Success", StablePickle($udfParseVar(TestField)) == StablePickle($udfParseVar($udfSerializeVar($udfParseVar(TestField)))), "Fail"),
  66. $udfParseSep(TestField),
  67. $udfSerializeSep($udfParseSep(TestField)),
  68. Ensure("Success", StablePickle($udfParseSep(TestField)) == StablePickle($udfParseSep($udfSerializeSep($udfParseSep(TestField)))), "Fail"),
  69. FROM plato.Input;