aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar A. Unique TensorFlower <gardener@tensorflow.org>2017-12-07 10:26:56 -0800
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2017-12-07 10:30:55 -0800
commitc3e667573fcf97a8eff7b2ed118b0d903508a4ac (patch)
treebd403942298b12af5481690cd09632d04a925382
parent0d160ab43fcaa8357ce9eff6795dc30a41100175 (diff)
Automated g4 rollback of changelist 178215852
PiperOrigin-RevId: 178260470
-rw-r--r--tensorflow/contrib/cmake/external/sqlite.cmake1
-rw-r--r--tensorflow/contrib/tensorboard/db/BUILD19
-rw-r--r--tensorflow/contrib/tensorboard/db/tbsnap.cc214
-rw-r--r--tensorflow/contrib/tensorboard/db/tbsnap_test.py70
-rw-r--r--third_party/sqlite.BUILD5
5 files changed, 1 insertions, 308 deletions
diff --git a/tensorflow/contrib/cmake/external/sqlite.cmake b/tensorflow/contrib/cmake/external/sqlite.cmake
index 14d8148e6e..785039a469 100644
--- a/tensorflow/contrib/cmake/external/sqlite.cmake
+++ b/tensorflow/contrib/cmake/external/sqlite.cmake
@@ -28,7 +28,6 @@ endif()
set(sqlite_HEADERS
"${sqlite_BUILD}/sqlite3.h"
- "${sqlite_BUILD}/sqlite3ext.h"
)
if (WIN32)
diff --git a/tensorflow/contrib/tensorboard/db/BUILD b/tensorflow/contrib/tensorboard/db/BUILD
index 28b5eba2a4..9d3d60c24d 100644
--- a/tensorflow/contrib/tensorboard/db/BUILD
+++ b/tensorflow/contrib/tensorboard/db/BUILD
@@ -55,25 +55,6 @@ tf_cc_test(
],
)
-cc_library(
- name = "tbsnap",
- srcs = ["tbsnap.cc"],
- deps = [
- "@snappy",
- "@sqlite_archive//:sqlite",
- ],
-)
-
-py_test(
- name = "tbsnap_test",
- size = "small",
- srcs = ["tbsnap_test.py"],
- data = ["libtbsnap.so"],
- srcs_version = "PY2AND3",
- tags = ["nomac"],
- deps = ["//tensorflow/python:client_testlib"],
-)
-
filegroup(
name = "all_files",
srcs = glob(["*"]),
diff --git a/tensorflow/contrib/tensorboard/db/tbsnap.cc b/tensorflow/contrib/tensorboard/db/tbsnap.cc
deleted file mode 100644
index 588ea9af89..0000000000
--- a/tensorflow/contrib/tensorboard/db/tbsnap.cc
+++ /dev/null
@@ -1,214 +0,0 @@
-/* Copyright 2017 The TensorFlow Authors. All Rights Reserved.
-
-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.
-==============================================================================*/
-
-/// \brief SQLite extension for Snappy compression
-///
-/// Snappy a compression library that trades ratio for speed, almost going a
-/// tenth as fast as memcpy().
-///
-/// This extension adds the following native functions:
-///
-/// - snap(value: NULL|BLOB|TEXT) -> NULL|BLOB
-///
-/// Applies Snappy compression. If value is NULL, then NULL is returned. If
-/// value is TEXT and BLOB, then it is compressed and the result is a BLOB.
-/// An uncompressed byte is prepended to indicate the original type.
-///
-/// - unsnap(value: NULL|BLOB) -> NULL|TEXT|BLOB
-///
-/// Decompresses value created by snap(). If value is NULL, then NULL is
-/// returned. If value is empty, then an empty blob is returned. Otherwise
-/// the original type is restored from the first byte and the remaining ones
-/// are decompressed.
-///
-/// These functions are deterministic so they can be used for all purposes,
-/// including INDEX. Please note that SQLite currently does not currently
-/// perform common sub-expression optimization for pure functions when
-/// compiling queries.
-///
-/// If your SQLite environment isn't universally UTF8, please file an issue
-/// with the TensorBoard team letting us know. While this implementation should
-/// work, its performance could be improved to avoid superfluous TEXT coding.
-
-#include "sqlite3ext.h"
-#include "snappy.h"
-
-namespace {
-SQLITE_EXTENSION_INIT1
-
-void snap(sqlite3_context* ctx, int argc, sqlite3_value** argv) {
- const char* data;
- int type = sqlite3_value_type(argv[0]);
- switch (type) {
- case SQLITE_NULL:
- return;
- case SQLITE_BLOB:
- data = reinterpret_cast<const char*>(sqlite3_value_blob(argv[0]));
- break;
- case SQLITE_TEXT:
- data = reinterpret_cast<const char*>(sqlite3_value_text(argv[0]));
- break;
- default:
- sqlite3_result_error(ctx, "snap() takes NULL|BLOB|TEXT", -1);
- sqlite3_result_error_code(ctx, SQLITE_MISMATCH);
- return;
- }
- int size = sqlite3_value_bytes(argv[0]);
- if (size <= 0) {
- char result[] = {static_cast<char>(type)};
- sqlite3_result_blob(ctx, result, sizeof(result), SQLITE_TRANSIENT);
- return;
- }
- size_t output_size =
- snappy::MaxCompressedLength(static_cast<size_t>(size)) + 1;
- if (output_size >
- sqlite3_limit(sqlite3_context_db_handle(ctx), SQLITE_LIMIT_LENGTH, -1)) {
- sqlite3_result_error_toobig(ctx);
- return;
- }
- char* output =
- static_cast<char*>(sqlite3_malloc(static_cast<int>(output_size)));
- if (output == nullptr) {
- sqlite3_result_error_nomem(ctx);
- return;
- }
- *output++ = static_cast<char>(type), --output_size;
- snappy::RawCompress(data, static_cast<size_t>(size), output, &output_size);
- sqlite3_result_blob(ctx, output - 1, static_cast<int>(output_size + 1),
- sqlite3_free);
-}
-
-void unsnap(sqlite3_context* ctx, int argc, sqlite3_value** argv) {
- int type = sqlite3_value_type(argv[0]);
- if (type == SQLITE_NULL) return;
- if (type != SQLITE_BLOB) {
- sqlite3_result_error(ctx, "unsnap() takes NULL|BLOB", -1);
- sqlite3_result_error_code(ctx, SQLITE_MISMATCH);
- return;
- }
- int size = sqlite3_value_bytes(argv[0]);
- const char* blob = reinterpret_cast<const char*>(sqlite3_value_blob(argv[0]));
- if (size <= 0) {
- sqlite3_result_zeroblob(ctx, 0);
- return;
- }
- type = static_cast<int>(*blob++), --size;
- if (type != SQLITE_BLOB && type != SQLITE_TEXT) {
- sqlite3_result_error(ctx, "unsnap() first byte is invalid type", -1);
- sqlite3_result_error_code(ctx, SQLITE_CORRUPT);
- return;
- }
- if (size == 0) {
- if (type == SQLITE_TEXT) {
- sqlite3_result_text(ctx, "", 0, SQLITE_STATIC);
- } else {
- sqlite3_result_zeroblob(ctx, 0);
- }
- return;
- }
- size_t output_size;
- if (!snappy::GetUncompressedLength(blob, static_cast<size_t>(size),
- &output_size)) {
- sqlite3_result_error(ctx, "snappy parse error", -1);
- sqlite3_result_error_code(ctx, SQLITE_CORRUPT);
- return;
- }
- if (output_size >
- sqlite3_limit(sqlite3_context_db_handle(ctx), SQLITE_LIMIT_LENGTH, -1)) {
- sqlite3_result_error_toobig(ctx);
- return;
- }
- char* output =
- static_cast<char*>(sqlite3_malloc(static_cast<int>(output_size)));
- if (output == nullptr) {
- sqlite3_result_error_nomem(ctx);
- return;
- }
- if (!snappy::RawUncompress(blob, static_cast<size_t>(size), output)) {
- sqlite3_result_error(ctx, "snappy message corruption", -1);
- sqlite3_result_error_code(ctx, SQLITE_CORRUPT);
- return;
- }
- if (type == SQLITE_TEXT) {
- sqlite3_result_text(ctx, output, static_cast<int>(output_size),
- sqlite3_free);
- } else {
- sqlite3_result_blob(ctx, output, static_cast<int>(output_size),
- sqlite3_free);
- }
-}
-
-int init(sqlite3* db, const char** pzErrMsg, const sqlite3_api_routines* pApi) {
- SQLITE_EXTENSION_INIT2(pApi);
- int rc;
-
- rc = sqlite3_create_function_v2(
- db,
- "snap", // zFunctionName
- 1, // nArg
- SQLITE_UTF8 | SQLITE_DETERMINISTIC, // eTextRep
- nullptr, // pApp
- snap, // xFunc
- nullptr, // xStep
- nullptr, // xFinal
- nullptr // xDestroy
- );
- if (rc != SQLITE_OK) {
- *pzErrMsg = "oh snap()";
- return rc;
- }
-
- rc = sqlite3_create_function_v2(
- db,
- "unsnap", // zFunctionName
- 1, // nArg
- SQLITE_UTF8 | SQLITE_DETERMINISTIC, // eTextRep
- nullptr, // pApp
- unsnap, // xFunc
- nullptr, // xStep
- nullptr, // xFinal
- nullptr // xDestroy
- );
- if (rc != SQLITE_OK) {
- *pzErrMsg = "oh unsnap()";
- return rc;
- }
-
- return SQLITE_OK;
-}
-
-} // namespace
-
-extern "C" {
-
-#if defined(TF_SQLITE3_AUTO_EXTENSION)
-extern int sqlite3_tbsnap_status = sqlite3_auto_extension(init);
-#else
-
-#if defined(_MSC_VER) || defined(__MINGW32__)
-#define EXPORT __declspec(dllexport)
-#else
-#define EXPORT __attribute__((visibility("default")))
-#endif
-
-// SQLite deduces this function name from "libtbsnap.so".
-EXPORT extern int sqlite3_tbsnap_init(sqlite3* db, const char** pzErrMsg,
- const sqlite3_api_routines* pApi) {
- return init(db, pzErrMsg, pApi);
-}
-
-#endif
-
-} // extern "C"
diff --git a/tensorflow/contrib/tensorboard/db/tbsnap_test.py b/tensorflow/contrib/tensorboard/db/tbsnap_test.py
deleted file mode 100644
index 2d011959e0..0000000000
--- a/tensorflow/contrib/tensorboard/db/tbsnap_test.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright 2017 The TensorFlow Authors. All Rights Reserved.
-#
-# 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.
-# ==============================================================================
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-
-import sqlite3
-
-from tensorflow.python.framework import test_util
-from tensorflow.python.platform import resource_loader
-from tensorflow.python.platform import test
-
-
-class SqliteSnappyTest(test_util.TensorFlowTestCase):
-
- def setUp(self):
- super(SqliteSnappyTest, self).setUp()
- self.db = sqlite3.connect(':memory:')
- self.db.enable_load_extension(True)
- self.db.execute("select load_extension('%s')" %
- resource_loader.get_path_to_datafile('libtbsnap.so'))
- self.db.enable_load_extension(False)
-
- def testRoundTrip(self):
- self.assertEqual('hello',
- self.db.execute('SELECT unsnap(snap(\'hello\'))')
- .fetchone()[0])
- self.assertEqual(
- 'hello',
- self.db.execute(
- 'SELECT CAST(unsnap(snap(CAST(\'hello\' AS BLOB))) AS TEXT)')
- .fetchone()[0])
- self.assertEqual(
- 'text',
- self.db.execute('SELECT typeof(unsnap(snap(\'h\')))').fetchone()[0])
- self.assertEqual(
- 'blob',
- self.db.execute(
- 'SELECT typeof(unsnap(snap(CAST(\'h\' AS BLOB))))').fetchone()[0])
-
- def testNull_passesThrough(self):
- self.assertIsNone(
- self.db.execute('SELECT unsnap(snap(NULL))').fetchone()[0])
-
- def testEmpty_passesThrough(self):
- self.assertEqual('',
- self.db.execute('SELECT unsnap(snap(\'\'))').fetchone()[0])
- self.assertEqual(
- 'text',
- self.db.execute('SELECT typeof(unsnap(snap(\'\')))').fetchone()[0])
- self.assertEqual(
- 'blob',
- self.db.execute(
- 'SELECT typeof(unsnap(snap(CAST(\'\' AS BLOB))))').fetchone()[0])
-
-
-if __name__ == '__main__':
- test.main()
diff --git a/third_party/sqlite.BUILD b/third_party/sqlite.BUILD
index 03a6a7a5da..9840d7b151 100644
--- a/third_party/sqlite.BUILD
+++ b/third_party/sqlite.BUILD
@@ -9,10 +9,7 @@ licenses(["unencumbered"]) # Public Domain
cc_library(
name = "sqlite",
srcs = ["sqlite3.c"],
- hdrs = [
- "sqlite3.h",
- "sqlite3ext.h",
- ],
+ hdrs = ["sqlite3.h"],
includes = ["."],
linkopts = ["-lm"],
visibility = ["//visibility:public"],