aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSloNN <alex.dmitriev@gmail.com>2024-12-25 15:00:02 +0300
committerGitHub <noreply@github.com>2024-12-25 15:00:02 +0300
commit65567d39cda1929a30a30b0901dcf416dfba629f (patch)
treeeb15de23c6bf9aa50a66f1c64e6a7eecc8d1f018
parentd44aeaad9d120090ea6824c76d90184f21bb35bf (diff)
downloadydb-65567d39cda1929a30a30b0901dcf416dfba629f.tar.gz
Tests update (#12946)
Co-authored-by: Alexey Dmitriev <slonnn@yandex-team.ru>
-rw-r--r--ydb/tests/sql/canondata/result.json4140
-rw-r--r--ydb/tests/sql/test_base.py52
-rw-r--r--ydb/tests/sql/test_crud.py67
-rw-r--r--ydb/tests/sql/test_inserts.py378
-rw-r--r--ydb/tests/sql/test_sql.py115
-rw-r--r--ydb/tests/sql/ya.make3
6 files changed, 4683 insertions, 72 deletions
diff --git a/ydb/tests/sql/canondata/result.json b/ydb/tests/sql/canondata/result.json
new file mode 100644
index 0000000000..cbef3d18d6
--- /dev/null
+++ b/ydb/tests/sql/canondata/result.json
@@ -0,0 +1,4140 @@
+{
+ "test_inserts.TestYdbInsertsOperations.test_bulk_upsert": [
+ {
+ "id": 0,
+ "value": "value_0"
+ },
+ {
+ "id": 1,
+ "value": "value_1"
+ },
+ {
+ "id": 2,
+ "value": "value_2"
+ },
+ {
+ "id": 3,
+ "value": "value_3"
+ },
+ {
+ "id": 4,
+ "value": "value_4"
+ },
+ {
+ "id": 5,
+ "value": "value_5"
+ },
+ {
+ "id": 6,
+ "value": "value_6"
+ },
+ {
+ "id": 7,
+ "value": "value_7"
+ },
+ {
+ "id": 8,
+ "value": "value_8"
+ },
+ {
+ "id": 9,
+ "value": "value_9"
+ },
+ {
+ "id": 10,
+ "value": "value_10"
+ },
+ {
+ "id": 11,
+ "value": "value_11"
+ },
+ {
+ "id": 12,
+ "value": "value_12"
+ },
+ {
+ "id": 13,
+ "value": "value_13"
+ },
+ {
+ "id": 14,
+ "value": "value_14"
+ },
+ {
+ "id": 15,
+ "value": "value_15"
+ },
+ {
+ "id": 16,
+ "value": "value_16"
+ },
+ {
+ "id": 17,
+ "value": "value_17"
+ },
+ {
+ "id": 18,
+ "value": "value_18"
+ },
+ {
+ "id": 19,
+ "value": "value_19"
+ },
+ {
+ "id": 20,
+ "value": "value_20"
+ },
+ {
+ "id": 21,
+ "value": "value_21"
+ },
+ {
+ "id": 22,
+ "value": "value_22"
+ },
+ {
+ "id": 23,
+ "value": "value_23"
+ },
+ {
+ "id": 24,
+ "value": "value_24"
+ },
+ {
+ "id": 25,
+ "value": "value_25"
+ },
+ {
+ "id": 26,
+ "value": "value_26"
+ },
+ {
+ "id": 27,
+ "value": "value_27"
+ },
+ {
+ "id": 28,
+ "value": "value_28"
+ },
+ {
+ "id": 29,
+ "value": "value_29"
+ },
+ {
+ "id": 30,
+ "value": "value_30"
+ },
+ {
+ "id": 31,
+ "value": "value_31"
+ },
+ {
+ "id": 32,
+ "value": "value_32"
+ },
+ {
+ "id": 33,
+ "value": "value_33"
+ },
+ {
+ "id": 34,
+ "value": "value_34"
+ },
+ {
+ "id": 35,
+ "value": "value_35"
+ },
+ {
+ "id": 36,
+ "value": "value_36"
+ },
+ {
+ "id": 37,
+ "value": "value_37"
+ },
+ {
+ "id": 38,
+ "value": "value_38"
+ },
+ {
+ "id": 39,
+ "value": "value_39"
+ },
+ {
+ "id": 40,
+ "value": "value_40"
+ },
+ {
+ "id": 41,
+ "value": "value_41"
+ },
+ {
+ "id": 42,
+ "value": "value_42"
+ },
+ {
+ "id": 43,
+ "value": "value_43"
+ },
+ {
+ "id": 44,
+ "value": "value_44"
+ },
+ {
+ "id": 45,
+ "value": "value_45"
+ },
+ {
+ "id": 46,
+ "value": "value_46"
+ },
+ {
+ "id": 47,
+ "value": "value_47"
+ },
+ {
+ "id": 48,
+ "value": "value_48"
+ },
+ {
+ "id": 49,
+ "value": "value_49"
+ },
+ {
+ "id": 50,
+ "value": "value_50"
+ },
+ {
+ "id": 51,
+ "value": "value_51"
+ },
+ {
+ "id": 52,
+ "value": "value_52"
+ },
+ {
+ "id": 53,
+ "value": "value_53"
+ },
+ {
+ "id": 54,
+ "value": "value_54"
+ },
+ {
+ "id": 55,
+ "value": "value_55"
+ },
+ {
+ "id": 56,
+ "value": "value_56"
+ },
+ {
+ "id": 57,
+ "value": "value_57"
+ },
+ {
+ "id": 58,
+ "value": "value_58"
+ },
+ {
+ "id": 59,
+ "value": "value_59"
+ },
+ {
+ "id": 60,
+ "value": "value_60"
+ },
+ {
+ "id": 61,
+ "value": "value_61"
+ },
+ {
+ "id": 62,
+ "value": "value_62"
+ },
+ {
+ "id": 63,
+ "value": "value_63"
+ },
+ {
+ "id": 64,
+ "value": "value_64"
+ },
+ {
+ "id": 65,
+ "value": "value_65"
+ },
+ {
+ "id": 66,
+ "value": "value_66"
+ },
+ {
+ "id": 67,
+ "value": "value_67"
+ },
+ {
+ "id": 68,
+ "value": "value_68"
+ },
+ {
+ "id": 69,
+ "value": "value_69"
+ },
+ {
+ "id": 70,
+ "value": "value_70"
+ },
+ {
+ "id": 71,
+ "value": "value_71"
+ },
+ {
+ "id": 72,
+ "value": "value_72"
+ },
+ {
+ "id": 73,
+ "value": "value_73"
+ },
+ {
+ "id": 74,
+ "value": "value_74"
+ },
+ {
+ "id": 75,
+ "value": "value_75"
+ },
+ {
+ "id": 76,
+ "value": "value_76"
+ },
+ {
+ "id": 77,
+ "value": "value_77"
+ },
+ {
+ "id": 78,
+ "value": "value_78"
+ },
+ {
+ "id": 79,
+ "value": "value_79"
+ },
+ {
+ "id": 80,
+ "value": "value_80"
+ },
+ {
+ "id": 81,
+ "value": "value_81"
+ },
+ {
+ "id": 82,
+ "value": "value_82"
+ },
+ {
+ "id": 83,
+ "value": "value_83"
+ },
+ {
+ "id": 84,
+ "value": "value_84"
+ },
+ {
+ "id": 85,
+ "value": "value_85"
+ },
+ {
+ "id": 86,
+ "value": "value_86"
+ },
+ {
+ "id": 87,
+ "value": "value_87"
+ },
+ {
+ "id": 88,
+ "value": "value_88"
+ },
+ {
+ "id": 89,
+ "value": "value_89"
+ },
+ {
+ "id": 90,
+ "value": "value_90"
+ },
+ {
+ "id": 91,
+ "value": "value_91"
+ },
+ {
+ "id": 92,
+ "value": "value_92"
+ },
+ {
+ "id": 93,
+ "value": "value_93"
+ },
+ {
+ "id": 94,
+ "value": "value_94"
+ },
+ {
+ "id": 95,
+ "value": "value_95"
+ },
+ {
+ "id": 96,
+ "value": "value_96"
+ },
+ {
+ "id": 97,
+ "value": "value_97"
+ },
+ {
+ "id": 98,
+ "value": "value_98"
+ },
+ {
+ "id": 99,
+ "value": "value_99"
+ },
+ {
+ "id": 100,
+ "value": "value_100"
+ },
+ {
+ "id": 101,
+ "value": "value_101"
+ },
+ {
+ "id": 102,
+ "value": "value_102"
+ },
+ {
+ "id": 103,
+ "value": "value_103"
+ },
+ {
+ "id": 104,
+ "value": "value_104"
+ },
+ {
+ "id": 105,
+ "value": "value_105"
+ },
+ {
+ "id": 106,
+ "value": "value_106"
+ },
+ {
+ "id": 107,
+ "value": "value_107"
+ },
+ {
+ "id": 108,
+ "value": "value_108"
+ },
+ {
+ "id": 109,
+ "value": "value_109"
+ },
+ {
+ "id": 110,
+ "value": "value_110"
+ },
+ {
+ "id": 111,
+ "value": "value_111"
+ },
+ {
+ "id": 112,
+ "value": "value_112"
+ },
+ {
+ "id": 113,
+ "value": "value_113"
+ },
+ {
+ "id": 114,
+ "value": "value_114"
+ },
+ {
+ "id": 115,
+ "value": "value_115"
+ },
+ {
+ "id": 116,
+ "value": "value_116"
+ },
+ {
+ "id": 117,
+ "value": "value_117"
+ },
+ {
+ "id": 118,
+ "value": "value_118"
+ },
+ {
+ "id": 119,
+ "value": "value_119"
+ },
+ {
+ "id": 120,
+ "value": "value_120"
+ },
+ {
+ "id": 121,
+ "value": "value_121"
+ },
+ {
+ "id": 122,
+ "value": "value_122"
+ },
+ {
+ "id": 123,
+ "value": "value_123"
+ },
+ {
+ "id": 124,
+ "value": "value_124"
+ },
+ {
+ "id": 125,
+ "value": "value_125"
+ },
+ {
+ "id": 126,
+ "value": "value_126"
+ },
+ {
+ "id": 127,
+ "value": "value_127"
+ },
+ {
+ "id": 128,
+ "value": "value_128"
+ },
+ {
+ "id": 129,
+ "value": "value_129"
+ },
+ {
+ "id": 130,
+ "value": "value_130"
+ },
+ {
+ "id": 131,
+ "value": "value_131"
+ },
+ {
+ "id": 132,
+ "value": "value_132"
+ },
+ {
+ "id": 133,
+ "value": "value_133"
+ },
+ {
+ "id": 134,
+ "value": "value_134"
+ },
+ {
+ "id": 135,
+ "value": "value_135"
+ },
+ {
+ "id": 136,
+ "value": "value_136"
+ },
+ {
+ "id": 137,
+ "value": "value_137"
+ },
+ {
+ "id": 138,
+ "value": "value_138"
+ },
+ {
+ "id": 139,
+ "value": "value_139"
+ },
+ {
+ "id": 140,
+ "value": "value_140"
+ },
+ {
+ "id": 141,
+ "value": "value_141"
+ },
+ {
+ "id": 142,
+ "value": "value_142"
+ },
+ {
+ "id": 143,
+ "value": "value_143"
+ },
+ {
+ "id": 144,
+ "value": "value_144"
+ },
+ {
+ "id": 145,
+ "value": "value_145"
+ },
+ {
+ "id": 146,
+ "value": "value_146"
+ },
+ {
+ "id": 147,
+ "value": "value_147"
+ },
+ {
+ "id": 148,
+ "value": "value_148"
+ },
+ {
+ "id": 149,
+ "value": "value_149"
+ },
+ {
+ "id": 150,
+ "value": "value_150"
+ },
+ {
+ "id": 151,
+ "value": "value_151"
+ },
+ {
+ "id": 152,
+ "value": "value_152"
+ },
+ {
+ "id": 153,
+ "value": "value_153"
+ },
+ {
+ "id": 154,
+ "value": "value_154"
+ },
+ {
+ "id": 155,
+ "value": "value_155"
+ },
+ {
+ "id": 156,
+ "value": "value_156"
+ },
+ {
+ "id": 157,
+ "value": "value_157"
+ },
+ {
+ "id": 158,
+ "value": "value_158"
+ },
+ {
+ "id": 159,
+ "value": "value_159"
+ },
+ {
+ "id": 160,
+ "value": "value_160"
+ },
+ {
+ "id": 161,
+ "value": "value_161"
+ },
+ {
+ "id": 162,
+ "value": "value_162"
+ },
+ {
+ "id": 163,
+ "value": "value_163"
+ },
+ {
+ "id": 164,
+ "value": "value_164"
+ },
+ {
+ "id": 165,
+ "value": "value_165"
+ },
+ {
+ "id": 166,
+ "value": "value_166"
+ },
+ {
+ "id": 167,
+ "value": "value_167"
+ },
+ {
+ "id": 168,
+ "value": "value_168"
+ },
+ {
+ "id": 169,
+ "value": "value_169"
+ },
+ {
+ "id": 170,
+ "value": "value_170"
+ },
+ {
+ "id": 171,
+ "value": "value_171"
+ },
+ {
+ "id": 172,
+ "value": "value_172"
+ },
+ {
+ "id": 173,
+ "value": "value_173"
+ },
+ {
+ "id": 174,
+ "value": "value_174"
+ },
+ {
+ "id": 175,
+ "value": "value_175"
+ },
+ {
+ "id": 176,
+ "value": "value_176"
+ },
+ {
+ "id": 177,
+ "value": "value_177"
+ },
+ {
+ "id": 178,
+ "value": "value_178"
+ },
+ {
+ "id": 179,
+ "value": "value_179"
+ },
+ {
+ "id": 180,
+ "value": "value_180"
+ },
+ {
+ "id": 181,
+ "value": "value_181"
+ },
+ {
+ "id": 182,
+ "value": "value_182"
+ },
+ {
+ "id": 183,
+ "value": "value_183"
+ },
+ {
+ "id": 184,
+ "value": "value_184"
+ },
+ {
+ "id": 185,
+ "value": "value_185"
+ },
+ {
+ "id": 186,
+ "value": "value_186"
+ },
+ {
+ "id": 187,
+ "value": "value_187"
+ },
+ {
+ "id": 188,
+ "value": "value_188"
+ },
+ {
+ "id": 189,
+ "value": "value_189"
+ },
+ {
+ "id": 190,
+ "value": "value_190"
+ },
+ {
+ "id": 191,
+ "value": "value_191"
+ },
+ {
+ "id": 192,
+ "value": "value_192"
+ },
+ {
+ "id": 193,
+ "value": "value_193"
+ },
+ {
+ "id": 194,
+ "value": "value_194"
+ },
+ {
+ "id": 195,
+ "value": "value_195"
+ },
+ {
+ "id": 196,
+ "value": "value_196"
+ },
+ {
+ "id": 197,
+ "value": "value_197"
+ },
+ {
+ "id": 198,
+ "value": "value_198"
+ },
+ {
+ "id": 199,
+ "value": "value_199"
+ },
+ {
+ "id": 200,
+ "value": "value_200"
+ },
+ {
+ "id": 201,
+ "value": "value_201"
+ },
+ {
+ "id": 202,
+ "value": "value_202"
+ },
+ {
+ "id": 203,
+ "value": "value_203"
+ },
+ {
+ "id": 204,
+ "value": "value_204"
+ },
+ {
+ "id": 205,
+ "value": "value_205"
+ },
+ {
+ "id": 206,
+ "value": "value_206"
+ },
+ {
+ "id": 207,
+ "value": "value_207"
+ },
+ {
+ "id": 208,
+ "value": "value_208"
+ },
+ {
+ "id": 209,
+ "value": "value_209"
+ },
+ {
+ "id": 210,
+ "value": "value_210"
+ },
+ {
+ "id": 211,
+ "value": "value_211"
+ },
+ {
+ "id": 212,
+ "value": "value_212"
+ },
+ {
+ "id": 213,
+ "value": "value_213"
+ },
+ {
+ "id": 214,
+ "value": "value_214"
+ },
+ {
+ "id": 215,
+ "value": "value_215"
+ },
+ {
+ "id": 216,
+ "value": "value_216"
+ },
+ {
+ "id": 217,
+ "value": "value_217"
+ },
+ {
+ "id": 218,
+ "value": "value_218"
+ },
+ {
+ "id": 219,
+ "value": "value_219"
+ },
+ {
+ "id": 220,
+ "value": "value_220"
+ },
+ {
+ "id": 221,
+ "value": "value_221"
+ },
+ {
+ "id": 222,
+ "value": "value_222"
+ },
+ {
+ "id": 223,
+ "value": "value_223"
+ },
+ {
+ "id": 224,
+ "value": "value_224"
+ },
+ {
+ "id": 225,
+ "value": "value_225"
+ },
+ {
+ "id": 226,
+ "value": "value_226"
+ },
+ {
+ "id": 227,
+ "value": "value_227"
+ },
+ {
+ "id": 228,
+ "value": "value_228"
+ },
+ {
+ "id": 229,
+ "value": "value_229"
+ },
+ {
+ "id": 230,
+ "value": "value_230"
+ },
+ {
+ "id": 231,
+ "value": "value_231"
+ },
+ {
+ "id": 232,
+ "value": "value_232"
+ },
+ {
+ "id": 233,
+ "value": "value_233"
+ },
+ {
+ "id": 234,
+ "value": "value_234"
+ },
+ {
+ "id": 235,
+ "value": "value_235"
+ },
+ {
+ "id": 236,
+ "value": "value_236"
+ },
+ {
+ "id": 237,
+ "value": "value_237"
+ },
+ {
+ "id": 238,
+ "value": "value_238"
+ },
+ {
+ "id": 239,
+ "value": "value_239"
+ },
+ {
+ "id": 240,
+ "value": "value_240"
+ },
+ {
+ "id": 241,
+ "value": "value_241"
+ },
+ {
+ "id": 242,
+ "value": "value_242"
+ },
+ {
+ "id": 243,
+ "value": "value_243"
+ },
+ {
+ "id": 244,
+ "value": "value_244"
+ },
+ {
+ "id": 245,
+ "value": "value_245"
+ },
+ {
+ "id": 246,
+ "value": "value_246"
+ },
+ {
+ "id": 247,
+ "value": "value_247"
+ },
+ {
+ "id": 248,
+ "value": "value_248"
+ },
+ {
+ "id": 249,
+ "value": "value_249"
+ },
+ {
+ "id": 250,
+ "value": "value_250"
+ },
+ {
+ "id": 251,
+ "value": "value_251"
+ },
+ {
+ "id": 252,
+ "value": "value_252"
+ },
+ {
+ "id": 253,
+ "value": "value_253"
+ },
+ {
+ "id": 254,
+ "value": "value_254"
+ },
+ {
+ "id": 255,
+ "value": "value_255"
+ },
+ {
+ "id": 256,
+ "value": "value_256"
+ },
+ {
+ "id": 257,
+ "value": "value_257"
+ },
+ {
+ "id": 258,
+ "value": "value_258"
+ },
+ {
+ "id": 259,
+ "value": "value_259"
+ },
+ {
+ "id": 260,
+ "value": "value_260"
+ },
+ {
+ "id": 261,
+ "value": "value_261"
+ },
+ {
+ "id": 262,
+ "value": "value_262"
+ },
+ {
+ "id": 263,
+ "value": "value_263"
+ },
+ {
+ "id": 264,
+ "value": "value_264"
+ },
+ {
+ "id": 265,
+ "value": "value_265"
+ },
+ {
+ "id": 266,
+ "value": "value_266"
+ },
+ {
+ "id": 267,
+ "value": "value_267"
+ },
+ {
+ "id": 268,
+ "value": "value_268"
+ },
+ {
+ "id": 269,
+ "value": "value_269"
+ },
+ {
+ "id": 270,
+ "value": "value_270"
+ },
+ {
+ "id": 271,
+ "value": "value_271"
+ },
+ {
+ "id": 272,
+ "value": "value_272"
+ },
+ {
+ "id": 273,
+ "value": "value_273"
+ },
+ {
+ "id": 274,
+ "value": "value_274"
+ },
+ {
+ "id": 275,
+ "value": "value_275"
+ },
+ {
+ "id": 276,
+ "value": "value_276"
+ },
+ {
+ "id": 277,
+ "value": "value_277"
+ },
+ {
+ "id": 278,
+ "value": "value_278"
+ },
+ {
+ "id": 279,
+ "value": "value_279"
+ },
+ {
+ "id": 280,
+ "value": "value_280"
+ },
+ {
+ "id": 281,
+ "value": "value_281"
+ },
+ {
+ "id": 282,
+ "value": "value_282"
+ },
+ {
+ "id": 283,
+ "value": "value_283"
+ },
+ {
+ "id": 284,
+ "value": "value_284"
+ },
+ {
+ "id": 285,
+ "value": "value_285"
+ },
+ {
+ "id": 286,
+ "value": "value_286"
+ },
+ {
+ "id": 287,
+ "value": "value_287"
+ },
+ {
+ "id": 288,
+ "value": "value_288"
+ },
+ {
+ "id": 289,
+ "value": "value_289"
+ },
+ {
+ "id": 290,
+ "value": "value_290"
+ },
+ {
+ "id": 291,
+ "value": "value_291"
+ },
+ {
+ "id": 292,
+ "value": "value_292"
+ },
+ {
+ "id": 293,
+ "value": "value_293"
+ },
+ {
+ "id": 294,
+ "value": "value_294"
+ },
+ {
+ "id": 295,
+ "value": "value_295"
+ },
+ {
+ "id": 296,
+ "value": "value_296"
+ },
+ {
+ "id": 297,
+ "value": "value_297"
+ },
+ {
+ "id": 298,
+ "value": "value_298"
+ },
+ {
+ "id": 299,
+ "value": "value_299"
+ },
+ {
+ "id": 300,
+ "value": "value_300"
+ },
+ {
+ "id": 301,
+ "value": "value_301"
+ },
+ {
+ "id": 302,
+ "value": "value_302"
+ },
+ {
+ "id": 303,
+ "value": "value_303"
+ },
+ {
+ "id": 304,
+ "value": "value_304"
+ },
+ {
+ "id": 305,
+ "value": "value_305"
+ },
+ {
+ "id": 306,
+ "value": "value_306"
+ },
+ {
+ "id": 307,
+ "value": "value_307"
+ },
+ {
+ "id": 308,
+ "value": "value_308"
+ },
+ {
+ "id": 309,
+ "value": "value_309"
+ },
+ {
+ "id": 310,
+ "value": "value_310"
+ },
+ {
+ "id": 311,
+ "value": "value_311"
+ },
+ {
+ "id": 312,
+ "value": "value_312"
+ },
+ {
+ "id": 313,
+ "value": "value_313"
+ },
+ {
+ "id": 314,
+ "value": "value_314"
+ },
+ {
+ "id": 315,
+ "value": "value_315"
+ },
+ {
+ "id": 316,
+ "value": "value_316"
+ },
+ {
+ "id": 317,
+ "value": "value_317"
+ },
+ {
+ "id": 318,
+ "value": "value_318"
+ },
+ {
+ "id": 319,
+ "value": "value_319"
+ },
+ {
+ "id": 320,
+ "value": "value_320"
+ },
+ {
+ "id": 321,
+ "value": "value_321"
+ },
+ {
+ "id": 322,
+ "value": "value_322"
+ },
+ {
+ "id": 323,
+ "value": "value_323"
+ },
+ {
+ "id": 324,
+ "value": "value_324"
+ },
+ {
+ "id": 325,
+ "value": "value_325"
+ },
+ {
+ "id": 326,
+ "value": "value_326"
+ },
+ {
+ "id": 327,
+ "value": "value_327"
+ },
+ {
+ "id": 328,
+ "value": "value_328"
+ },
+ {
+ "id": 329,
+ "value": "value_329"
+ },
+ {
+ "id": 330,
+ "value": "value_330"
+ },
+ {
+ "id": 331,
+ "value": "value_331"
+ },
+ {
+ "id": 332,
+ "value": "value_332"
+ },
+ {
+ "id": 333,
+ "value": "value_333"
+ },
+ {
+ "id": 334,
+ "value": "value_334"
+ },
+ {
+ "id": 335,
+ "value": "value_335"
+ },
+ {
+ "id": 336,
+ "value": "value_336"
+ },
+ {
+ "id": 337,
+ "value": "value_337"
+ },
+ {
+ "id": 338,
+ "value": "value_338"
+ },
+ {
+ "id": 339,
+ "value": "value_339"
+ },
+ {
+ "id": 340,
+ "value": "value_340"
+ },
+ {
+ "id": 341,
+ "value": "value_341"
+ },
+ {
+ "id": 342,
+ "value": "value_342"
+ },
+ {
+ "id": 343,
+ "value": "value_343"
+ },
+ {
+ "id": 344,
+ "value": "value_344"
+ },
+ {
+ "id": 345,
+ "value": "value_345"
+ },
+ {
+ "id": 346,
+ "value": "value_346"
+ },
+ {
+ "id": 347,
+ "value": "value_347"
+ },
+ {
+ "id": 348,
+ "value": "value_348"
+ },
+ {
+ "id": 349,
+ "value": "value_349"
+ },
+ {
+ "id": 350,
+ "value": "value_350"
+ },
+ {
+ "id": 351,
+ "value": "value_351"
+ },
+ {
+ "id": 352,
+ "value": "value_352"
+ },
+ {
+ "id": 353,
+ "value": "value_353"
+ },
+ {
+ "id": 354,
+ "value": "value_354"
+ },
+ {
+ "id": 355,
+ "value": "value_355"
+ },
+ {
+ "id": 356,
+ "value": "value_356"
+ },
+ {
+ "id": 357,
+ "value": "value_357"
+ },
+ {
+ "id": 358,
+ "value": "value_358"
+ },
+ {
+ "id": 359,
+ "value": "value_359"
+ },
+ {
+ "id": 360,
+ "value": "value_360"
+ },
+ {
+ "id": 361,
+ "value": "value_361"
+ },
+ {
+ "id": 362,
+ "value": "value_362"
+ },
+ {
+ "id": 363,
+ "value": "value_363"
+ },
+ {
+ "id": 364,
+ "value": "value_364"
+ },
+ {
+ "id": 365,
+ "value": "value_365"
+ },
+ {
+ "id": 366,
+ "value": "value_366"
+ },
+ {
+ "id": 367,
+ "value": "value_367"
+ },
+ {
+ "id": 368,
+ "value": "value_368"
+ },
+ {
+ "id": 369,
+ "value": "value_369"
+ },
+ {
+ "id": 370,
+ "value": "value_370"
+ },
+ {
+ "id": 371,
+ "value": "value_371"
+ },
+ {
+ "id": 372,
+ "value": "value_372"
+ },
+ {
+ "id": 373,
+ "value": "value_373"
+ },
+ {
+ "id": 374,
+ "value": "value_374"
+ },
+ {
+ "id": 375,
+ "value": "value_375"
+ },
+ {
+ "id": 376,
+ "value": "value_376"
+ },
+ {
+ "id": 377,
+ "value": "value_377"
+ },
+ {
+ "id": 378,
+ "value": "value_378"
+ },
+ {
+ "id": 379,
+ "value": "value_379"
+ },
+ {
+ "id": 380,
+ "value": "value_380"
+ },
+ {
+ "id": 381,
+ "value": "value_381"
+ },
+ {
+ "id": 382,
+ "value": "value_382"
+ },
+ {
+ "id": 383,
+ "value": "value_383"
+ },
+ {
+ "id": 384,
+ "value": "value_384"
+ },
+ {
+ "id": 385,
+ "value": "value_385"
+ },
+ {
+ "id": 386,
+ "value": "value_386"
+ },
+ {
+ "id": 387,
+ "value": "value_387"
+ },
+ {
+ "id": 388,
+ "value": "value_388"
+ },
+ {
+ "id": 389,
+ "value": "value_389"
+ },
+ {
+ "id": 390,
+ "value": "value_390"
+ },
+ {
+ "id": 391,
+ "value": "value_391"
+ },
+ {
+ "id": 392,
+ "value": "value_392"
+ },
+ {
+ "id": 393,
+ "value": "value_393"
+ },
+ {
+ "id": 394,
+ "value": "value_394"
+ },
+ {
+ "id": 395,
+ "value": "value_395"
+ },
+ {
+ "id": 396,
+ "value": "value_396"
+ },
+ {
+ "id": 397,
+ "value": "value_397"
+ },
+ {
+ "id": 398,
+ "value": "value_398"
+ },
+ {
+ "id": 399,
+ "value": "value_399"
+ },
+ {
+ "id": 400,
+ "value": "value_400"
+ },
+ {
+ "id": 401,
+ "value": "value_401"
+ },
+ {
+ "id": 402,
+ "value": "value_402"
+ },
+ {
+ "id": 403,
+ "value": "value_403"
+ },
+ {
+ "id": 404,
+ "value": "value_404"
+ },
+ {
+ "id": 405,
+ "value": "value_405"
+ },
+ {
+ "id": 406,
+ "value": "value_406"
+ },
+ {
+ "id": 407,
+ "value": "value_407"
+ },
+ {
+ "id": 408,
+ "value": "value_408"
+ },
+ {
+ "id": 409,
+ "value": "value_409"
+ },
+ {
+ "id": 410,
+ "value": "value_410"
+ },
+ {
+ "id": 411,
+ "value": "value_411"
+ },
+ {
+ "id": 412,
+ "value": "value_412"
+ },
+ {
+ "id": 413,
+ "value": "value_413"
+ },
+ {
+ "id": 414,
+ "value": "value_414"
+ },
+ {
+ "id": 415,
+ "value": "value_415"
+ },
+ {
+ "id": 416,
+ "value": "value_416"
+ },
+ {
+ "id": 417,
+ "value": "value_417"
+ },
+ {
+ "id": 418,
+ "value": "value_418"
+ },
+ {
+ "id": 419,
+ "value": "value_419"
+ },
+ {
+ "id": 420,
+ "value": "value_420"
+ },
+ {
+ "id": 421,
+ "value": "value_421"
+ },
+ {
+ "id": 422,
+ "value": "value_422"
+ },
+ {
+ "id": 423,
+ "value": "value_423"
+ },
+ {
+ "id": 424,
+ "value": "value_424"
+ },
+ {
+ "id": 425,
+ "value": "value_425"
+ },
+ {
+ "id": 426,
+ "value": "value_426"
+ },
+ {
+ "id": 427,
+ "value": "value_427"
+ },
+ {
+ "id": 428,
+ "value": "value_428"
+ },
+ {
+ "id": 429,
+ "value": "value_429"
+ },
+ {
+ "id": 430,
+ "value": "value_430"
+ },
+ {
+ "id": 431,
+ "value": "value_431"
+ },
+ {
+ "id": 432,
+ "value": "value_432"
+ },
+ {
+ "id": 433,
+ "value": "value_433"
+ },
+ {
+ "id": 434,
+ "value": "value_434"
+ },
+ {
+ "id": 435,
+ "value": "value_435"
+ },
+ {
+ "id": 436,
+ "value": "value_436"
+ },
+ {
+ "id": 437,
+ "value": "value_437"
+ },
+ {
+ "id": 438,
+ "value": "value_438"
+ },
+ {
+ "id": 439,
+ "value": "value_439"
+ },
+ {
+ "id": 440,
+ "value": "value_440"
+ },
+ {
+ "id": 441,
+ "value": "value_441"
+ },
+ {
+ "id": 442,
+ "value": "value_442"
+ },
+ {
+ "id": 443,
+ "value": "value_443"
+ },
+ {
+ "id": 444,
+ "value": "value_444"
+ },
+ {
+ "id": 445,
+ "value": "value_445"
+ },
+ {
+ "id": 446,
+ "value": "value_446"
+ },
+ {
+ "id": 447,
+ "value": "value_447"
+ },
+ {
+ "id": 448,
+ "value": "value_448"
+ },
+ {
+ "id": 449,
+ "value": "value_449"
+ },
+ {
+ "id": 450,
+ "value": "value_450"
+ },
+ {
+ "id": 451,
+ "value": "value_451"
+ },
+ {
+ "id": 452,
+ "value": "value_452"
+ },
+ {
+ "id": 453,
+ "value": "value_453"
+ },
+ {
+ "id": 454,
+ "value": "value_454"
+ },
+ {
+ "id": 455,
+ "value": "value_455"
+ },
+ {
+ "id": 456,
+ "value": "value_456"
+ },
+ {
+ "id": 457,
+ "value": "value_457"
+ },
+ {
+ "id": 458,
+ "value": "value_458"
+ },
+ {
+ "id": 459,
+ "value": "value_459"
+ },
+ {
+ "id": 460,
+ "value": "value_460"
+ },
+ {
+ "id": 461,
+ "value": "value_461"
+ },
+ {
+ "id": 462,
+ "value": "value_462"
+ },
+ {
+ "id": 463,
+ "value": "value_463"
+ },
+ {
+ "id": 464,
+ "value": "value_464"
+ },
+ {
+ "id": 465,
+ "value": "value_465"
+ },
+ {
+ "id": 466,
+ "value": "value_466"
+ },
+ {
+ "id": 467,
+ "value": "value_467"
+ },
+ {
+ "id": 468,
+ "value": "value_468"
+ },
+ {
+ "id": 469,
+ "value": "value_469"
+ },
+ {
+ "id": 470,
+ "value": "value_470"
+ },
+ {
+ "id": 471,
+ "value": "value_471"
+ },
+ {
+ "id": 472,
+ "value": "value_472"
+ },
+ {
+ "id": 473,
+ "value": "value_473"
+ },
+ {
+ "id": 474,
+ "value": "value_474"
+ },
+ {
+ "id": 475,
+ "value": "value_475"
+ },
+ {
+ "id": 476,
+ "value": "value_476"
+ },
+ {
+ "id": 477,
+ "value": "value_477"
+ },
+ {
+ "id": 478,
+ "value": "value_478"
+ },
+ {
+ "id": 479,
+ "value": "value_479"
+ },
+ {
+ "id": 480,
+ "value": "value_480"
+ },
+ {
+ "id": 481,
+ "value": "value_481"
+ },
+ {
+ "id": 482,
+ "value": "value_482"
+ },
+ {
+ "id": 483,
+ "value": "value_483"
+ },
+ {
+ "id": 484,
+ "value": "value_484"
+ },
+ {
+ "id": 485,
+ "value": "value_485"
+ },
+ {
+ "id": 486,
+ "value": "value_486"
+ },
+ {
+ "id": 487,
+ "value": "value_487"
+ },
+ {
+ "id": 488,
+ "value": "value_488"
+ },
+ {
+ "id": 489,
+ "value": "value_489"
+ },
+ {
+ "id": 490,
+ "value": "value_490"
+ },
+ {
+ "id": 491,
+ "value": "value_491"
+ },
+ {
+ "id": 492,
+ "value": "value_492"
+ },
+ {
+ "id": 493,
+ "value": "value_493"
+ },
+ {
+ "id": 494,
+ "value": "value_494"
+ },
+ {
+ "id": 495,
+ "value": "value_495"
+ },
+ {
+ "id": 496,
+ "value": "value_496"
+ },
+ {
+ "id": 497,
+ "value": "value_497"
+ },
+ {
+ "id": 498,
+ "value": "value_498"
+ },
+ {
+ "id": 499,
+ "value": "value_499"
+ },
+ {
+ "id": 500,
+ "value": "value_500"
+ },
+ {
+ "id": 501,
+ "value": "value_501"
+ },
+ {
+ "id": 502,
+ "value": "value_502"
+ },
+ {
+ "id": 503,
+ "value": "value_503"
+ },
+ {
+ "id": 504,
+ "value": "value_504"
+ },
+ {
+ "id": 505,
+ "value": "value_505"
+ },
+ {
+ "id": 506,
+ "value": "value_506"
+ },
+ {
+ "id": 507,
+ "value": "value_507"
+ },
+ {
+ "id": 508,
+ "value": "value_508"
+ },
+ {
+ "id": 509,
+ "value": "value_509"
+ },
+ {
+ "id": 510,
+ "value": "value_510"
+ },
+ {
+ "id": 511,
+ "value": "value_511"
+ },
+ {
+ "id": 512,
+ "value": "value_512"
+ },
+ {
+ "id": 513,
+ "value": "value_513"
+ },
+ {
+ "id": 514,
+ "value": "value_514"
+ },
+ {
+ "id": 515,
+ "value": "value_515"
+ },
+ {
+ "id": 516,
+ "value": "value_516"
+ },
+ {
+ "id": 517,
+ "value": "value_517"
+ },
+ {
+ "id": 518,
+ "value": "value_518"
+ },
+ {
+ "id": 519,
+ "value": "value_519"
+ },
+ {
+ "id": 520,
+ "value": "value_520"
+ },
+ {
+ "id": 521,
+ "value": "value_521"
+ },
+ {
+ "id": 522,
+ "value": "value_522"
+ },
+ {
+ "id": 523,
+ "value": "value_523"
+ },
+ {
+ "id": 524,
+ "value": "value_524"
+ },
+ {
+ "id": 525,
+ "value": "value_525"
+ },
+ {
+ "id": 526,
+ "value": "value_526"
+ },
+ {
+ "id": 527,
+ "value": "value_527"
+ },
+ {
+ "id": 528,
+ "value": "value_528"
+ },
+ {
+ "id": 529,
+ "value": "value_529"
+ },
+ {
+ "id": 530,
+ "value": "value_530"
+ },
+ {
+ "id": 531,
+ "value": "value_531"
+ },
+ {
+ "id": 532,
+ "value": "value_532"
+ },
+ {
+ "id": 533,
+ "value": "value_533"
+ },
+ {
+ "id": 534,
+ "value": "value_534"
+ },
+ {
+ "id": 535,
+ "value": "value_535"
+ },
+ {
+ "id": 536,
+ "value": "value_536"
+ },
+ {
+ "id": 537,
+ "value": "value_537"
+ },
+ {
+ "id": 538,
+ "value": "value_538"
+ },
+ {
+ "id": 539,
+ "value": "value_539"
+ },
+ {
+ "id": 540,
+ "value": "value_540"
+ },
+ {
+ "id": 541,
+ "value": "value_541"
+ },
+ {
+ "id": 542,
+ "value": "value_542"
+ },
+ {
+ "id": 543,
+ "value": "value_543"
+ },
+ {
+ "id": 544,
+ "value": "value_544"
+ },
+ {
+ "id": 545,
+ "value": "value_545"
+ },
+ {
+ "id": 546,
+ "value": "value_546"
+ },
+ {
+ "id": 547,
+ "value": "value_547"
+ },
+ {
+ "id": 548,
+ "value": "value_548"
+ },
+ {
+ "id": 549,
+ "value": "value_549"
+ },
+ {
+ "id": 550,
+ "value": "value_550"
+ },
+ {
+ "id": 551,
+ "value": "value_551"
+ },
+ {
+ "id": 552,
+ "value": "value_552"
+ },
+ {
+ "id": 553,
+ "value": "value_553"
+ },
+ {
+ "id": 554,
+ "value": "value_554"
+ },
+ {
+ "id": 555,
+ "value": "value_555"
+ },
+ {
+ "id": 556,
+ "value": "value_556"
+ },
+ {
+ "id": 557,
+ "value": "value_557"
+ },
+ {
+ "id": 558,
+ "value": "value_558"
+ },
+ {
+ "id": 559,
+ "value": "value_559"
+ },
+ {
+ "id": 560,
+ "value": "value_560"
+ },
+ {
+ "id": 561,
+ "value": "value_561"
+ },
+ {
+ "id": 562,
+ "value": "value_562"
+ },
+ {
+ "id": 563,
+ "value": "value_563"
+ },
+ {
+ "id": 564,
+ "value": "value_564"
+ },
+ {
+ "id": 565,
+ "value": "value_565"
+ },
+ {
+ "id": 566,
+ "value": "value_566"
+ },
+ {
+ "id": 567,
+ "value": "value_567"
+ },
+ {
+ "id": 568,
+ "value": "value_568"
+ },
+ {
+ "id": 569,
+ "value": "value_569"
+ },
+ {
+ "id": 570,
+ "value": "value_570"
+ },
+ {
+ "id": 571,
+ "value": "value_571"
+ },
+ {
+ "id": 572,
+ "value": "value_572"
+ },
+ {
+ "id": 573,
+ "value": "value_573"
+ },
+ {
+ "id": 574,
+ "value": "value_574"
+ },
+ {
+ "id": 575,
+ "value": "value_575"
+ },
+ {
+ "id": 576,
+ "value": "value_576"
+ },
+ {
+ "id": 577,
+ "value": "value_577"
+ },
+ {
+ "id": 578,
+ "value": "value_578"
+ },
+ {
+ "id": 579,
+ "value": "value_579"
+ },
+ {
+ "id": 580,
+ "value": "value_580"
+ },
+ {
+ "id": 581,
+ "value": "value_581"
+ },
+ {
+ "id": 582,
+ "value": "value_582"
+ },
+ {
+ "id": 583,
+ "value": "value_583"
+ },
+ {
+ "id": 584,
+ "value": "value_584"
+ },
+ {
+ "id": 585,
+ "value": "value_585"
+ },
+ {
+ "id": 586,
+ "value": "value_586"
+ },
+ {
+ "id": 587,
+ "value": "value_587"
+ },
+ {
+ "id": 588,
+ "value": "value_588"
+ },
+ {
+ "id": 589,
+ "value": "value_589"
+ },
+ {
+ "id": 590,
+ "value": "value_590"
+ },
+ {
+ "id": 591,
+ "value": "value_591"
+ },
+ {
+ "id": 592,
+ "value": "value_592"
+ },
+ {
+ "id": 593,
+ "value": "value_593"
+ },
+ {
+ "id": 594,
+ "value": "value_594"
+ },
+ {
+ "id": 595,
+ "value": "value_595"
+ },
+ {
+ "id": 596,
+ "value": "value_596"
+ },
+ {
+ "id": 597,
+ "value": "value_597"
+ },
+ {
+ "id": 598,
+ "value": "value_598"
+ },
+ {
+ "id": 599,
+ "value": "value_599"
+ },
+ {
+ "id": 600,
+ "value": "value_600"
+ },
+ {
+ "id": 601,
+ "value": "value_601"
+ },
+ {
+ "id": 602,
+ "value": "value_602"
+ },
+ {
+ "id": 603,
+ "value": "value_603"
+ },
+ {
+ "id": 604,
+ "value": "value_604"
+ },
+ {
+ "id": 605,
+ "value": "value_605"
+ },
+ {
+ "id": 606,
+ "value": "value_606"
+ },
+ {
+ "id": 607,
+ "value": "value_607"
+ },
+ {
+ "id": 608,
+ "value": "value_608"
+ },
+ {
+ "id": 609,
+ "value": "value_609"
+ },
+ {
+ "id": 610,
+ "value": "value_610"
+ },
+ {
+ "id": 611,
+ "value": "value_611"
+ },
+ {
+ "id": 612,
+ "value": "value_612"
+ },
+ {
+ "id": 613,
+ "value": "value_613"
+ },
+ {
+ "id": 614,
+ "value": "value_614"
+ },
+ {
+ "id": 615,
+ "value": "value_615"
+ },
+ {
+ "id": 616,
+ "value": "value_616"
+ },
+ {
+ "id": 617,
+ "value": "value_617"
+ },
+ {
+ "id": 618,
+ "value": "value_618"
+ },
+ {
+ "id": 619,
+ "value": "value_619"
+ },
+ {
+ "id": 620,
+ "value": "value_620"
+ },
+ {
+ "id": 621,
+ "value": "value_621"
+ },
+ {
+ "id": 622,
+ "value": "value_622"
+ },
+ {
+ "id": 623,
+ "value": "value_623"
+ },
+ {
+ "id": 624,
+ "value": "value_624"
+ },
+ {
+ "id": 625,
+ "value": "value_625"
+ },
+ {
+ "id": 626,
+ "value": "value_626"
+ },
+ {
+ "id": 627,
+ "value": "value_627"
+ },
+ {
+ "id": 628,
+ "value": "value_628"
+ },
+ {
+ "id": 629,
+ "value": "value_629"
+ },
+ {
+ "id": 630,
+ "value": "value_630"
+ },
+ {
+ "id": 631,
+ "value": "value_631"
+ },
+ {
+ "id": 632,
+ "value": "value_632"
+ },
+ {
+ "id": 633,
+ "value": "value_633"
+ },
+ {
+ "id": 634,
+ "value": "value_634"
+ },
+ {
+ "id": 635,
+ "value": "value_635"
+ },
+ {
+ "id": 636,
+ "value": "value_636"
+ },
+ {
+ "id": 637,
+ "value": "value_637"
+ },
+ {
+ "id": 638,
+ "value": "value_638"
+ },
+ {
+ "id": 639,
+ "value": "value_639"
+ },
+ {
+ "id": 640,
+ "value": "value_640"
+ },
+ {
+ "id": 641,
+ "value": "value_641"
+ },
+ {
+ "id": 642,
+ "value": "value_642"
+ },
+ {
+ "id": 643,
+ "value": "value_643"
+ },
+ {
+ "id": 644,
+ "value": "value_644"
+ },
+ {
+ "id": 645,
+ "value": "value_645"
+ },
+ {
+ "id": 646,
+ "value": "value_646"
+ },
+ {
+ "id": 647,
+ "value": "value_647"
+ },
+ {
+ "id": 648,
+ "value": "value_648"
+ },
+ {
+ "id": 649,
+ "value": "value_649"
+ },
+ {
+ "id": 650,
+ "value": "value_650"
+ },
+ {
+ "id": 651,
+ "value": "value_651"
+ },
+ {
+ "id": 652,
+ "value": "value_652"
+ },
+ {
+ "id": 653,
+ "value": "value_653"
+ },
+ {
+ "id": 654,
+ "value": "value_654"
+ },
+ {
+ "id": 655,
+ "value": "value_655"
+ },
+ {
+ "id": 656,
+ "value": "value_656"
+ },
+ {
+ "id": 657,
+ "value": "value_657"
+ },
+ {
+ "id": 658,
+ "value": "value_658"
+ },
+ {
+ "id": 659,
+ "value": "value_659"
+ },
+ {
+ "id": 660,
+ "value": "value_660"
+ },
+ {
+ "id": 661,
+ "value": "value_661"
+ },
+ {
+ "id": 662,
+ "value": "value_662"
+ },
+ {
+ "id": 663,
+ "value": "value_663"
+ },
+ {
+ "id": 664,
+ "value": "value_664"
+ },
+ {
+ "id": 665,
+ "value": "value_665"
+ },
+ {
+ "id": 666,
+ "value": "value_666"
+ },
+ {
+ "id": 667,
+ "value": "value_667"
+ },
+ {
+ "id": 668,
+ "value": "value_668"
+ },
+ {
+ "id": 669,
+ "value": "value_669"
+ },
+ {
+ "id": 670,
+ "value": "value_670"
+ },
+ {
+ "id": 671,
+ "value": "value_671"
+ },
+ {
+ "id": 672,
+ "value": "value_672"
+ },
+ {
+ "id": 673,
+ "value": "value_673"
+ },
+ {
+ "id": 674,
+ "value": "value_674"
+ },
+ {
+ "id": 675,
+ "value": "value_675"
+ },
+ {
+ "id": 676,
+ "value": "value_676"
+ },
+ {
+ "id": 677,
+ "value": "value_677"
+ },
+ {
+ "id": 678,
+ "value": "value_678"
+ },
+ {
+ "id": 679,
+ "value": "value_679"
+ },
+ {
+ "id": 680,
+ "value": "value_680"
+ },
+ {
+ "id": 681,
+ "value": "value_681"
+ },
+ {
+ "id": 682,
+ "value": "value_682"
+ },
+ {
+ "id": 683,
+ "value": "value_683"
+ },
+ {
+ "id": 684,
+ "value": "value_684"
+ },
+ {
+ "id": 685,
+ "value": "value_685"
+ },
+ {
+ "id": 686,
+ "value": "value_686"
+ },
+ {
+ "id": 687,
+ "value": "value_687"
+ },
+ {
+ "id": 688,
+ "value": "value_688"
+ },
+ {
+ "id": 689,
+ "value": "value_689"
+ },
+ {
+ "id": 690,
+ "value": "value_690"
+ },
+ {
+ "id": 691,
+ "value": "value_691"
+ },
+ {
+ "id": 692,
+ "value": "value_692"
+ },
+ {
+ "id": 693,
+ "value": "value_693"
+ },
+ {
+ "id": 694,
+ "value": "value_694"
+ },
+ {
+ "id": 695,
+ "value": "value_695"
+ },
+ {
+ "id": 696,
+ "value": "value_696"
+ },
+ {
+ "id": 697,
+ "value": "value_697"
+ },
+ {
+ "id": 698,
+ "value": "value_698"
+ },
+ {
+ "id": 699,
+ "value": "value_699"
+ },
+ {
+ "id": 700,
+ "value": "value_700"
+ },
+ {
+ "id": 701,
+ "value": "value_701"
+ },
+ {
+ "id": 702,
+ "value": "value_702"
+ },
+ {
+ "id": 703,
+ "value": "value_703"
+ },
+ {
+ "id": 704,
+ "value": "value_704"
+ },
+ {
+ "id": 705,
+ "value": "value_705"
+ },
+ {
+ "id": 706,
+ "value": "value_706"
+ },
+ {
+ "id": 707,
+ "value": "value_707"
+ },
+ {
+ "id": 708,
+ "value": "value_708"
+ },
+ {
+ "id": 709,
+ "value": "value_709"
+ },
+ {
+ "id": 710,
+ "value": "value_710"
+ },
+ {
+ "id": 711,
+ "value": "value_711"
+ },
+ {
+ "id": 712,
+ "value": "value_712"
+ },
+ {
+ "id": 713,
+ "value": "value_713"
+ },
+ {
+ "id": 714,
+ "value": "value_714"
+ },
+ {
+ "id": 715,
+ "value": "value_715"
+ },
+ {
+ "id": 716,
+ "value": "value_716"
+ },
+ {
+ "id": 717,
+ "value": "value_717"
+ },
+ {
+ "id": 718,
+ "value": "value_718"
+ },
+ {
+ "id": 719,
+ "value": "value_719"
+ },
+ {
+ "id": 720,
+ "value": "value_720"
+ },
+ {
+ "id": 721,
+ "value": "value_721"
+ },
+ {
+ "id": 722,
+ "value": "value_722"
+ },
+ {
+ "id": 723,
+ "value": "value_723"
+ },
+ {
+ "id": 724,
+ "value": "value_724"
+ },
+ {
+ "id": 725,
+ "value": "value_725"
+ },
+ {
+ "id": 726,
+ "value": "value_726"
+ },
+ {
+ "id": 727,
+ "value": "value_727"
+ },
+ {
+ "id": 728,
+ "value": "value_728"
+ },
+ {
+ "id": 729,
+ "value": "value_729"
+ },
+ {
+ "id": 730,
+ "value": "value_730"
+ },
+ {
+ "id": 731,
+ "value": "value_731"
+ },
+ {
+ "id": 732,
+ "value": "value_732"
+ },
+ {
+ "id": 733,
+ "value": "value_733"
+ },
+ {
+ "id": 734,
+ "value": "value_734"
+ },
+ {
+ "id": 735,
+ "value": "value_735"
+ },
+ {
+ "id": 736,
+ "value": "value_736"
+ },
+ {
+ "id": 737,
+ "value": "value_737"
+ },
+ {
+ "id": 738,
+ "value": "value_738"
+ },
+ {
+ "id": 739,
+ "value": "value_739"
+ },
+ {
+ "id": 740,
+ "value": "value_740"
+ },
+ {
+ "id": 741,
+ "value": "value_741"
+ },
+ {
+ "id": 742,
+ "value": "value_742"
+ },
+ {
+ "id": 743,
+ "value": "value_743"
+ },
+ {
+ "id": 744,
+ "value": "value_744"
+ },
+ {
+ "id": 745,
+ "value": "value_745"
+ },
+ {
+ "id": 746,
+ "value": "value_746"
+ },
+ {
+ "id": 747,
+ "value": "value_747"
+ },
+ {
+ "id": 748,
+ "value": "value_748"
+ },
+ {
+ "id": 749,
+ "value": "value_749"
+ },
+ {
+ "id": 750,
+ "value": "value_750"
+ },
+ {
+ "id": 751,
+ "value": "value_751"
+ },
+ {
+ "id": 752,
+ "value": "value_752"
+ },
+ {
+ "id": 753,
+ "value": "value_753"
+ },
+ {
+ "id": 754,
+ "value": "value_754"
+ },
+ {
+ "id": 755,
+ "value": "value_755"
+ },
+ {
+ "id": 756,
+ "value": "value_756"
+ },
+ {
+ "id": 757,
+ "value": "value_757"
+ },
+ {
+ "id": 758,
+ "value": "value_758"
+ },
+ {
+ "id": 759,
+ "value": "value_759"
+ },
+ {
+ "id": 760,
+ "value": "value_760"
+ },
+ {
+ "id": 761,
+ "value": "value_761"
+ },
+ {
+ "id": 762,
+ "value": "value_762"
+ },
+ {
+ "id": 763,
+ "value": "value_763"
+ },
+ {
+ "id": 764,
+ "value": "value_764"
+ },
+ {
+ "id": 765,
+ "value": "value_765"
+ },
+ {
+ "id": 766,
+ "value": "value_766"
+ },
+ {
+ "id": 767,
+ "value": "value_767"
+ },
+ {
+ "id": 768,
+ "value": "value_768"
+ },
+ {
+ "id": 769,
+ "value": "value_769"
+ },
+ {
+ "id": 770,
+ "value": "value_770"
+ },
+ {
+ "id": 771,
+ "value": "value_771"
+ },
+ {
+ "id": 772,
+ "value": "value_772"
+ },
+ {
+ "id": 773,
+ "value": "value_773"
+ },
+ {
+ "id": 774,
+ "value": "value_774"
+ },
+ {
+ "id": 775,
+ "value": "value_775"
+ },
+ {
+ "id": 776,
+ "value": "value_776"
+ },
+ {
+ "id": 777,
+ "value": "value_777"
+ },
+ {
+ "id": 778,
+ "value": "value_778"
+ },
+ {
+ "id": 779,
+ "value": "value_779"
+ },
+ {
+ "id": 780,
+ "value": "value_780"
+ },
+ {
+ "id": 781,
+ "value": "value_781"
+ },
+ {
+ "id": 782,
+ "value": "value_782"
+ },
+ {
+ "id": 783,
+ "value": "value_783"
+ },
+ {
+ "id": 784,
+ "value": "value_784"
+ },
+ {
+ "id": 785,
+ "value": "value_785"
+ },
+ {
+ "id": 786,
+ "value": "value_786"
+ },
+ {
+ "id": 787,
+ "value": "value_787"
+ },
+ {
+ "id": 788,
+ "value": "value_788"
+ },
+ {
+ "id": 789,
+ "value": "value_789"
+ },
+ {
+ "id": 790,
+ "value": "value_790"
+ },
+ {
+ "id": 791,
+ "value": "value_791"
+ },
+ {
+ "id": 792,
+ "value": "value_792"
+ },
+ {
+ "id": 793,
+ "value": "value_793"
+ },
+ {
+ "id": 794,
+ "value": "value_794"
+ },
+ {
+ "id": 795,
+ "value": "value_795"
+ },
+ {
+ "id": 796,
+ "value": "value_796"
+ },
+ {
+ "id": 797,
+ "value": "value_797"
+ },
+ {
+ "id": 798,
+ "value": "value_798"
+ },
+ {
+ "id": 799,
+ "value": "value_799"
+ },
+ {
+ "id": 800,
+ "value": "value_800"
+ },
+ {
+ "id": 801,
+ "value": "value_801"
+ },
+ {
+ "id": 802,
+ "value": "value_802"
+ },
+ {
+ "id": 803,
+ "value": "value_803"
+ },
+ {
+ "id": 804,
+ "value": "value_804"
+ },
+ {
+ "id": 805,
+ "value": "value_805"
+ },
+ {
+ "id": 806,
+ "value": "value_806"
+ },
+ {
+ "id": 807,
+ "value": "value_807"
+ },
+ {
+ "id": 808,
+ "value": "value_808"
+ },
+ {
+ "id": 809,
+ "value": "value_809"
+ },
+ {
+ "id": 810,
+ "value": "value_810"
+ },
+ {
+ "id": 811,
+ "value": "value_811"
+ },
+ {
+ "id": 812,
+ "value": "value_812"
+ },
+ {
+ "id": 813,
+ "value": "value_813"
+ },
+ {
+ "id": 814,
+ "value": "value_814"
+ },
+ {
+ "id": 815,
+ "value": "value_815"
+ },
+ {
+ "id": 816,
+ "value": "value_816"
+ },
+ {
+ "id": 817,
+ "value": "value_817"
+ },
+ {
+ "id": 818,
+ "value": "value_818"
+ },
+ {
+ "id": 819,
+ "value": "value_819"
+ },
+ {
+ "id": 820,
+ "value": "value_820"
+ },
+ {
+ "id": 821,
+ "value": "value_821"
+ },
+ {
+ "id": 822,
+ "value": "value_822"
+ },
+ {
+ "id": 823,
+ "value": "value_823"
+ },
+ {
+ "id": 824,
+ "value": "value_824"
+ },
+ {
+ "id": 825,
+ "value": "value_825"
+ },
+ {
+ "id": 826,
+ "value": "value_826"
+ },
+ {
+ "id": 827,
+ "value": "value_827"
+ },
+ {
+ "id": 828,
+ "value": "value_828"
+ },
+ {
+ "id": 829,
+ "value": "value_829"
+ },
+ {
+ "id": 830,
+ "value": "value_830"
+ },
+ {
+ "id": 831,
+ "value": "value_831"
+ },
+ {
+ "id": 832,
+ "value": "value_832"
+ },
+ {
+ "id": 833,
+ "value": "value_833"
+ },
+ {
+ "id": 834,
+ "value": "value_834"
+ },
+ {
+ "id": 835,
+ "value": "value_835"
+ },
+ {
+ "id": 836,
+ "value": "value_836"
+ },
+ {
+ "id": 837,
+ "value": "value_837"
+ },
+ {
+ "id": 838,
+ "value": "value_838"
+ },
+ {
+ "id": 839,
+ "value": "value_839"
+ },
+ {
+ "id": 840,
+ "value": "value_840"
+ },
+ {
+ "id": 841,
+ "value": "value_841"
+ },
+ {
+ "id": 842,
+ "value": "value_842"
+ },
+ {
+ "id": 843,
+ "value": "value_843"
+ },
+ {
+ "id": 844,
+ "value": "value_844"
+ },
+ {
+ "id": 845,
+ "value": "value_845"
+ },
+ {
+ "id": 846,
+ "value": "value_846"
+ },
+ {
+ "id": 847,
+ "value": "value_847"
+ },
+ {
+ "id": 848,
+ "value": "value_848"
+ },
+ {
+ "id": 849,
+ "value": "value_849"
+ },
+ {
+ "id": 850,
+ "value": "value_850"
+ },
+ {
+ "id": 851,
+ "value": "value_851"
+ },
+ {
+ "id": 852,
+ "value": "value_852"
+ },
+ {
+ "id": 853,
+ "value": "value_853"
+ },
+ {
+ "id": 854,
+ "value": "value_854"
+ },
+ {
+ "id": 855,
+ "value": "value_855"
+ },
+ {
+ "id": 856,
+ "value": "value_856"
+ },
+ {
+ "id": 857,
+ "value": "value_857"
+ },
+ {
+ "id": 858,
+ "value": "value_858"
+ },
+ {
+ "id": 859,
+ "value": "value_859"
+ },
+ {
+ "id": 860,
+ "value": "value_860"
+ },
+ {
+ "id": 861,
+ "value": "value_861"
+ },
+ {
+ "id": 862,
+ "value": "value_862"
+ },
+ {
+ "id": 863,
+ "value": "value_863"
+ },
+ {
+ "id": 864,
+ "value": "value_864"
+ },
+ {
+ "id": 865,
+ "value": "value_865"
+ },
+ {
+ "id": 866,
+ "value": "value_866"
+ },
+ {
+ "id": 867,
+ "value": "value_867"
+ },
+ {
+ "id": 868,
+ "value": "value_868"
+ },
+ {
+ "id": 869,
+ "value": "value_869"
+ },
+ {
+ "id": 870,
+ "value": "value_870"
+ },
+ {
+ "id": 871,
+ "value": "value_871"
+ },
+ {
+ "id": 872,
+ "value": "value_872"
+ },
+ {
+ "id": 873,
+ "value": "value_873"
+ },
+ {
+ "id": 874,
+ "value": "value_874"
+ },
+ {
+ "id": 875,
+ "value": "value_875"
+ },
+ {
+ "id": 876,
+ "value": "value_876"
+ },
+ {
+ "id": 877,
+ "value": "value_877"
+ },
+ {
+ "id": 878,
+ "value": "value_878"
+ },
+ {
+ "id": 879,
+ "value": "value_879"
+ },
+ {
+ "id": 880,
+ "value": "value_880"
+ },
+ {
+ "id": 881,
+ "value": "value_881"
+ },
+ {
+ "id": 882,
+ "value": "value_882"
+ },
+ {
+ "id": 883,
+ "value": "value_883"
+ },
+ {
+ "id": 884,
+ "value": "value_884"
+ },
+ {
+ "id": 885,
+ "value": "value_885"
+ },
+ {
+ "id": 886,
+ "value": "value_886"
+ },
+ {
+ "id": 887,
+ "value": "value_887"
+ },
+ {
+ "id": 888,
+ "value": "value_888"
+ },
+ {
+ "id": 889,
+ "value": "value_889"
+ },
+ {
+ "id": 890,
+ "value": "value_890"
+ },
+ {
+ "id": 891,
+ "value": "value_891"
+ },
+ {
+ "id": 892,
+ "value": "value_892"
+ },
+ {
+ "id": 893,
+ "value": "value_893"
+ },
+ {
+ "id": 894,
+ "value": "value_894"
+ },
+ {
+ "id": 895,
+ "value": "value_895"
+ },
+ {
+ "id": 896,
+ "value": "value_896"
+ },
+ {
+ "id": 897,
+ "value": "value_897"
+ },
+ {
+ "id": 898,
+ "value": "value_898"
+ },
+ {
+ "id": 899,
+ "value": "value_899"
+ },
+ {
+ "id": 900,
+ "value": "value_900"
+ },
+ {
+ "id": 901,
+ "value": "value_901"
+ },
+ {
+ "id": 902,
+ "value": "value_902"
+ },
+ {
+ "id": 903,
+ "value": "value_903"
+ },
+ {
+ "id": 904,
+ "value": "value_904"
+ },
+ {
+ "id": 905,
+ "value": "value_905"
+ },
+ {
+ "id": 906,
+ "value": "value_906"
+ },
+ {
+ "id": 907,
+ "value": "value_907"
+ },
+ {
+ "id": 908,
+ "value": "value_908"
+ },
+ {
+ "id": 909,
+ "value": "value_909"
+ },
+ {
+ "id": 910,
+ "value": "value_910"
+ },
+ {
+ "id": 911,
+ "value": "value_911"
+ },
+ {
+ "id": 912,
+ "value": "value_912"
+ },
+ {
+ "id": 913,
+ "value": "value_913"
+ },
+ {
+ "id": 914,
+ "value": "value_914"
+ },
+ {
+ "id": 915,
+ "value": "value_915"
+ },
+ {
+ "id": 916,
+ "value": "value_916"
+ },
+ {
+ "id": 917,
+ "value": "value_917"
+ },
+ {
+ "id": 918,
+ "value": "value_918"
+ },
+ {
+ "id": 919,
+ "value": "value_919"
+ },
+ {
+ "id": 920,
+ "value": "value_920"
+ },
+ {
+ "id": 921,
+ "value": "value_921"
+ },
+ {
+ "id": 922,
+ "value": "value_922"
+ },
+ {
+ "id": 923,
+ "value": "value_923"
+ },
+ {
+ "id": 924,
+ "value": "value_924"
+ },
+ {
+ "id": 925,
+ "value": "value_925"
+ },
+ {
+ "id": 926,
+ "value": "value_926"
+ },
+ {
+ "id": 927,
+ "value": "value_927"
+ },
+ {
+ "id": 928,
+ "value": "value_928"
+ },
+ {
+ "id": 929,
+ "value": "value_929"
+ },
+ {
+ "id": 930,
+ "value": "value_930"
+ },
+ {
+ "id": 931,
+ "value": "value_931"
+ },
+ {
+ "id": 932,
+ "value": "value_932"
+ },
+ {
+ "id": 933,
+ "value": "value_933"
+ },
+ {
+ "id": 934,
+ "value": "value_934"
+ },
+ {
+ "id": 935,
+ "value": "value_935"
+ },
+ {
+ "id": 936,
+ "value": "value_936"
+ },
+ {
+ "id": 937,
+ "value": "value_937"
+ },
+ {
+ "id": 938,
+ "value": "value_938"
+ },
+ {
+ "id": 939,
+ "value": "value_939"
+ },
+ {
+ "id": 940,
+ "value": "value_940"
+ },
+ {
+ "id": 941,
+ "value": "value_941"
+ },
+ {
+ "id": 942,
+ "value": "value_942"
+ },
+ {
+ "id": 943,
+ "value": "value_943"
+ },
+ {
+ "id": 944,
+ "value": "value_944"
+ },
+ {
+ "id": 945,
+ "value": "value_945"
+ },
+ {
+ "id": 946,
+ "value": "value_946"
+ },
+ {
+ "id": 947,
+ "value": "value_947"
+ },
+ {
+ "id": 948,
+ "value": "value_948"
+ },
+ {
+ "id": 949,
+ "value": "value_949"
+ },
+ {
+ "id": 950,
+ "value": "value_950"
+ },
+ {
+ "id": 951,
+ "value": "value_951"
+ },
+ {
+ "id": 952,
+ "value": "value_952"
+ },
+ {
+ "id": 953,
+ "value": "value_953"
+ },
+ {
+ "id": 954,
+ "value": "value_954"
+ },
+ {
+ "id": 955,
+ "value": "value_955"
+ },
+ {
+ "id": 956,
+ "value": "value_956"
+ },
+ {
+ "id": 957,
+ "value": "value_957"
+ },
+ {
+ "id": 958,
+ "value": "value_958"
+ },
+ {
+ "id": 959,
+ "value": "value_959"
+ },
+ {
+ "id": 960,
+ "value": "value_960"
+ },
+ {
+ "id": 961,
+ "value": "value_961"
+ },
+ {
+ "id": 962,
+ "value": "value_962"
+ },
+ {
+ "id": 963,
+ "value": "value_963"
+ },
+ {
+ "id": 964,
+ "value": "value_964"
+ },
+ {
+ "id": 965,
+ "value": "value_965"
+ },
+ {
+ "id": 966,
+ "value": "value_966"
+ },
+ {
+ "id": 967,
+ "value": "value_967"
+ },
+ {
+ "id": 968,
+ "value": "value_968"
+ },
+ {
+ "id": 969,
+ "value": "value_969"
+ },
+ {
+ "id": 970,
+ "value": "value_970"
+ },
+ {
+ "id": 971,
+ "value": "value_971"
+ },
+ {
+ "id": 972,
+ "value": "value_972"
+ },
+ {
+ "id": 973,
+ "value": "value_973"
+ },
+ {
+ "id": 974,
+ "value": "value_974"
+ },
+ {
+ "id": 975,
+ "value": "value_975"
+ },
+ {
+ "id": 976,
+ "value": "value_976"
+ },
+ {
+ "id": 977,
+ "value": "value_977"
+ },
+ {
+ "id": 978,
+ "value": "value_978"
+ },
+ {
+ "id": 979,
+ "value": "value_979"
+ },
+ {
+ "id": 980,
+ "value": "value_980"
+ },
+ {
+ "id": 981,
+ "value": "value_981"
+ },
+ {
+ "id": 982,
+ "value": "value_982"
+ },
+ {
+ "id": 983,
+ "value": "value_983"
+ },
+ {
+ "id": 984,
+ "value": "value_984"
+ },
+ {
+ "id": 985,
+ "value": "value_985"
+ },
+ {
+ "id": 986,
+ "value": "value_986"
+ },
+ {
+ "id": 987,
+ "value": "value_987"
+ },
+ {
+ "id": 988,
+ "value": "value_988"
+ },
+ {
+ "id": 989,
+ "value": "value_989"
+ },
+ {
+ "id": 990,
+ "value": "value_990"
+ },
+ {
+ "id": 991,
+ "value": "value_991"
+ },
+ {
+ "id": 992,
+ "value": "value_992"
+ },
+ {
+ "id": 993,
+ "value": "value_993"
+ },
+ {
+ "id": 994,
+ "value": "value_994"
+ },
+ {
+ "id": 995,
+ "value": "value_995"
+ },
+ {
+ "id": 996,
+ "value": "value_996"
+ },
+ {
+ "id": 997,
+ "value": "value_997"
+ },
+ {
+ "id": 998,
+ "value": "value_998"
+ },
+ {
+ "id": 999,
+ "value": "value_999"
+ }
+ ],
+ "test_inserts.TestYdbInsertsOperations.test_bulk_upsert_same_values": [
+ {
+ "id": 1,
+ "value": "duplicate_value_2"
+ },
+ {
+ "id": 2,
+ "value": "unique_value"
+ }
+ ],
+ "test_inserts.TestYdbInsertsOperations.test_bulk_upsert_same_values_simple": [
+ {
+ "id": 1,
+ "value": "initial_value"
+ },
+ {
+ "id": 2,
+ "value": "unique_value"
+ }
+ ],
+ "test_inserts.TestYdbInsertsOperations.test_bulk_upsert_with_valid_and_invalid_data": [
+ {
+ "count": 0
+ }
+ ],
+ "test_inserts.TestYdbInsertsOperations.test_concurrent_inserts": [
+ {
+ "count": 100
+ }
+ ],
+ "test_inserts.TestYdbInsertsOperations.test_transactional_update": [
+ {
+ "value": "transactional_update"
+ }
+ ],
+ "test_sql.TestYdbKvWorkload.test_dynumber": [
+ {
+ "column0": 4
+ }
+ ],
+ "test_sql.TestYdbKvWorkload.test_minimal_maximal_values[Int32--2147483648-False]": [
+ {
+ "id": 1,
+ "value": -2147483648
+ }
+ ],
+ "test_sql.TestYdbKvWorkload.test_minimal_maximal_values[Int32--2147483648-True]": [
+ {
+ "id": 1,
+ "value": -2147483648
+ }
+ ],
+ "test_sql.TestYdbKvWorkload.test_minimal_maximal_values[Int32-2147483647-False]": [
+ {
+ "id": 1,
+ "value": 2147483647
+ }
+ ],
+ "test_sql.TestYdbKvWorkload.test_minimal_maximal_values[Int32-2147483647-True]": [
+ {
+ "id": 1,
+ "value": 2147483647
+ }
+ ],
+ "test_sql.TestYdbKvWorkload.test_minimal_maximal_values[Int64--9223372036854775808-False]": [
+ {
+ "id": 1,
+ "value": -9223372036854775808
+ }
+ ],
+ "test_sql.TestYdbKvWorkload.test_minimal_maximal_values[Int64--9223372036854775808-True]": [
+ {
+ "id": 1,
+ "value": -9223372036854775808
+ }
+ ],
+ "test_sql.TestYdbKvWorkload.test_minimal_maximal_values[Int64-9223372036854775807-False]": [
+ {
+ "id": 1,
+ "value": 9223372036854775807
+ }
+ ],
+ "test_sql.TestYdbKvWorkload.test_minimal_maximal_values[Int64-9223372036854775807-True]": [
+ {
+ "id": 1,
+ "value": 9223372036854775807
+ }
+ ],
+ "test_sql.TestYdbKvWorkload.test_minimal_maximal_values[UInt32-0-False]": [
+ {
+ "id": 1,
+ "value": 0
+ }
+ ],
+ "test_sql.TestYdbKvWorkload.test_minimal_maximal_values[UInt32-0-True]": [
+ {
+ "id": 1,
+ "value": 0
+ }
+ ],
+ "test_sql.TestYdbKvWorkload.test_minimal_maximal_values[UInt32-4294967295-False]": [
+ {
+ "id": 1,
+ "value": 4294967295
+ }
+ ],
+ "test_sql.TestYdbKvWorkload.test_minimal_maximal_values[UInt32-4294967295-True]": [
+ {
+ "id": 1,
+ "value": 4294967295
+ }
+ ],
+ "test_sql.TestYdbKvWorkload.test_minimal_maximal_values[Uint64-0-False]": [
+ {
+ "id": 1,
+ "value": 0
+ }
+ ],
+ "test_sql.TestYdbKvWorkload.test_minimal_maximal_values[Uint64-0-True]": [
+ {
+ "id": 1,
+ "value": 0
+ }
+ ],
+ "test_sql.TestYdbKvWorkload.test_minimal_maximal_values[Uint64-18446744073709551615-False]": [
+ {
+ "id": 1,
+ "value": 18446744073709551615
+ }
+ ],
+ "test_sql.TestYdbKvWorkload.test_minimal_maximal_values[Uint64-18446744073709551615-True]": [
+ {
+ "id": 1,
+ "value": 18446744073709551615
+ }
+ ]
+}
diff --git a/ydb/tests/sql/test_base.py b/ydb/tests/sql/test_base.py
new file mode 100644
index 0000000000..63c0acb884
--- /dev/null
+++ b/ydb/tests/sql/test_base.py
@@ -0,0 +1,52 @@
+import ydb
+import os
+
+from ydb.tests.library.harness.kikimr_runner import KiKiMR
+from ydb.tests.library.harness.kikimr_config import KikimrConfigGenerator
+from ydb.tests.library.common.types import Erasure
+from typing import Callable, Any, List
+
+
+class TestBase:
+
+ @classmethod
+ def setup_class(cls):
+ cls.database = "/Root"
+ cls.cluster = KiKiMR(KikimrConfigGenerator(erasure=Erasure.NONE))
+ cls.cluster.start()
+ cls.driver = ydb.Driver(
+ ydb.DriverConfig(
+ database=cls.database,
+ endpoint="%s:%s" % (
+ cls.cluster.nodes[1].host, cls.cluster.nodes[1].port
+ )
+ )
+ )
+ cls.driver.wait()
+ cls.pool = ydb.QuerySessionPool(cls.driver)
+
+ @classmethod
+ def teardown_class(cls):
+ cls.pool.stop()
+ cls.driver.stop()
+ cls.cluster.stop()
+
+ def setup_method(self):
+ current_test_full_name = os.environ.get("PYTEST_CURRENT_TEST")
+ self.table_path = "insert_table_" + current_test_full_name.replace("::", ".").removesuffix(" (setup)")
+
+ def query(self, text, tx: ydb.QueryTxContext | None = None) -> List[Any]:
+ results = []
+ if tx is None:
+ result_sets = self.pool.execute_with_retries(text)
+ for result_set in result_sets:
+ results.extend(result_set.rows)
+ else:
+ with tx.execute(text) as result_sets:
+ for result_set in result_sets:
+ results.extend(result_set.rows)
+
+ return results
+
+ def transactional(self, fn: Callable[[ydb.QuerySession], List[Any]]):
+ return self.pool.retry_operation_sync(lambda session: fn(session))
diff --git a/ydb/tests/sql/test_crud.py b/ydb/tests/sql/test_crud.py
new file mode 100644
index 0000000000..d8bfc509b7
--- /dev/null
+++ b/ydb/tests/sql/test_crud.py
@@ -0,0 +1,67 @@
+# -*- coding: utf-8 -*-
+from .test_base import TestBase
+
+
+class TestYdbCrudOperations(TestBase):
+
+ def test_crud_operations(self):
+ """
+ Test basic CRUD operations: Create, Read, Update, Delete
+ """
+
+ table_name = f"{self.table_path}"
+
+ table_definition = f"""
+ CREATE TABLE `{table_name}` (
+ id Int64 NOT NULL,
+ value Utf8 NOT NULL,
+ PRIMARY KEY (id)
+ )
+ PARTITION BY HASH(id)
+ WITH(STORE=COLUMN)
+ """
+
+ self.query(table_definition)
+
+ # Create (Insert)
+ self.query(
+ f"""
+ UPSERT INTO `{table_name}` (id, value) VALUES (1, 'initial_value');
+ """
+ )
+
+ # Read
+ rows = self.query(
+ f"""
+ SELECT value FROM `{table_name}` WHERE id = 1;
+ """
+ )
+ assert len(rows) == 1, "Expected one row after insert"
+ assert rows[0].value == 'initial_value', "Value mismatch for inserted data"
+
+ # Update
+ self.query(
+ f"""
+ UPDATE `{table_name}` SET value = 'updated_value' WHERE id = 1;
+ """
+ )
+ rows = self.query(
+ f"""
+ SELECT value FROM `{table_name}` WHERE id = 1;
+ """
+ )
+ assert len(rows) == 1, "Expected one row after update"
+ assert rows[0].value == 'updated_value', "Value mismatch after update"
+
+ # Delete
+ self.query(
+ f"""
+ DELETE FROM `{table_name}` WHERE id = 1;
+ """
+ )
+ rows = self.query(
+ f"""
+ SELECT value FROM `{table_name}` WHERE id = 1;
+ """
+ )
+ assert len(rows) == 0, "Expected no rows after delete"
diff --git a/ydb/tests/sql/test_inserts.py b/ydb/tests/sql/test_inserts.py
new file mode 100644
index 0000000000..93cc5477bf
--- /dev/null
+++ b/ydb/tests/sql/test_inserts.py
@@ -0,0 +1,378 @@
+# -*- coding: utf-8 -*-
+import ydb
+import pytest
+
+from concurrent.futures import ThreadPoolExecutor
+from .test_base import TestBase
+
+
+class TestYdbInsertsOperations(TestBase):
+
+ def test_insert_multiple_rows(self):
+ """
+ Test inserting multiple rows and verify all are present
+ """
+ table_name = f"{self.table_path}_multiple"
+
+ self.query(
+ f"""
+ CREATE TABLE `{table_name}` (
+ id Int64 NOT NULL,
+ value Utf8 NOT NULL,
+ PRIMARY KEY (id)
+ )
+ PARTITION BY HASH(id)
+ WITH(STORE=COLUMN)
+ """
+ )
+
+ # Insert multiple rows
+ for i in range(100):
+ self.query(
+ f"""
+ UPSERT INTO `{table_name}` (id, value) VALUES ({i}, 'value_{i}');
+ """
+ )
+
+ # Verify all rows are inserted
+ rows = self.query(
+ f"""
+ SELECT COUNT(*) as count FROM `{table_name}`;
+ """
+ )
+ assert len(rows) == 1 and rows[0].count == 100, f"Expected 100 rows, found: {rows[0].count}"
+
+ def test_concurrent_inserts(self):
+ """
+ Test concurrent insertion and verify data integrity
+ """
+ table_name = f"{self.table_path}_concurrent"
+
+ self.query(
+ f"""
+ CREATE TABLE `{table_name}` (
+ id Int64 NOT NULL,
+ value Utf8 NOT NULL,
+ PRIMARY KEY (id)
+ )
+ PARTITION BY HASH(id)
+ WITH(STORE=COLUMN)
+ """
+ )
+
+ # Function to insert data in parallel
+ def insert_data(offset):
+ for i in range(50):
+ self.query(
+ f"""
+ UPSERT INTO `{table_name}` (id, value) VALUES ({offset + i}, 'value_{offset + i}');
+ """
+ )
+
+ # Execute inserts in parallel
+ with ThreadPoolExecutor(max_workers=2) as executor:
+ futures = [executor.submit(insert_data, offset) for offset in [0, 50]]
+
+ # Confirm all tasks completed
+ for future in futures:
+ future.result()
+
+ # Verify all rows are inserted
+ rows = self.query(
+ f"""
+ SELECT COUNT(*) as count FROM `{table_name}`;
+ """
+ )
+
+ return rows
+
+ def test_transactional_update(self):
+ """
+ Test updating data with transaction
+ """
+ table_name = f"{self.table_path}_transaction"
+
+ self.pool.execute_with_retries(
+ f"""
+ CREATE TABLE `{table_name}` (
+ id Int64 NOT NULL,
+ value Utf8 NOT NULL,
+ PRIMARY KEY (id)
+ )
+ PARTITION BY HASH(id)
+ WITH(STORE=COLUMN)
+ """
+ )
+
+ # Insert initial data
+ self.query(
+ f"""
+ UPSERT INTO `{table_name}` (id, value) VALUES (1, 'initial_value');
+ """
+ )
+
+ def process(session):
+ tx = session.transaction().begin()
+ self.query(
+ f"""
+ UPDATE `{table_name}` SET value = 'transactional_update' WHERE id = 1;
+ """,
+ tx
+ )
+ tx.commit()
+
+ tx = session.transaction().begin()
+ self.query(
+ f"""
+ UPDATE `{table_name}` SET value = 'transactional_update_2' WHERE id = 1;
+ """,
+ tx
+ )
+ tx.rollback()
+
+ # Transactional Update
+ self.transactional(process)
+
+ # Verify the update
+ return self.query(
+ f"""
+ SELECT value FROM `{table_name}` WHERE id = 1;
+ """
+ )
+
+ def test_bulk_upsert(self):
+ """
+ Test bulk upsert functionality
+ """
+ table_name = f"{self.table_path}_bulk"
+
+ # Create table
+ self.query(
+ f"""
+ CREATE TABLE `{table_name}` (
+ id Int64 NOT NULL,
+ value Utf8 NOT NULL,
+ PRIMARY KEY (id)
+ )
+ PARTITION BY HASH(id)
+ WITH(STORE=COLUMN)
+ """
+ )
+
+ # Prepare data for bulk upsert
+ data = [{'id': i, 'value': f'value_{i}'} for i in range(1000)]
+
+ column_types = ydb.BulkUpsertColumns()
+ column_types.add_column("id", ydb.PrimitiveType.Int64)
+ column_types.add_column("value", ydb.PrimitiveType.Utf8)
+
+ # Bulk Upsert
+ self.driver.table_client.bulk_upsert(
+ f"{self.database}/{table_name}",
+ data,
+ column_types
+ )
+
+ return self.query(
+ f"""
+ SELECT * FROM `{table_name}` ORDER BY id asc;
+ """
+ )
+
+ def test_bulk_upsert_same_values(self):
+ """
+ Test bulk upsert functionality
+ """
+ table_name = f"{self.table_path}_bulk"
+
+ # Create table
+ self.query(
+ f"""
+ CREATE TABLE `{table_name}` (
+ id Int64 NOT NULL,
+ value Utf8 NOT NULL,
+ PRIMARY KEY (id)
+ )
+ PARTITION BY HASH(id)
+ WITH(STORE=COLUMN)
+ """
+ )
+
+ # Prepare data with duplicate keys
+ data = [
+ {'id': 1, 'value': 'initial_value'},
+ {'id': 1, 'value': 'duplicate_value_1'},
+ {'id': 2, 'value': 'unique_value'},
+ {'id': 1, 'value': 'duplicate_value_2'} # The last entry with id=1 should prevail
+ ]
+
+ column_types = ydb.BulkUpsertColumns()
+ column_types.add_column("id", ydb.PrimitiveType.Int64)
+ column_types.add_column("value", ydb.PrimitiveType.Utf8)
+
+ # Bulk Upsert
+ self.driver.table_client.bulk_upsert(
+ f"{self.database}/{table_name}",
+ data,
+ column_types
+ )
+
+ # Verify that the last value persists for duplicate key
+ return self.query(
+ f"""
+ SELECT id, value FROM `{table_name}` ORDER BY id ASC;
+ """
+ )
+
+ def test_bulk_upsert_same_values_simple(self):
+ """
+ Test bulk upsert functionality
+ """
+ table_name = f"{self.table_path}_bulk_simple"
+
+ # Create table
+ self.query(
+ f"""
+ CREATE TABLE `{table_name}` (
+ id Int64 NOT NULL,
+ value Utf8 NOT NULL,
+ PRIMARY KEY (id)
+ )
+ PARTITION BY HASH(id)
+ WITH(STORE=COLUMN)
+ """
+ )
+
+ # Prepare data
+ data = [
+ {'id': 1, 'value': 'initial_value'},
+ {'id': 2, 'value': 'unique_value'}
+ ]
+
+ column_types = ydb.BulkUpsertColumns()
+ column_types.add_column("id", ydb.PrimitiveType.Int64)
+ column_types.add_column("value", ydb.PrimitiveType.Utf8)
+
+ # Bulk Upsert
+ self.driver.table_client.bulk_upsert(
+ f"{self.database}/{table_name}",
+ data,
+ column_types
+ )
+
+ # Verify that the last value persists for duplicate key
+ return self.query(
+ f"""
+ SELECT id, value FROM `{table_name}` ORDER BY id ASC;
+ """
+ )
+
+ def test_bulk_upsert_with_valid_and_invalid_data(self):
+ """
+ Test bulk upsert with a mix of valid and invalid data to ensure no data is inserted if any invalid data is present.
+ """
+ table_name = f"{self.table_path}_bulk_invalid"
+
+ # Create table
+ self.pool.execute_with_retries(
+ f"""
+ CREATE TABLE `{table_name}` (
+ id Int64 NOT NULL,
+ value Utf8 NOT NULL,
+ PRIMARY KEY (id)
+ );
+ """
+ )
+
+ # Prepare data with one invalid entry
+ valid_data = [
+ {'id': 1, 'value': 'valid_value_1'},
+ {'id': 2, 'value': 'valid_value_2'}
+ ]
+ invalid_data = [
+ {'id': 'invalid_id', 'value': 'invalid_value'} # invalid 'id' type
+ ]
+
+ # Combine data
+ combined_data = valid_data + invalid_data
+
+ # Attempt Bulk Upsert
+ column_types = ydb.BulkUpsertColumns()
+ column_types.add_column("id", ydb.PrimitiveType.Int64)
+ column_types.add_column("value", ydb.PrimitiveType.Utf8)
+
+ with pytest.raises(TypeError):
+ self.driver.table_client.bulk_upsert(
+ f"{self.database}/{table_name}",
+ combined_data,
+ column_types
+ )
+
+ # Verify no data was inserted
+ return self.query(
+ f"""
+ SELECT COUNT(*) as count FROM `{table_name}`;
+ """
+ )
+
+ def test_bulk_upsert_parallel(self):
+ """
+ Test parallel insertion of 100,000 rows using bulk upsert and verify all data is inserted correctly.
+ """
+ table_name = f"{self.table_path}_bulk_parallel"
+
+ # Create table
+ self.pool.execute_with_retries(
+ f"""
+ CREATE TABLE `{table_name}` (
+ id Int64 NOT NULL,
+ value Utf8 NOT NULL,
+ PRIMARY KEY (id)
+ );
+ """
+ )
+
+ # Function to perform bulk upsert
+ def bulk_upsert_task(start, end):
+ data = [{'id': i, 'value': f'value_{i}'} for i in range(start, end)]
+
+ column_types = ydb.BulkUpsertColumns()
+ column_types.add_column("id", ydb.PrimitiveType.Int64)
+ column_types.add_column("value", ydb.PrimitiveType.Utf8)
+
+ self.driver.table_client.bulk_upsert(
+ f"{self.database}/{table_name}",
+ data,
+ column_types
+ )
+
+ # Number of rows and chunk size
+ total_rows = 100000
+ chunk_size = 10000 # Chunk size for each thread
+
+ # Parallel execution
+ with ThreadPoolExecutor(max_workers=10) as executor:
+ futures = [
+ executor.submit(bulk_upsert_task, i, i + chunk_size)
+ for i in range(0, total_rows, chunk_size)
+ ]
+
+ # Ensure all threads complete
+ for future in futures:
+ future.result()
+
+ # Verify the total inserted rows
+ rows = self.query(
+ f"""
+ SELECT id, value FROM `{table_name}` ORDER BY id ASC;
+ """
+ )
+
+ assert len(rows) == total_rows, f"Expected {total_rows} rows, found: {len(rows)}"
+
+ # Verify each row
+ for i, row in enumerate(rows):
+ expected_id = i
+ expected_value = f"value_{i}"
+ assert row.id == expected_id, f"Expected id {expected_id}, found: {row.id}"
+ assert row.value == expected_value, f"Expected value {expected_value}, found: {row.value}"
diff --git a/ydb/tests/sql/test_sql.py b/ydb/tests/sql/test_sql.py
index cc7501f0b2..7fdca64802 100644
--- a/ydb/tests/sql/test_sql.py
+++ b/ydb/tests/sql/test_sql.py
@@ -1,84 +1,57 @@
# -*- coding: utf-8 -*-
-import os
-
-import ydb
-
-from ydb.tests.library.harness.kikimr_runner import KiKiMR
-from ydb.tests.library.harness.kikimr_config import KikimrConfigGenerator
-from ydb.tests.library.common.types import Erasure
-
-
-class TestYdbKvWorkload(object):
- @classmethod
- def setup_class(cls):
- cls.cluster = KiKiMR(KikimrConfigGenerator(erasure=Erasure.NONE))
- cls.cluster.start()
- cls.driver = ydb.Driver(
- ydb.DriverConfig(
- database='/Root',
- endpoint="%s:%s" % (
- cls.cluster.nodes[1].host, cls.cluster.nodes[1].port
- )
- )
- )
- cls.driver.wait()
- cls.pool = ydb.QuerySessionPool(cls.driver)
-
- @classmethod
- def teardown_class(cls):
- cls.pool.stop()
- cls.driver.stop()
- cls.cluster.stop()
-
- def setup(self):
- current_test_full_name = os.environ.get("PYTEST_CURRENT_TEST")
- self.table_path = "table_" + current_test_full_name.replace("::", ".").removesuffix(" (setup)")
-
- def test_minimal_maximal_values(self):
+import pytest
+from .test_base import TestBase
+
+
+class TestYdbKvWorkload(TestBase):
+
+ @pytest.mark.parametrize("is_column", [True, False])
+ @pytest.mark.parametrize("type_,value",
+ [
+ ("Int32", -2 ** 31),
+ ("Int32", 2 ** 31 - 1),
+ ("UInt32", 0),
+ ("UInt32", 2 ** 32 - 1),
+ ("Int64", -2 ** 63),
+ ("Int64", 2 ** 63 - 1),
+ ("Uint64", 0),
+ ("Uint64", 2 ** 64 - 1)
+ ])
+ def test_minimal_maximal_values(self, is_column, type_, value):
"""
Test verifies correctness of handling minimal and maximal values for types
"""
- type_to_values_to_check = {
- "Int32": [-2 ** 31, 2 ** 31 - 1],
- "Uint32": [0, 2 ** 32 - 1],
- "Int64": [-2 ** 63, 2 ** 63 - 1],
- "Uint64": [0, 2 ** 64 - 1],
- }
+ # table_name = table_name = "{}/{}_{}_{}".format(self.table_path, type_, value, is_column)
+ table_name = f"{self.table_path}"
- for type_, values in type_to_values_to_check.items():
- for i, value in enumerate(values):
- table_name = table_name = "{}/{}_{}".format(self.table_path, type_, i)
+ table_definition = f"""
+ CREATE TABLE `{table_name}` (
+ id Int64 NOT NULL,
+ value {type_} NOT NULL,
+ PRIMARY KEY (id)
+ ) """
- self.pool.execute_with_retries(
- f"""
- CREATE TABLE `{table_name}` (
- id Int64,
- value {type_},
- PRIMARY KEY (id)
- );"""
- )
+ if is_column:
+ table_definition += " PARTITION BY HASH(id) WITH(STORE=COLUMN)"
- self.pool.execute_with_retries(
- f"""
- UPSERT INTO `{table_name}` (id, value) VALUES (1, {value});
- """
- )
+ self.query(table_definition)
- result = self.pool.execute_with_retries(
- f"""
- SELECT id, value FROM `{table_name}` WHERE id = 1;
- """
- )
+ self.query(
+ f"""
+ UPSERT INTO `{table_name}` (id, value) VALUES (1, {value});
+ """
+ )
- rows = result[0].rows
- assert len(rows) == 1, "Expected one row"
- assert rows[0].id == 1, "ID does not match"
- assert rows[0].value == value, "Value does not match"
+ return self.query(
+ f"""
+ SELECT id, value FROM `{table_name}` WHERE id = 1;
+ """
+ )
def test_dynumber(self):
table_name = "{}/{}".format(self.table_path, "dynamber")
- self.pool.execute_with_retries(
+ self.query(
f"""
CREATE TABLE `{table_name}` (
id DyNumber,
@@ -86,7 +59,7 @@ class TestYdbKvWorkload(object):
);"""
)
- self.pool.execute_with_retries(
+ self.query(
f"""
UPSERT INTO `{table_name}` (id)
VALUES
@@ -98,10 +71,8 @@ class TestYdbKvWorkload(object):
"""
)
- result = self.pool.execute_with_retries(
+ return self.query(
f"""
SELECT count(*) FROM `{table_name}`;
"""
)
-
- assert result[0].rows[0][0] == 4
diff --git a/ydb/tests/sql/ya.make b/ydb/tests/sql/ya.make
index 3091729c9a..d3d0a58404 100644
--- a/ydb/tests/sql/ya.make
+++ b/ydb/tests/sql/ya.make
@@ -2,7 +2,10 @@ PY3TEST()
ENV(YDB_DRIVER_BINARY="ydb/apps/ydbd/ydbd")
TEST_SRCS(
+ test_base.py
test_sql.py
+ test_crud.py
+ test_inserts.py
)
SIZE(MEDIUM)