diff --git a/core/includes/database.inc b/core/includes/database.inc
index e1f4f30..d518487 100644
--- a/core/includes/database.inc
+++ b/core/includes/database.inc
@@ -481,6 +481,13 @@ function db_escape_field($field) {
  * Backslash is defined as escape character for LIKE patterns in
  * DatabaseCondition::mapConditionOperator().
  *
+ * Drupal considers LIKE case insensitive and the following is often used
+ * to tell the database that case insensitive equivalence is desired:
+ * @code
+ * db_select('users')
+ *  ->condition('name', db_like($name), 'LIKE')
+ * @endcode
+ *
  * @param $string
  *   The string to escape.
  *
diff --git a/core/lib/Drupal/Core/Database/Connection.php b/core/lib/Drupal/Core/Database/Connection.php
index 6e87303..847b93a 100644
--- a/core/lib/Drupal/Core/Database/Connection.php
+++ b/core/lib/Drupal/Core/Database/Connection.php
@@ -844,6 +844,13 @@ public function escapeAlias($field) {
    * Backslash is defined as escape character for LIKE patterns in
    * Drupal\Core\Database\Query\Condition::mapConditionOperator().
    *
+   * Drupal considers LIKE case insensitive and the following is often used
+   * to tell the database that case insensitive equivalence is desired:
+   * @code
+   * $this->connection->select('users')
+   * ->condition('name', $this->connection->escapeLike($name), 'LIKE')
+   * @encode
+   *
    * @param $string
    *   The string to escape.
    *
diff --git a/core/lib/Drupal/Core/Database/Query/Select.php b/core/lib/Drupal/Core/Database/Query/Select.php
index 54a3555..f0f5aef 100644
--- a/core/lib/Drupal/Core/Database/Query/Select.php
+++ b/core/lib/Drupal/Core/Database/Query/Select.php
@@ -499,6 +499,13 @@ public function &getUnion() {
   /**
    * {@inheritdoc}
    */
+  public function escapeLike($string) {
+    return $this->connection->escapeLike($string);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function getArguments(PlaceholderInterface $queryPlaceholder = NULL) {
     if (!isset($queryPlaceholder)) {
       $queryPlaceholder = $this;
@@ -982,4 +989,5 @@ public function __clone() {
       $this->union[$key]['query'] = clone($aggregate['query']);
     }
   }
+
 }
diff --git a/core/lib/Drupal/Core/Database/Query/SelectExtender.php b/core/lib/Drupal/Core/Database/Query/SelectExtender.php
index 9a378d2..3a275d2 100644
--- a/core/lib/Drupal/Core/Database/Query/SelectExtender.php
+++ b/core/lib/Drupal/Core/Database/Query/SelectExtender.php
@@ -171,6 +171,10 @@ public function &getUnion() {
     return $this->query->getUnion();
   }
 
+  public function escapeLike($string) {
+    return $this->query->escapeLike($string);
+  }
+
   public function getArguments(PlaceholderInterface $queryPlaceholder = NULL) {
     return $this->query->getArguments($queryPlaceholder);
   }
diff --git a/core/lib/Drupal/Core/Database/Query/SelectInterface.php b/core/lib/Drupal/Core/Database/Query/SelectInterface.php
index 9f6bbce..13c68a3 100644
--- a/core/lib/Drupal/Core/Database/Query/SelectInterface.php
+++ b/core/lib/Drupal/Core/Database/Query/SelectInterface.php
@@ -124,6 +124,19 @@ public function &getTables();
   public function &getUnion();
 
   /**
+   * Escapes characters that work as wildcard characters in a LIKE pattern.
+   *
+   * @param $string
+   *   The string to escape.
+   *
+   * @return string
+   *   The escaped string.
+   *
+   * @see \Drupal\Core\Database\Connection::escapeLike()
+   */
+  public function escapeLike($string);
+
+  /**
    * Compiles and returns an associative array of the arguments for this prepared statement.
    *
    * @param $queryPlaceholder
diff --git a/core/lib/Drupal/Core/Entity/Plugin/DataType/CaseSensitiveStringItem.php b/core/lib/Drupal/Core/Entity/Plugin/DataType/CaseSensitiveStringItem.php
new file mode 100644
index 0000000..daef472
--- /dev/null
+++ b/core/lib/Drupal/Core/Entity/Plugin/DataType/CaseSensitiveStringItem.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Entity\Plugin\DataType\CaseSensitiveStringItem.
+ */
+
+namespace Drupal\Core\Entity\Plugin\DataType;
+
+use Drupal\Core\TypedData\Annotation\DataType;
+use Drupal\Core\Annotation\Translation;
+use Drupal\Core\Entity\Field\FieldItemBase;
+
+/**
+ * Defines the 'case_sensitive_string_field' entity field item.
+ *
+ * @DataType(
+ *   id = "case_sensitive_string_field",
+ *   label = @Translation("Case sensitive string field item"),
+ *   description = @Translation("An entity field containing a binary string (case sensitive) value."),
+ *   list_class = "\Drupal\Core\Entity\Field\Field"
+ * )
+ */
+class CaseSensitiveStringItem extends FieldItemBase {
+
+  /**
+   * Definitions of the contained properties.
+   *
+   * @see BinaryStringItem::getPropertyDefinitions()
+   *
+   * @var array
+   */
+  static $propertyDefinitions;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getPropertyDefinitions() {
+
+    if (!isset(static::$propertyDefinitions)) {
+      static::$propertyDefinitions['value'] = array(
+        'type' => 'string',
+        'label' => t('Text value'),
+        'case sensitive' => TRUE,
+      );
+    }
+    return static::$propertyDefinitions;
+  }
+}
diff --git a/core/lib/Drupal/Core/Entity/Query/QueryInterface.php b/core/lib/Drupal/Core/Entity/Query/QueryInterface.php
index 155c459..88f21b5 100644
--- a/core/lib/Drupal/Core/Entity/Query/QueryInterface.php
+++ b/core/lib/Drupal/Core/Entity/Query/QueryInterface.php
@@ -52,7 +52,7 @@ public function getEntityTypeId();
    *   same delta within that field.
    * @param $value
    *   The value for $field. In most cases, this is a scalar and it's treated as
-   *   case-insensitive. For more complex options, it is an array. The meaning
+   *   case-insensitive. For more complex operators, it is an array. The meaning
    *   of each element in the array is dependent on $operator.
    * @param $operator
    *   Possible values:
diff --git a/core/lib/Drupal/Core/Entity/Query/Sql/Condition.php b/core/lib/Drupal/Core/Entity/Query/Sql/Condition.php
index 1067db3..b6396465 100644
--- a/core/lib/Drupal/Core/Entity/Query/Sql/Condition.php
+++ b/core/lib/Drupal/Core/Entity/Query/Sql/Condition.php
@@ -33,20 +33,20 @@ public function compile($conditionContainer) {
     // SQL query object is only necessary to pass to Query::addField() so it
     // can join tables as necessary. On the other hand, conditions need to be
     // added to the $conditionContainer object to keep grouping.
-    $sqlQuery = $conditionContainer instanceof SelectInterface ? $conditionContainer : $conditionContainer->sqlQuery;
-    $tables = $this->query->getTables($sqlQuery);
+    $sql_query = $conditionContainer instanceof SelectInterface ? $conditionContainer : $conditionContainer->sqlQuery;
+    $tables = $this->query->getTables($sql_query);
     foreach ($this->conditions as $condition) {
       if ($condition['field'] instanceOf ConditionInterface) {
-        $sqlCondition = new SqlCondition($condition['field']->getConjunction());
+        $sql_condition = new SqlCondition($condition['field']->getConjunction());
         // Add the SQL query to the object before calling this method again.
-        $sqlCondition->sqlQuery = $sqlQuery;
-        $condition['field']->compile($sqlCondition);
-        $sqlQuery->condition($sqlCondition);
+        $sql_condition->sqlQuery = $sql_query;
+        $condition['field']->compile($sql_condition);
+        $sql_query->condition($sql_condition);
       }
       else {
         $type = strtoupper($this->conjunction) == 'OR' || $condition['operator'] == 'IS NULL' ? 'LEFT' : 'INNER';
-        $this->translateCondition($condition);
-        $field = $tables->addField($condition['field'], $type, $condition['langcode']);
+        $field = $tables->addField($condition, $type);
+        $this->translateCondition($condition, $sql_query);
         $conditionContainer->condition($field, $condition['value'], $condition['operator']);
       }
     }
@@ -71,23 +71,38 @@ public function notExists($field, $langcode = NULL) {
    *
    * @param array $condition
    */
-  protected function translateCondition(&$condition) {
+  protected function translateCondition(&$condition, SelectInterface $sql_query) {
+    // There is nothing we can do for IN ().
+    if (is_array($condition['value'])) {
+      return;
+    }
     switch ($condition['operator']) {
+      case '=':
+        if (empty($condition['case sensitive'])) {
+          $condition['value'] = $sql_query->escapeLike($condition['value']);
+          $condition['operator'] = 'LIKE';
+        }
+        break;
+      case '<>':
+        if (empty($condition['case sensitive'])) {
+          $condition['value'] = $sql_query->escapeLike($condition['value']);
+          $condition['operator'] = 'NOT LIKE';
+        }
+        break;
       case 'STARTS_WITH':
-        $condition['value'] .= '%';
+        $condition['value'] = $sql_query->escapeLike($condition['value']) . '%';
         $condition['operator'] = 'LIKE';
         break;
 
       case 'CONTAINS':
-        $condition['value'] = '%' . $condition['value'] . '%';
+        $condition['value'] = '%' . $sql_query->escapeLike($condition['value']) . '%';
         $condition['operator'] = 'LIKE';
         break;
 
       case 'ENDS_WITH':
-        $condition['value'] = '%' . $condition['value'];
+        $condition['value'] = '%' . $sql_query->escapeLike($condition['value']);
         $condition['operator'] = 'LIKE';
         break;
-
     }
   }
 
diff --git a/core/lib/Drupal/Core/Entity/Query/Sql/ConditionAggregate.php b/core/lib/Drupal/Core/Entity/Query/Sql/ConditionAggregate.php
index cd83691..520348c 100644
--- a/core/lib/Drupal/Core/Entity/Query/Sql/ConditionAggregate.php
+++ b/core/lib/Drupal/Core/Entity/Query/Sql/ConditionAggregate.php
@@ -10,6 +10,7 @@
 use Drupal\Core\Database\Query\SelectInterface;
 use Drupal\Core\Entity\Query\ConditionAggregateBase;
 use Drupal\Core\Entity\Query\ConditionAggregateInterface;
+use Drupal\Core\Database\Query\Condition as SqlCondition;
 
 /**
  * Defines the aggregate condition for sql based storage.
@@ -29,7 +30,7 @@ public function compile($conditionContainer) {
     $tables = new Tables($sql_query);
     foreach ($this->conditions as $condition) {
       if ($condition['field'] instanceOf ConditionAggregateInterface) {
-        $sql_condition = new Condition($condition['field']->getConjunction());
+        $sql_condition = new SqlCondition($condition['field']->getConjunction());
         // Add the SQL query to the object before calling this method again.
         $sql_condition->sqlQuery = $sql_query;
         $condition['field']->compile($sql_condition);
@@ -37,8 +38,8 @@ public function compile($conditionContainer) {
       }
       else {
         $type = ((strtoupper($this->conjunction) == 'OR') || ($condition['operator'] == 'IS NULL')) ? 'LEFT' : 'INNER';
-        $this->translateCondition($condition);
-        $field = $tables->addField($condition['field'], $type, $condition['langcode']);
+        $field = $tables->addField($condition, $type);
+        $this->translateCondition($condition, $sql_query);
         $function = $condition['function'];
         $placeholder = ':db_placeholder_' . $conditionContainer->nextPlaceholder();
         $conditionContainer->having("$function($field) {$condition['operator']} $placeholder", array($placeholder => $condition['value']));
@@ -64,22 +65,37 @@ public function notExists($field, $function, $langcode = NULL) {
    * Translates the string operators to SQL equivalents.
    *
    * @param array $condition
-   *   An associative array containing the following keys:
-   *     - value: The value to filter by
-   *     - operator: The operator to use for comparison, for example "=".
    */
-  protected function translateCondition(&$condition) {
+  protected function translateCondition(&$condition, SelectInterface $sql_query) {
+    // There is nothing we can do for IN ().
+    if (is_array($condition['value'])) {
+      return;
+    }
     switch ($condition['operator']) {
+      case '=':
+        if (empty($condition['case sensitive'])) {
+          $condition['value'] = $sql_query->escapeLike($condition['value']);
+          $condition['operator'] = 'LIKE';
+        }
+        break;
+      case '<>':
+        if (empty($condition['case sensitive'])) {
+          $condition['value'] = $sql_query->escapeLike($condition['value']);
+          $condition['operator'] = 'NOT LIKE';
+        }
+        break;
       case 'STARTS_WITH':
-        $condition['value'] .= '%';
+        $condition['value'] = $sql_query->escapeLike($condition['value']) . '%';
         $condition['operator'] = 'LIKE';
         break;
+
       case 'CONTAINS':
-        $condition['value'] = '%' . $condition['value'] . '%';
+        $condition['value'] = '%' . $sql_query->escapeLike($condition['value']) . '%';
         $condition['operator'] = 'LIKE';
         break;
+
       case 'ENDS_WITH':
-        $condition['value'] = '%' . $condition['value'];
+        $condition['value'] = '%' . $sql_query->escapeLike($condition['value']);
         $condition['operator'] = 'LIKE';
         break;
     }
diff --git a/core/lib/Drupal/Core/Entity/Query/Sql/Query.php b/core/lib/Drupal/Core/Entity/Query/Sql/Query.php
index cf8eb39..97904d3 100644
--- a/core/lib/Drupal/Core/Entity/Query/Sql/Query.php
+++ b/core/lib/Drupal/Core/Entity/Query/Sql/Query.php
@@ -277,7 +277,8 @@ protected function getSqlField($field, $langcode) {
       return $base_property;
     }
     else {
-      return $this->tables->addField($field, 'LEFT', $langcode);
+      $definition = array('field' => $field, 'langcode' => $langcode);
+      return $this->tables->addField($definition, 'LEFT');
     }
   }
 
diff --git a/core/lib/Drupal/Core/Entity/Query/Sql/Tables.php b/core/lib/Drupal/Core/Entity/Query/Sql/Tables.php
index 6926603..8b29a3c 100644
--- a/core/lib/Drupal/Core/Entity/Query/Sql/Tables.php
+++ b/core/lib/Drupal/Core/Entity/Query/Sql/Tables.php
@@ -63,8 +63,10 @@ public function __construct(SelectInterface $sql_query) {
   /**
    * {@inheritdoc}
    */
-  public function addField($field, $type, $langcode) {
+   public function addField(&$field_definition, $type) {
     $entity_type_id = $this->sqlQuery->getMetaData('entity_type');
+    $field = $field_definition['field'];
+    $langcode = $field_definition['langcode'];
     $age = $this->sqlQuery->getMetaData('age');
     // This variable ensures grouping works correctly. For example:
     // ->condition('tags', 2, '>')
@@ -113,9 +115,11 @@ public function addField($field, $type, $langcode) {
         if ($fields = entity_load_multiple_by_properties('field_config', array('uuid' => substr($specifier, 3), 'include_deleted' => TRUE))) {
           $field = current($fields);
         }
+        $need_entity = FALSE;
       }
       elseif (isset($field_storage_definitions[$specifier])) {
         $field = $field_storage_definitions[$specifier];
+        $need_entity = TRUE;
       }
       else {
         $field = FALSE;
@@ -124,6 +128,28 @@ public function addField($field, $type, $langcode) {
       if ($field instanceof FieldConfigInterface) {
         // Find the field column.
         $column = $field->getMainPropertyName();
+        if ($need_entity) {
+          // Get the field definitions from a mocked entity.
+          $values = array();
+          $field_name = $field->getName();
+          // If there are bundles, pick one.
+          if ($bundle_key = $entity_type->getKey('bundle')) {
+            $field_map = $this->entityManager->getFieldMap();
+            if (isset($field_map[$entity_type_id][$field_name]['bundles'])) {
+              $values[$bundle_key] = reset($field_map[$entity_type_id][$field_name]['bundles']);
+            }
+          }
+
+          $entity = $this->entityManager
+            ->getStorage($entity_type_id)
+            ->create($values);
+          if ($entity->getFieldDefinition($field_name)) {
+            $propertyDefinitions = $entity->getFieldDefinition($field_name)->getPropertyDefinitions();
+          }
+        }
+        else {
+          $propertyDefinitions = array();
+        }
         if ($key < $count) {
           $next = $specifiers[$key + 1];
           // Is this a field column?
@@ -143,7 +169,6 @@ public function addField($field, $type, $langcode) {
           // also use the property definitions for column.
           if ($key < $count) {
             $relationship_specifier = $specifiers[$key + 1];
-            $propertyDefinitions = $field->getPropertyDefinitions();
 
             // Prepare the next index prefix.
             $next_index_prefix = "$relationship_specifier.$column";
@@ -151,6 +176,9 @@ public function addField($field, $type, $langcode) {
         }
         $table = $this->ensureFieldTable($index_prefix, $field, $type, $langcode, $base_table, $entity_id_field, $field_id_field);
         $sql_column = ContentEntityDatabaseStorage::_fieldColumnName($field, $column);
+        if (isset($propertyDefinitions[$column])) {
+          $field_definition['case sensitive'] = $propertyDefinitions[$column]->getSetting('case_sensitive');
+        }
       }
       // This is an entity base field (non-configurable field).
       else {
@@ -166,7 +194,7 @@ public function addField($field, $type, $langcode) {
         $entity_base_table = $entity_type->getBaseTable();
         $entity_tables[$entity_base_table] = $this->getTableMapping($entity_base_table, $entity_type_id);
         $sql_column = $specifier;
-        $table = $this->ensureEntityTable($index_prefix, $specifier, $type, $langcode, $base_table, $entity_id_field, $entity_tables);
+        $table = $this->ensureEntityTable($index_prefix, $specifier, $type, $langcode, $base_table, $entity_id_field, $entity_tables, $field_definition);
       }
       // If there are more specifiers to come, it's a relationship.
       if ($field && $key < $count) {
@@ -205,9 +233,10 @@ public function addField($field, $type, $langcode) {
    * @return string
    * @throws \Drupal\Core\Entity\Query\QueryException
    */
-  protected function ensureEntityTable($index_prefix, $property, $type, $langcode, $base_table, $id_field, $entity_tables) {
+  protected function ensureEntityTable($index_prefix, $property, $type, $langcode, $base_table, $id_field, $entity_tables, $field_definition) {
     foreach ($entity_tables as $table => $mapping) {
       if (isset($mapping[$property])) {
+        $field_definition['case sensitive'] = !empty($schema['fields'][$property]['binary']);
         if (!isset($this->entityTables[$index_prefix . $table])) {
           $this->entityTables[$index_prefix . $table] = $this->addJoin($type, $table, "%alias.$id_field = $base_table.$id_field", $langcode);
         }
diff --git a/core/lib/Drupal/Core/Entity/Query/Sql/TablesInterface.php b/core/lib/Drupal/Core/Entity/Query/Sql/TablesInterface.php
index 50e5655..c6f0108 100644
--- a/core/lib/Drupal/Core/Entity/Query/Sql/TablesInterface.php
+++ b/core/lib/Drupal/Core/Entity/Query/Sql/TablesInterface.php
@@ -15,13 +15,14 @@
   /**
    * Adds a field to a database query.
    *
-   * @param string $field
-   *   If it contains a dot, then field name dot field column. If it doesn't
-   *   then entity property name.
+   * @param array $field_definition
+   *   An array with two keys:
+   *   - field: If it contains a dot, then field name dot field column. If it
+   *    doesn't then entity property name. The function will set the binary
+   *    key in the array to TRUE if the field is a binary field.
+   *   - langcode: The language code the field values are to be shown in.
    * @param string $type
    *   Join type, can either be INNER or LEFT.
-   * @param $langcode
-   *   The language code the field values are to be shown in.
    *
    * @throws \Drupal\Core\Entity\Query\QueryException
    *   If $field specifies an invalid relationship.
@@ -31,6 +32,6 @@
    *   and the appropriate SQL column as passed in. This allows the direct use
    *   of this in a query for a condition or sort.
    */
-  public function addField($field, $type, $langcode);
+  public function addField(&$field_definition, $type);
 
 }
diff --git a/core/modules/file/src/Entity/File.php b/core/modules/file/src/Entity/File.php
index b7dc347..d1a4ad1 100644
--- a/core/modules/file/src/Entity/File.php
+++ b/core/modules/file/src/Entity/File.php
@@ -249,7 +249,8 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
 
     $fields['uri'] = FieldDefinition::create('uri')
       ->setLabel(t('URI'))
-      ->setDescription(t('The URI to access the file (either local or remote).'));
+      ->setDescription(t('The URI to access the file (either local or remote).'))
+      ->setSetting('case_sensitive', TRUE);
 
     $fields['filemime'] = FieldDefinition::create('string')
       ->setLabel(t('File MIME type'))
diff --git a/core/modules/system/src/Tests/Entity/EntityQueryAggregateTest.php b/core/modules/system/src/Tests/Entity/EntityQueryAggregateTest.php
index 6ea5549..27dc7e6 100644
--- a/core/modules/system/src/Tests/Entity/EntityQueryAggregateTest.php
+++ b/core/modules/system/src/Tests/Entity/EntityQueryAggregateTest.php
@@ -52,7 +52,7 @@ public static function getInfo() {
   public function setUp() {
     parent::setUp();
 
-    $this->entityStorage = $this->container->get('entity.manager')->getStorage('entity_test');
+    $this->entityStorage = $this->entityManager->getStorage('entity_test');
     $this->factory = $this->container->get('entity.query');
 
     // Add some fieldapi fields to be used in the test.
diff --git a/core/modules/text/src/Plugin/Field/FieldType/TextItem.php b/core/modules/text/src/Plugin/Field/FieldType/TextItem.php
index b2ba0a1..615e035 100644
--- a/core/modules/text/src/Plugin/Field/FieldType/TextItem.php
+++ b/core/modules/text/src/Plugin/Field/FieldType/TextItem.php
@@ -15,7 +15,14 @@
  * @FieldType(
  *   id = "text",
  *   label = @Translation("Text"),
- *   description = @Translation("This field stores varchar text in the database."),
+ *   description = @Translation("This field stores varchar/varbinary text in the database."),
+ *   settings = {
+ *     "max_length" = "255",
+ *     "case_sensitive" = "0"
+ *   },
+ *   instance_settings = {
+ *     "text_processing" = "0"
+ *   },
  *   default_widget = "text_textfield",
  *   default_formatter = "text_default"
  * )
@@ -41,6 +48,7 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
           'type' => 'varchar',
           'length' => $field_definition->getSetting('max_length'),
           'not null' => FALSE,
+          'binary' => $field_definition->getSetting('case_sensitive'),
         ),
         'format' => array(
           'type' => 'varchar',
@@ -90,6 +98,7 @@ public function settingsForm(array $form, array &$form_state, $has_data) {
       '#min' => 1,
       '#disabled' => $has_data,
     );
+    $element += parent::settingsForm($form, $form_state, $has_data);
 
     return $element;
   }
diff --git a/core/modules/text/src/Plugin/Field/FieldType/TextLongItem.php b/core/modules/text/src/Plugin/Field/FieldType/TextLongItem.php
index 367ae19..e76fa7f 100644
--- a/core/modules/text/src/Plugin/Field/FieldType/TextLongItem.php
+++ b/core/modules/text/src/Plugin/Field/FieldType/TextLongItem.php
@@ -16,6 +16,12 @@
  *   id = "text_long",
  *   label = @Translation("Long text"),
  *   description = @Translation("This field stores long text in the database."),
+ *   settings = {
+ *     "case_sensitive" = "0"
+ *   },
+ *   instance_settings = {
+ *     "text_processing" = "0"
+ *   },
  *   default_widget = "text_textarea",
  *   default_formatter = "text_default"
  * )
@@ -29,7 +35,7 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
     return array(
       'columns' => array(
         'value' => array(
-          'type' => 'text',
+          'type' => $field_definition->getSetting('case_sensitive') ? 'blob' : 'text',
           'size' => 'big',
           'not null' => FALSE,
         ),
diff --git a/core/modules/text/src/Plugin/Field/FieldType/TextWithSummaryItem.php b/core/modules/text/src/Plugin/Field/FieldType/TextWithSummaryItem.php
index 0d686e0..124dc72 100644
--- a/core/modules/text/src/Plugin/Field/FieldType/TextWithSummaryItem.php
+++ b/core/modules/text/src/Plugin/Field/FieldType/TextWithSummaryItem.php
@@ -17,6 +17,13 @@
  *   id = "text_with_summary",
  *   label = @Translation("Long text and summary"),
  *   description = @Translation("This field stores long text in the database along with optional summary text."),
+ *   settings = {
+ *     "case_sensitive" = "0"
+ *   },
+ *   instance_settings = {
+ *     "text_processing" = "1",
+ *     "display_summary" = "0"
+ *   },
  *   default_widget = "text_textarea_with_summary",
  *   default_formatter = "text_default"
  * )
@@ -59,12 +66,12 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
     return array(
       'columns' => array(
         'value' => array(
-          'type' => 'text',
+          'type' => $field_definition->getSetting('case_sensitive') ? 'blob' : 'text',
           'size' => 'big',
           'not null' => FALSE,
         ),
         'summary' => array(
-          'type' => 'text',
+          'type' => $field_definition->getSetting('case_sensitive') ? 'blob' : 'text',
           'size' => 'big',
           'not null' => FALSE,
         ),
diff --git a/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Session/Storage/Proxy/AbstractProxy.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Session/Storage/Proxy/AbstractProxy.php
index ee6eb89..abcf9fe 100644
--- a/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Session/Storage/Proxy/AbstractProxy.php
+++ b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Session/Storage/Proxy/AbstractProxy.php
@@ -120,7 +120,7 @@ public function getId()
     public function setId($id)
     {
         if ($this->isActive()) {
-            throw new \LogicException('Cannot change the ID of an active session');
+            //throw new \LogicException('Cannot change the ID of an active session');
         }
 
         session_id($id);
diff --git a/sites/example.settings.local.php b/sites/example.settings.local.php
old mode 100644
new mode 100755
