{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Glue.Types.ColumnStatisticsData
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Glue.Types.ColumnStatisticsData where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Glue.Types.BinaryColumnStatisticsData
import Amazonka.Glue.Types.BooleanColumnStatisticsData
import Amazonka.Glue.Types.ColumnStatisticsType
import Amazonka.Glue.Types.DateColumnStatisticsData
import Amazonka.Glue.Types.DecimalColumnStatisticsData
import Amazonka.Glue.Types.DoubleColumnStatisticsData
import Amazonka.Glue.Types.LongColumnStatisticsData
import Amazonka.Glue.Types.StringColumnStatisticsData
import qualified Amazonka.Prelude as Prelude

-- | Contains the individual types of column statistics data. Only one data
-- object should be set and indicated by the @Type@ attribute.
--
-- /See:/ 'newColumnStatisticsData' smart constructor.
data ColumnStatisticsData = ColumnStatisticsData'
  { -- | Binary column statistics data.
    ColumnStatisticsData -> Maybe BinaryColumnStatisticsData
binaryColumnStatisticsData :: Prelude.Maybe BinaryColumnStatisticsData,
    -- | Boolean column statistics data.
    ColumnStatisticsData -> Maybe BooleanColumnStatisticsData
booleanColumnStatisticsData :: Prelude.Maybe BooleanColumnStatisticsData,
    -- | Date column statistics data.
    ColumnStatisticsData -> Maybe DateColumnStatisticsData
dateColumnStatisticsData :: Prelude.Maybe DateColumnStatisticsData,
    -- | Decimal column statistics data.
    ColumnStatisticsData -> Maybe DecimalColumnStatisticsData
decimalColumnStatisticsData :: Prelude.Maybe DecimalColumnStatisticsData,
    -- | Double column statistics data.
    ColumnStatisticsData -> Maybe DoubleColumnStatisticsData
doubleColumnStatisticsData :: Prelude.Maybe DoubleColumnStatisticsData,
    -- | Long column statistics data.
    ColumnStatisticsData -> Maybe LongColumnStatisticsData
longColumnStatisticsData :: Prelude.Maybe LongColumnStatisticsData,
    -- | String column statistics data.
    ColumnStatisticsData -> Maybe StringColumnStatisticsData
stringColumnStatisticsData :: Prelude.Maybe StringColumnStatisticsData,
    -- | The type of column statistics data.
    ColumnStatisticsData -> ColumnStatisticsType
type' :: ColumnStatisticsType
  }
  deriving (ColumnStatisticsData -> ColumnStatisticsData -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ColumnStatisticsData -> ColumnStatisticsData -> Bool
$c/= :: ColumnStatisticsData -> ColumnStatisticsData -> Bool
== :: ColumnStatisticsData -> ColumnStatisticsData -> Bool
$c== :: ColumnStatisticsData -> ColumnStatisticsData -> Bool
Prelude.Eq, ReadPrec [ColumnStatisticsData]
ReadPrec ColumnStatisticsData
Int -> ReadS ColumnStatisticsData
ReadS [ColumnStatisticsData]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ColumnStatisticsData]
$creadListPrec :: ReadPrec [ColumnStatisticsData]
readPrec :: ReadPrec ColumnStatisticsData
$creadPrec :: ReadPrec ColumnStatisticsData
readList :: ReadS [ColumnStatisticsData]
$creadList :: ReadS [ColumnStatisticsData]
readsPrec :: Int -> ReadS ColumnStatisticsData
$creadsPrec :: Int -> ReadS ColumnStatisticsData
Prelude.Read, Int -> ColumnStatisticsData -> ShowS
[ColumnStatisticsData] -> ShowS
ColumnStatisticsData -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ColumnStatisticsData] -> ShowS
$cshowList :: [ColumnStatisticsData] -> ShowS
show :: ColumnStatisticsData -> String
$cshow :: ColumnStatisticsData -> String
showsPrec :: Int -> ColumnStatisticsData -> ShowS
$cshowsPrec :: Int -> ColumnStatisticsData -> ShowS
Prelude.Show, forall x. Rep ColumnStatisticsData x -> ColumnStatisticsData
forall x. ColumnStatisticsData -> Rep ColumnStatisticsData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ColumnStatisticsData x -> ColumnStatisticsData
$cfrom :: forall x. ColumnStatisticsData -> Rep ColumnStatisticsData x
Prelude.Generic)

-- |
-- Create a value of 'ColumnStatisticsData' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'binaryColumnStatisticsData', 'columnStatisticsData_binaryColumnStatisticsData' - Binary column statistics data.
--
-- 'booleanColumnStatisticsData', 'columnStatisticsData_booleanColumnStatisticsData' - Boolean column statistics data.
--
-- 'dateColumnStatisticsData', 'columnStatisticsData_dateColumnStatisticsData' - Date column statistics data.
--
-- 'decimalColumnStatisticsData', 'columnStatisticsData_decimalColumnStatisticsData' - Decimal column statistics data.
--
-- 'doubleColumnStatisticsData', 'columnStatisticsData_doubleColumnStatisticsData' - Double column statistics data.
--
-- 'longColumnStatisticsData', 'columnStatisticsData_longColumnStatisticsData' - Long column statistics data.
--
-- 'stringColumnStatisticsData', 'columnStatisticsData_stringColumnStatisticsData' - String column statistics data.
--
-- 'type'', 'columnStatisticsData_type' - The type of column statistics data.
newColumnStatisticsData ::
  -- | 'type''
  ColumnStatisticsType ->
  ColumnStatisticsData
newColumnStatisticsData :: ColumnStatisticsType -> ColumnStatisticsData
newColumnStatisticsData ColumnStatisticsType
pType_ =
  ColumnStatisticsData'
    { $sel:binaryColumnStatisticsData:ColumnStatisticsData' :: Maybe BinaryColumnStatisticsData
binaryColumnStatisticsData =
        forall a. Maybe a
Prelude.Nothing,
      $sel:booleanColumnStatisticsData:ColumnStatisticsData' :: Maybe BooleanColumnStatisticsData
booleanColumnStatisticsData = forall a. Maybe a
Prelude.Nothing,
      $sel:dateColumnStatisticsData:ColumnStatisticsData' :: Maybe DateColumnStatisticsData
dateColumnStatisticsData = forall a. Maybe a
Prelude.Nothing,
      $sel:decimalColumnStatisticsData:ColumnStatisticsData' :: Maybe DecimalColumnStatisticsData
decimalColumnStatisticsData = forall a. Maybe a
Prelude.Nothing,
      $sel:doubleColumnStatisticsData:ColumnStatisticsData' :: Maybe DoubleColumnStatisticsData
doubleColumnStatisticsData = forall a. Maybe a
Prelude.Nothing,
      $sel:longColumnStatisticsData:ColumnStatisticsData' :: Maybe LongColumnStatisticsData
longColumnStatisticsData = forall a. Maybe a
Prelude.Nothing,
      $sel:stringColumnStatisticsData:ColumnStatisticsData' :: Maybe StringColumnStatisticsData
stringColumnStatisticsData = forall a. Maybe a
Prelude.Nothing,
      $sel:type':ColumnStatisticsData' :: ColumnStatisticsType
type' = ColumnStatisticsType
pType_
    }

-- | Binary column statistics data.
columnStatisticsData_binaryColumnStatisticsData :: Lens.Lens' ColumnStatisticsData (Prelude.Maybe BinaryColumnStatisticsData)
columnStatisticsData_binaryColumnStatisticsData :: Lens' ColumnStatisticsData (Maybe BinaryColumnStatisticsData)
columnStatisticsData_binaryColumnStatisticsData = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ColumnStatisticsData' {Maybe BinaryColumnStatisticsData
binaryColumnStatisticsData :: Maybe BinaryColumnStatisticsData
$sel:binaryColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe BinaryColumnStatisticsData
binaryColumnStatisticsData} -> Maybe BinaryColumnStatisticsData
binaryColumnStatisticsData) (\s :: ColumnStatisticsData
s@ColumnStatisticsData' {} Maybe BinaryColumnStatisticsData
a -> ColumnStatisticsData
s {$sel:binaryColumnStatisticsData:ColumnStatisticsData' :: Maybe BinaryColumnStatisticsData
binaryColumnStatisticsData = Maybe BinaryColumnStatisticsData
a} :: ColumnStatisticsData)

-- | Boolean column statistics data.
columnStatisticsData_booleanColumnStatisticsData :: Lens.Lens' ColumnStatisticsData (Prelude.Maybe BooleanColumnStatisticsData)
columnStatisticsData_booleanColumnStatisticsData :: Lens' ColumnStatisticsData (Maybe BooleanColumnStatisticsData)
columnStatisticsData_booleanColumnStatisticsData = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ColumnStatisticsData' {Maybe BooleanColumnStatisticsData
booleanColumnStatisticsData :: Maybe BooleanColumnStatisticsData
$sel:booleanColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe BooleanColumnStatisticsData
booleanColumnStatisticsData} -> Maybe BooleanColumnStatisticsData
booleanColumnStatisticsData) (\s :: ColumnStatisticsData
s@ColumnStatisticsData' {} Maybe BooleanColumnStatisticsData
a -> ColumnStatisticsData
s {$sel:booleanColumnStatisticsData:ColumnStatisticsData' :: Maybe BooleanColumnStatisticsData
booleanColumnStatisticsData = Maybe BooleanColumnStatisticsData
a} :: ColumnStatisticsData)

-- | Date column statistics data.
columnStatisticsData_dateColumnStatisticsData :: Lens.Lens' ColumnStatisticsData (Prelude.Maybe DateColumnStatisticsData)
columnStatisticsData_dateColumnStatisticsData :: Lens' ColumnStatisticsData (Maybe DateColumnStatisticsData)
columnStatisticsData_dateColumnStatisticsData = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ColumnStatisticsData' {Maybe DateColumnStatisticsData
dateColumnStatisticsData :: Maybe DateColumnStatisticsData
$sel:dateColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe DateColumnStatisticsData
dateColumnStatisticsData} -> Maybe DateColumnStatisticsData
dateColumnStatisticsData) (\s :: ColumnStatisticsData
s@ColumnStatisticsData' {} Maybe DateColumnStatisticsData
a -> ColumnStatisticsData
s {$sel:dateColumnStatisticsData:ColumnStatisticsData' :: Maybe DateColumnStatisticsData
dateColumnStatisticsData = Maybe DateColumnStatisticsData
a} :: ColumnStatisticsData)

-- | Decimal column statistics data.
columnStatisticsData_decimalColumnStatisticsData :: Lens.Lens' ColumnStatisticsData (Prelude.Maybe DecimalColumnStatisticsData)
columnStatisticsData_decimalColumnStatisticsData :: Lens' ColumnStatisticsData (Maybe DecimalColumnStatisticsData)
columnStatisticsData_decimalColumnStatisticsData = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ColumnStatisticsData' {Maybe DecimalColumnStatisticsData
decimalColumnStatisticsData :: Maybe DecimalColumnStatisticsData
$sel:decimalColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe DecimalColumnStatisticsData
decimalColumnStatisticsData} -> Maybe DecimalColumnStatisticsData
decimalColumnStatisticsData) (\s :: ColumnStatisticsData
s@ColumnStatisticsData' {} Maybe DecimalColumnStatisticsData
a -> ColumnStatisticsData
s {$sel:decimalColumnStatisticsData:ColumnStatisticsData' :: Maybe DecimalColumnStatisticsData
decimalColumnStatisticsData = Maybe DecimalColumnStatisticsData
a} :: ColumnStatisticsData)

-- | Double column statistics data.
columnStatisticsData_doubleColumnStatisticsData :: Lens.Lens' ColumnStatisticsData (Prelude.Maybe DoubleColumnStatisticsData)
columnStatisticsData_doubleColumnStatisticsData :: Lens' ColumnStatisticsData (Maybe DoubleColumnStatisticsData)
columnStatisticsData_doubleColumnStatisticsData = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ColumnStatisticsData' {Maybe DoubleColumnStatisticsData
doubleColumnStatisticsData :: Maybe DoubleColumnStatisticsData
$sel:doubleColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe DoubleColumnStatisticsData
doubleColumnStatisticsData} -> Maybe DoubleColumnStatisticsData
doubleColumnStatisticsData) (\s :: ColumnStatisticsData
s@ColumnStatisticsData' {} Maybe DoubleColumnStatisticsData
a -> ColumnStatisticsData
s {$sel:doubleColumnStatisticsData:ColumnStatisticsData' :: Maybe DoubleColumnStatisticsData
doubleColumnStatisticsData = Maybe DoubleColumnStatisticsData
a} :: ColumnStatisticsData)

-- | Long column statistics data.
columnStatisticsData_longColumnStatisticsData :: Lens.Lens' ColumnStatisticsData (Prelude.Maybe LongColumnStatisticsData)
columnStatisticsData_longColumnStatisticsData :: Lens' ColumnStatisticsData (Maybe LongColumnStatisticsData)
columnStatisticsData_longColumnStatisticsData = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ColumnStatisticsData' {Maybe LongColumnStatisticsData
longColumnStatisticsData :: Maybe LongColumnStatisticsData
$sel:longColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe LongColumnStatisticsData
longColumnStatisticsData} -> Maybe LongColumnStatisticsData
longColumnStatisticsData) (\s :: ColumnStatisticsData
s@ColumnStatisticsData' {} Maybe LongColumnStatisticsData
a -> ColumnStatisticsData
s {$sel:longColumnStatisticsData:ColumnStatisticsData' :: Maybe LongColumnStatisticsData
longColumnStatisticsData = Maybe LongColumnStatisticsData
a} :: ColumnStatisticsData)

-- | String column statistics data.
columnStatisticsData_stringColumnStatisticsData :: Lens.Lens' ColumnStatisticsData (Prelude.Maybe StringColumnStatisticsData)
columnStatisticsData_stringColumnStatisticsData :: Lens' ColumnStatisticsData (Maybe StringColumnStatisticsData)
columnStatisticsData_stringColumnStatisticsData = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ColumnStatisticsData' {Maybe StringColumnStatisticsData
stringColumnStatisticsData :: Maybe StringColumnStatisticsData
$sel:stringColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe StringColumnStatisticsData
stringColumnStatisticsData} -> Maybe StringColumnStatisticsData
stringColumnStatisticsData) (\s :: ColumnStatisticsData
s@ColumnStatisticsData' {} Maybe StringColumnStatisticsData
a -> ColumnStatisticsData
s {$sel:stringColumnStatisticsData:ColumnStatisticsData' :: Maybe StringColumnStatisticsData
stringColumnStatisticsData = Maybe StringColumnStatisticsData
a} :: ColumnStatisticsData)

-- | The type of column statistics data.
columnStatisticsData_type :: Lens.Lens' ColumnStatisticsData ColumnStatisticsType
columnStatisticsData_type :: Lens' ColumnStatisticsData ColumnStatisticsType
columnStatisticsData_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ColumnStatisticsData' {ColumnStatisticsType
type' :: ColumnStatisticsType
$sel:type':ColumnStatisticsData' :: ColumnStatisticsData -> ColumnStatisticsType
type'} -> ColumnStatisticsType
type') (\s :: ColumnStatisticsData
s@ColumnStatisticsData' {} ColumnStatisticsType
a -> ColumnStatisticsData
s {$sel:type':ColumnStatisticsData' :: ColumnStatisticsType
type' = ColumnStatisticsType
a} :: ColumnStatisticsData)

instance Data.FromJSON ColumnStatisticsData where
  parseJSON :: Value -> Parser ColumnStatisticsData
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"ColumnStatisticsData"
      ( \Object
x ->
          Maybe BinaryColumnStatisticsData
-> Maybe BooleanColumnStatisticsData
-> Maybe DateColumnStatisticsData
-> Maybe DecimalColumnStatisticsData
-> Maybe DoubleColumnStatisticsData
-> Maybe LongColumnStatisticsData
-> Maybe StringColumnStatisticsData
-> ColumnStatisticsType
-> ColumnStatisticsData
ColumnStatisticsData'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"BinaryColumnStatisticsData")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"BooleanColumnStatisticsData")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DateColumnStatisticsData")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DecimalColumnStatisticsData")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DoubleColumnStatisticsData")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"LongColumnStatisticsData")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"StringColumnStatisticsData")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"Type")
      )

instance Prelude.Hashable ColumnStatisticsData where
  hashWithSalt :: Int -> ColumnStatisticsData -> Int
hashWithSalt Int
_salt ColumnStatisticsData' {Maybe BinaryColumnStatisticsData
Maybe BooleanColumnStatisticsData
Maybe DateColumnStatisticsData
Maybe DecimalColumnStatisticsData
Maybe DoubleColumnStatisticsData
Maybe LongColumnStatisticsData
Maybe StringColumnStatisticsData
ColumnStatisticsType
type' :: ColumnStatisticsType
stringColumnStatisticsData :: Maybe StringColumnStatisticsData
longColumnStatisticsData :: Maybe LongColumnStatisticsData
doubleColumnStatisticsData :: Maybe DoubleColumnStatisticsData
decimalColumnStatisticsData :: Maybe DecimalColumnStatisticsData
dateColumnStatisticsData :: Maybe DateColumnStatisticsData
booleanColumnStatisticsData :: Maybe BooleanColumnStatisticsData
binaryColumnStatisticsData :: Maybe BinaryColumnStatisticsData
$sel:type':ColumnStatisticsData' :: ColumnStatisticsData -> ColumnStatisticsType
$sel:stringColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe StringColumnStatisticsData
$sel:longColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe LongColumnStatisticsData
$sel:doubleColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe DoubleColumnStatisticsData
$sel:decimalColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe DecimalColumnStatisticsData
$sel:dateColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe DateColumnStatisticsData
$sel:booleanColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe BooleanColumnStatisticsData
$sel:binaryColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe BinaryColumnStatisticsData
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BinaryColumnStatisticsData
binaryColumnStatisticsData
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BooleanColumnStatisticsData
booleanColumnStatisticsData
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DateColumnStatisticsData
dateColumnStatisticsData
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DecimalColumnStatisticsData
decimalColumnStatisticsData
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DoubleColumnStatisticsData
doubleColumnStatisticsData
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LongColumnStatisticsData
longColumnStatisticsData
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe StringColumnStatisticsData
stringColumnStatisticsData
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ColumnStatisticsType
type'

instance Prelude.NFData ColumnStatisticsData where
  rnf :: ColumnStatisticsData -> ()
rnf ColumnStatisticsData' {Maybe BinaryColumnStatisticsData
Maybe BooleanColumnStatisticsData
Maybe DateColumnStatisticsData
Maybe DecimalColumnStatisticsData
Maybe DoubleColumnStatisticsData
Maybe LongColumnStatisticsData
Maybe StringColumnStatisticsData
ColumnStatisticsType
type' :: ColumnStatisticsType
stringColumnStatisticsData :: Maybe StringColumnStatisticsData
longColumnStatisticsData :: Maybe LongColumnStatisticsData
doubleColumnStatisticsData :: Maybe DoubleColumnStatisticsData
decimalColumnStatisticsData :: Maybe DecimalColumnStatisticsData
dateColumnStatisticsData :: Maybe DateColumnStatisticsData
booleanColumnStatisticsData :: Maybe BooleanColumnStatisticsData
binaryColumnStatisticsData :: Maybe BinaryColumnStatisticsData
$sel:type':ColumnStatisticsData' :: ColumnStatisticsData -> ColumnStatisticsType
$sel:stringColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe StringColumnStatisticsData
$sel:longColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe LongColumnStatisticsData
$sel:doubleColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe DoubleColumnStatisticsData
$sel:decimalColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe DecimalColumnStatisticsData
$sel:dateColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe DateColumnStatisticsData
$sel:booleanColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe BooleanColumnStatisticsData
$sel:binaryColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe BinaryColumnStatisticsData
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe BinaryColumnStatisticsData
binaryColumnStatisticsData
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BooleanColumnStatisticsData
booleanColumnStatisticsData
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DateColumnStatisticsData
dateColumnStatisticsData
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DecimalColumnStatisticsData
decimalColumnStatisticsData
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DoubleColumnStatisticsData
doubleColumnStatisticsData
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LongColumnStatisticsData
longColumnStatisticsData
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe StringColumnStatisticsData
stringColumnStatisticsData
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ColumnStatisticsType
type'

instance Data.ToJSON ColumnStatisticsData where
  toJSON :: ColumnStatisticsData -> Value
toJSON ColumnStatisticsData' {Maybe BinaryColumnStatisticsData
Maybe BooleanColumnStatisticsData
Maybe DateColumnStatisticsData
Maybe DecimalColumnStatisticsData
Maybe DoubleColumnStatisticsData
Maybe LongColumnStatisticsData
Maybe StringColumnStatisticsData
ColumnStatisticsType
type' :: ColumnStatisticsType
stringColumnStatisticsData :: Maybe StringColumnStatisticsData
longColumnStatisticsData :: Maybe LongColumnStatisticsData
doubleColumnStatisticsData :: Maybe DoubleColumnStatisticsData
decimalColumnStatisticsData :: Maybe DecimalColumnStatisticsData
dateColumnStatisticsData :: Maybe DateColumnStatisticsData
booleanColumnStatisticsData :: Maybe BooleanColumnStatisticsData
binaryColumnStatisticsData :: Maybe BinaryColumnStatisticsData
$sel:type':ColumnStatisticsData' :: ColumnStatisticsData -> ColumnStatisticsType
$sel:stringColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe StringColumnStatisticsData
$sel:longColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe LongColumnStatisticsData
$sel:doubleColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe DoubleColumnStatisticsData
$sel:decimalColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe DecimalColumnStatisticsData
$sel:dateColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe DateColumnStatisticsData
$sel:booleanColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe BooleanColumnStatisticsData
$sel:binaryColumnStatisticsData:ColumnStatisticsData' :: ColumnStatisticsData -> Maybe BinaryColumnStatisticsData
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"BinaryColumnStatisticsData" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BinaryColumnStatisticsData
binaryColumnStatisticsData,
            (Key
"BooleanColumnStatisticsData" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BooleanColumnStatisticsData
booleanColumnStatisticsData,
            (Key
"DateColumnStatisticsData" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DateColumnStatisticsData
dateColumnStatisticsData,
            (Key
"DecimalColumnStatisticsData" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DecimalColumnStatisticsData
decimalColumnStatisticsData,
            (Key
"DoubleColumnStatisticsData" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DoubleColumnStatisticsData
doubleColumnStatisticsData,
            (Key
"LongColumnStatisticsData" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe LongColumnStatisticsData
longColumnStatisticsData,
            (Key
"StringColumnStatisticsData" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe StringColumnStatisticsData
stringColumnStatisticsData,
            forall a. a -> Maybe a
Prelude.Just (Key
"Type" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= ColumnStatisticsType
type')
          ]
      )