• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

tarantool / crud / 7320500616

25 Dec 2023 08:41AM UTC coverage: 89.158% (+0.01%) from 89.145%
7320500616

Pull #404

github

DifferentialOrange
update: propagate new options if fields not exist

If Tarantool older than 2.8.1 [1] was used to update nullable fields,
the workaround was executed to perform this operation. If `noreturn` or
`fetch_latest_metadata` options were set, they were ignored on storage
side before this patch.

1. https://github.com/tarantool/tarantool/issues/3378
Pull Request #404: Support vshard names as keys

25 of 30 new or added lines in 5 files covered. (83.33%)

1 existing line in 1 file now uncovered.

4679 of 5248 relevant lines covered (89.16%)

5996.97 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.83
/crud.lua
1
--- Tarantool module for performing operations across the cluster
2
--
3
-- @module crud
4

5
local cfg = require('crud.cfg')
360✔
6
local insert = require('crud.insert')
360✔
7
local insert_many = require('crud.insert_many')
360✔
8
local replace = require('crud.replace')
360✔
9
local replace_many = require('crud.replace_many')
360✔
10
local get = require('crud.get')
360✔
11
local update = require('crud.update')
360✔
12
local upsert = require('crud.upsert')
360✔
13
local upsert_many = require('crud.upsert_many')
360✔
14
local delete = require('crud.delete')
360✔
15
local select = require('crud.select')
360✔
16
local truncate = require('crud.truncate')
360✔
17
local len = require('crud.len')
360✔
18
local count = require('crud.count')
360✔
19
local borders = require('crud.borders')
360✔
20
local sharding_metadata = require('crud.common.sharding.sharding_metadata')
360✔
21
local utils = require('crud.common.utils')
360✔
22
local stats = require('crud.stats')
360✔
23
local readview = require('crud.readview')
360✔
24
local schema = require('crud.schema')
360✔
25

26
local luri = require('uri')
360✔
27

28
local crud = {}
360✔
29

30
-- @refer crud.version
31
-- @tfield string _VERSION
32
--  Module version.
33
crud._VERSION = require('crud.version')
720✔
34

35
--- CRUD operations.
36
-- @section crud
37

38
-- @refer insert.tuple
39
-- @function insert
40
crud.insert = stats.wrap(insert.tuple, stats.op.INSERT)
720✔
41

42
-- @refer insert.object
43
-- @function insert_object
44
crud.insert_object = stats.wrap(insert.object, stats.op.INSERT)
720✔
45

46
-- @refer insert_many.tuples
47
-- @function insert_many
48
crud.insert_many = stats.wrap(insert_many.tuples, stats.op.INSERT_MANY)
720✔
49

50
-- @refer insert_many.objects
51
-- @function insert_object_many
52
crud.insert_object_many = stats.wrap(insert_many.objects, stats.op.INSERT_MANY)
720✔
53

54
-- @refer get.call
55
-- @function get
56
crud.get = stats.wrap(get.call, stats.op.GET)
720✔
57

58
-- @refer replace.tuple
59
-- @function replace
60
crud.replace = stats.wrap(replace.tuple, stats.op.REPLACE)
720✔
61

62
-- @refer replace.object
63
-- @function replace_object
64
crud.replace_object = stats.wrap(replace.object, stats.op.REPLACE)
720✔
65

66
-- @refer replace_many.tuples
67
-- @function replace_many
68
crud.replace_many = stats.wrap(replace_many.tuples, stats.op.REPLACE_MANY)
720✔
69

70
-- @refer replace_many.objects
71
-- @function replace_object_many
72
crud.replace_object_many = stats.wrap(replace_many.objects, stats.op.REPLACE_MANY)
720✔
73

74
-- @refer update.call
75
-- @function update
76
crud.update = stats.wrap(update.call, stats.op.UPDATE)
720✔
77

78
-- @refer upsert.tuple
79
-- @function upsert
80
crud.upsert = stats.wrap(upsert.tuple, stats.op.UPSERT)
720✔
81

82
-- @refer upsert_many.tuples
83
-- @function upsert_many
84
crud.upsert_many = stats.wrap(upsert_many.tuples, stats.op.UPSERT_MANY)
720✔
85

86
-- @refer upsert_many.objects
87
-- @function upsert_object_many
88
crud.upsert_object_many = stats.wrap(upsert_many.objects, stats.op.UPSERT_MANY)
720✔
89

90
-- @refer upsert.object
91
-- @function upsert
92
crud.upsert_object = stats.wrap(upsert.object, stats.op.UPSERT)
720✔
93

94
-- @refer delete.call
95
-- @function delete
96
crud.delete = stats.wrap(delete.call, stats.op.DELETE)
720✔
97

98
-- @refer select.call
99
-- @function select
100
crud.select = stats.wrap(select.call, stats.op.SELECT)
720✔
101

102
-- @refer select.pairs
103
-- @function pairs
104
crud.pairs = stats.wrap(select.pairs, stats.op.SELECT, { pairs = true })
720✔
105

106
-- @refer utils.unflatten_rows
107
-- @function unflatten_rows
108
crud.unflatten_rows = utils.unflatten_rows
360✔
109

110
-- @refer truncate.call
111
-- @function truncate
112
crud.truncate = stats.wrap(truncate.call, stats.op.TRUNCATE)
720✔
113

114
-- @refer len.call
115
-- @function len
116
crud.len = stats.wrap(len.call, stats.op.LEN)
720✔
117

118
-- @refer count.call
119
-- @function count
120
crud.count = stats.wrap(count.call, stats.op.COUNT)
720✔
121

122
-- @refer borders.min
123
-- @function min
124
crud.min = stats.wrap(borders.min, stats.op.BORDERS)
720✔
125

126
-- @refer borders.max
127
-- @function max
128
crud.max = stats.wrap(borders.max, stats.op.BORDERS)
720✔
129

130
-- @refer utils.cut_rows
131
-- @function cut_rows
132
crud.cut_rows = utils.cut_rows
360✔
133

134
-- @refer utils.cut_objects
135
-- @function cut_objects
136
crud.cut_objects = utils.cut_objects
360✔
137

138
-- @refer cfg.cfg
139
-- @function cfg
140
crud.cfg = cfg.cfg
360✔
141

142
-- @refer stats.get
143
-- @function stats
144
crud.stats = stats.get
360✔
145

146
-- @refer stats.reset
147
-- @function reset_stats
148
crud.reset_stats = stats.reset
360✔
149

150
-- @refer utils.storage_info
151
-- @function storage_info
152
crud.storage_info = utils.storage_info
360✔
153

154
-- @refer readview.new
155
-- @function readview
156
crud.readview = readview.new
360✔
157

158
-- @refer schema.call
159
-- @function schema
160
crud.schema = schema.call
360✔
161

162
--- Initializes crud on node
163
--
164
-- Exports all functions that are used for calls
165
-- and CRUD operations.
166
--
167
-- @function init
168
--
169
function crud.init_storage()
360✔
170
    if type(box.cfg) ~= 'table' then
287✔
171
        error('box.cfg() must be called first')
2✔
172
    end
173

174
    local user = nil
285✔
175
    if not box.info.ro then
285✔
176
        local replicaset_uuid, replicaset = utils.get_self_vshard_replicaset()
152✔
177

178
        if replicaset == nil or replicaset.master == nil then
150✔
UNCOV
179
            error(string.format('Failed to find a vshard configuration for ' ..
×
180
                ' replicaset with replicaset_uuid %s.',
181
                replicaset_uuid))
×
182
        end
183
        user = luri.parse(replicaset.master.uri).login or 'guest'
300✔
184
    end
185

186
    if rawget(_G, '_crud') == nil then
283✔
187
        rawset(_G, '_crud', {})
283✔
188
    end
189

190
    insert.init(user)
283✔
191
    insert_many.init(user)
283✔
192
    get.init(user)
283✔
193
    replace.init(user)
283✔
194
    replace_many.init(user)
283✔
195
    update.init(user)
283✔
196
    upsert.init(user)
283✔
197
    upsert_many.init(user)
283✔
198
    delete.init(user)
283✔
199
    select.init(user)
283✔
200
    truncate.init(user)
283✔
201
    len.init(user)
283✔
202
    count.init(user)
283✔
203
    borders.init(user)
283✔
204
    sharding_metadata.init(user)
283✔
205
    readview.init(user)
283✔
206

207
    utils.init_storage_call(user, 'storage_info_on_storage',
566✔
208
        utils.storage_info_on_storage
283✔
209
    )
283✔
210
end
211

212
function crud.init_router()
360✔
213
   rawset(_G, 'crud', crud)
71✔
214
end
215

216
function crud.stop_router()
360✔
217
    rawset(_G, 'crud', nil)
1✔
218
end
219

220
function crud.stop_storage()
360✔
221
    rawset(_G, '_crud', nil)
1✔
222
end
223

224
return crud
360✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc