FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
KiteSQL/src/function/char_length.rs at perf/window-inline-sort · KipData/KiteSQL · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
KipData
/
KiteSQL
Public
Uh oh!
There was an error while loading.
Please reload this page
.
Notifications
You must be signed in to change notification settings
Fork
54
Star
744
Code
Issues
29
Pull requests
2
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
KiteSQL
/
src
/
function
/
char_length.rs
Copy path
More file actions
More file actions
Latest commit
History
History
History
71 lines (65 loc) · 2.3 KB
Breadcrumbs
KiteSQL
/
src
/
function
/
char_length.rs
Copy path
File metadata and controls
71 lines (65 loc) · 2.3 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// Copyright 2024 KipData/KiteSQL
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
use
crate
::
errors
::
DatabaseError
;
use
crate
::
expression
::
function
::
scala
::
FuncMonotonicity
;
use
crate
::
expression
::
function
::
scala
::
ScalarFunctionImpl
;
use
crate
::
expression
::
function
::
FunctionSummary
;
use
crate
::
expression
::
ScalarExpression
;
use
crate
::
types
::
tuple
::
TupleLike
;
use
crate
::
types
::
value
::
DataValue
;
use
crate
::
types
::
CharLengthUnits
;
use
crate
::
types
::
LogicalType
;
use
std
::
sync
::
Arc
;
#
[
derive
(
Debug
)
]
pub
(
crate
)
struct
CharLength
{
summary
:
FunctionSummary
,
}
impl
CharLength
{
pub
(
crate
)
fn
new
(
function_name
:
String
)
->
Arc
<
Self
>
{
let
arg_types =
vec
!
[
LogicalType
::
Varchar
(
None
,
CharLengthUnits
::
Characters
)
]
;
Arc
::
new
(
Self
{
summary
:
FunctionSummary
{
name
:
function_name
.
into
(
)
,
arg_types
,
}
,
}
)
}
}
impl
ScalarFunctionImpl
for
CharLength
{
#
[
allow
(
unused_variables
,
clippy
::
redundant_closure_call
)
]
fn
eval
(
&
self
,
exprs
:
&
[
ScalarExpression
]
,
tuples
:
Option
<
&
dyn
TupleLike
>
,
)
->
Result
<
DataValue
,
DatabaseError
>
{
let
mut
value = exprs
[
0
]
.
eval
(
tuples
)
?
;
if
!
matches
!
(
value
.
logical_type
(
)
,
LogicalType
::
Varchar
(
_
,
_
)
)
{
value = value
.
cast
(
&
LogicalType
::
Varchar
(
None
,
CharLengthUnits
::
Characters
)
)
?
;
}
let
mut
length
:
u64
=
0
;
if
let
DataValue
::
Utf8
{
value
,
ty
,
unit
}
=
&
mut
value
{
length = value
.
chars
(
)
.
count
(
)
as
u64
;
}
Ok
(
DataValue
::
UInt64
(
length
)
)
}
fn
monotonicity
(
&
self
)
->
Option
<
FuncMonotonicity
>
{
todo
!
(
)
}
fn
return_type
(
&
self
)
->
&
LogicalType
{
&
LogicalType
::
Varchar
(
None
,
CharLengthUnits
::
Characters
)
}
fn
summary
(
&
self
)
->
&
FunctionSummary
{
&
self
.
summary
}
}
Back
|
FazBrowse Home
|
New Git URL