Skip to content

Commit

Permalink
builtins: add sha224 and sha384 functions
Browse files Browse the repository at this point in the history
Fixes #42450

Release note (sql change): Add sha224 and sha384 functions.
  • Loading branch information
timgraham committed Oct 20, 2020
1 parent 819d5d1 commit 10eefe1
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 0 deletions.
8 changes: 8 additions & 0 deletions docs/generated/sql/functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -2395,10 +2395,18 @@ The swap_ordinate_string parameter is a 2-character string naming the ordinates
</span></td></tr>
<tr><td><a name="sha1"></a><code>sha1(<a href="string.html">string</a>...) &rarr; <a href="string.html">string</a></code></td><td><span class="funcdesc"><p>Calculates the SHA1 hash value of a set of values.</p>
</span></td></tr>
<tr><td><a name="sha224"></a><code>sha224(<a href="bytes.html">bytes</a>...) &rarr; <a href="string.html">string</a></code></td><td><span class="funcdesc"><p>Calculates the SHA224 hash value of a set of values.</p>
</span></td></tr>
<tr><td><a name="sha224"></a><code>sha224(<a href="string.html">string</a>...) &rarr; <a href="string.html">string</a></code></td><td><span class="funcdesc"><p>Calculates the SHA224 hash value of a set of values.</p>
</span></td></tr>
<tr><td><a name="sha256"></a><code>sha256(<a href="bytes.html">bytes</a>...) &rarr; <a href="string.html">string</a></code></td><td><span class="funcdesc"><p>Calculates the SHA256 hash value of a set of values.</p>
</span></td></tr>
<tr><td><a name="sha256"></a><code>sha256(<a href="string.html">string</a>...) &rarr; <a href="string.html">string</a></code></td><td><span class="funcdesc"><p>Calculates the SHA256 hash value of a set of values.</p>
</span></td></tr>
<tr><td><a name="sha384"></a><code>sha384(<a href="bytes.html">bytes</a>...) &rarr; <a href="string.html">string</a></code></td><td><span class="funcdesc"><p>Calculates the SHA384 hash value of a set of values.</p>
</span></td></tr>
<tr><td><a name="sha384"></a><code>sha384(<a href="string.html">string</a>...) &rarr; <a href="string.html">string</a></code></td><td><span class="funcdesc"><p>Calculates the SHA384 hash value of a set of values.</p>
</span></td></tr>
<tr><td><a name="sha512"></a><code>sha512(<a href="bytes.html">bytes</a>...) &rarr; <a href="string.html">string</a></code></td><td><span class="funcdesc"><p>Calculates the SHA512 hash value of a set of values.</p>
</span></td></tr>
<tr><td><a name="sha512"></a><code>sha512(<a href="string.html">string</a>...) &rarr; <a href="string.html">string</a></code></td><td><span class="funcdesc"><p>Calculates the SHA512 hash value of a set of values.</p>
Expand Down
20 changes: 20 additions & 0 deletions pkg/sql/logictest/testdata/logic_test/builtin_function
Original file line number Diff line number Diff line change
Expand Up @@ -407,11 +407,21 @@ SELECT sha1('abc')
----
a9993e364706816aba3e25717850c26c9cd0d89d

query T
SELECT sha224('abc')
----
23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7

query T
SELECT sha256('abc')
----
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

query T
SELECT sha384('abc')
----
cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7

query IIII
SELECT fnv32('abc'), fnv32a('abc'), fnv64('abc'), fnv64a('abc')
----
Expand Down Expand Up @@ -443,11 +453,21 @@ SELECT sha1(NULL::STRING)
----
NULL

query T
SELECT sha224(NULL::STRING)
----
NULL

query T
SELECT sha256(NULL::STRING)
----
NULL

query T
SELECT sha384(NULL::STRING)
----
NULL

query T
SELECT sha512(NULL::STRING, NULL::STRING)
----
Expand Down
10 changes: 10 additions & 0 deletions pkg/sql/sem/builtins/builtins.go
Original file line number Diff line number Diff line change
Expand Up @@ -1003,11 +1003,21 @@ var builtins = map[string]builtinDefinition{
"Calculates the SHA1 hash value of a set of values.",
),

"sha224": hashBuiltin(
func() hash.Hash { return sha256.New224() },
"Calculates the SHA224 hash value of a set of values.",
),

"sha256": hashBuiltin(
func() hash.Hash { return sha256.New() },
"Calculates the SHA256 hash value of a set of values.",
),

"sha384": hashBuiltin(
func() hash.Hash { return sha512.New384() },
"Calculates the SHA384 hash value of a set of values.",
),

"sha512": hashBuiltin(
func() hash.Hash { return sha512.New() },
"Calculates the SHA512 hash value of a set of values.",
Expand Down

0 comments on commit 10eefe1

Please sign in to comment.